Prototyping CIFv4: Epilog

18 months ago I described the origins of CIFv4. I described how rapid prototyping, solving real problems and releasing code gets you an incredible amount of feedback. With the general release of CIFv4, I'm circling back around to those early days and thinking, wow.. I started the repo in 2016 and "the dot 0" release is late 2019. You can see the future and you chip away at it- one weekend [a month] at a time. 

This can be discouraging at times, but if you take a step back to view the forest, a pattern emerges; each release lands YOU in a different (and better) place than the previous. Not because it was better adopted, rather each release teaches valuable lessons in terms of building software, release management and PATIENCE.. LOTS AND LOTS OF PATIENCE. Sometimes you can see the future- often times you have to wait for everyone else, and in some cases, you're just really wrong. The kicker, you won't know until years later when you look back.

Some of the numbers:

  • CIFv1 (aka: i wasn't into code names at the time)

    • ~1200 hours or 30 work weeks)

    • developed over a 3 year time period

  • CIFv2 (aka: massive-octo-spice)

    • ~7700 hours or 192 work weeks)

    • developed over a 4 year time period

  • CIFv3 (aka: bearded-avenger)

    •  ~1100 hours (or ~27 work weeks)

    • developed over a 4 year time period

  • CIFv4 (aka: verbose-robot)

    •  ~285 hours (or ~7 work weeks) 

    • developed over a 1.5 year time period

I've already invested some cycles into what *might* be CIFv5 (or something else- I haven't decided yet). It's not open source at the moment, but it's been running quite stable and running in the background for a few weeks now. The numbers continue to follow the general trend of "less time, more functionality" because- I'm learning from mistakes, re-using tools already built for specific tasks, getting feedback, etc…

As you focus on prototyping and releasing, the next version becomes more stable and easier to develop future ideas on as a platform. Projects always take time- especially when they're open-source. The difference is in where you land *because* of them, not in spite of them. I can completely empathize with multi year projects that take herculean efforts to get out the door.

If you're working on a project, any project, you should be thinking "how do I release a skateboard first" even when your goal is a spaceship that travels through time. You'll not only develop a unique set of skills, you'll gain invaluable feedback to both your project and more importantly YOUR PROCESS along the way.

Screen Shot 2019-09-21 at 8.38.10 AM.png

The process you learn will be more important than the release itself. Code releases are stale the moment you tag them, if you're not already working on the next version, you're probably doing it wrong.

(CIFv4 is complete- here’s to the next skateboard!)



Did you learn something new?