21 November, 2019
Years ago, I read a theory that, when developing new products, it’s the third version that’s really the first "good" version. The examples cited were Windows 3, GitHub’s v3 API, and Basecamp 3. Try as I might, I can’t find the article this idea came from, so I’m writing up my take on it here in the hope that someone who reads it can point me to the source. Message me on Twitter (@relativesanity) if you can shed any light.
Version 1 is the result of your idea being shipped before you’ve figured out how it’s going to work in production. It’s feature complete–according to your vision, at least–but perhaps you haven’t yet figured out how it will scale, or anticipated the sorts of issues which are going to cause your users real problems when using the product in the real world.
Often, this is because Version 1 relies on some new enabling technology. New technologies have a steep (and changeable!) learning curve. They also have a habit of being wildly unstable. Shipping Version 1 is the start of your education in all the gaps in this technology. Be ready for a lot of adaptation, not to mention a lot of patching.
Assuming the product survives, Version 2 is the result of all the technical learning from Version 1. You’ve redesigned some bits so they don’t fall apart under heavy usage, or maybe that new enabling technology is getting more stable and reliable. Maybe your efforts and contributions even helped make it more stable and reliable!
Version 2 is really the Version 1 you had in mind when you started this crazy journey. The vision is still mostly the same, you’ve still shipped essentially the same thing, but it’s now battle tested and ready to go to more and more users. You understand the processes and tools you’re working with, and the technical challenges are more tractable.
For many of the users of Version 1, Version 2 will always be their favourite.
The new challenge: now, most of your users never used Version 1, and they have ideas for Version 3.
See, if Versions 1 and 2 had any sort of success, it’s because they demonstrated that there was a problem to be solved, and then provided users with your vision of the solution.
Over the course of using Version 1, those early adopters were giving you feedback about all the things that were just plain broken. Technical feedback. Version 2 is where you start to get real user feedback. Version 2 is stable enough that you’ve now got loads of people who have been educated on what the job to be done is, and are now thinking about how it could be done better. They're forming their visions too.
This is where Version 3 is born. Now that you’ve mastered the technical aspects of things, Version 3 can focus on better solving the problems of your users. Often, this can result in a grand rewrite or pivot: you realise you identified the right job to be done, but not the best way to do it.
If the stars align, your technical expertise and learning from Versions 1 and 2 mean that Version 3 can almost be a brand new product, but not result in a reset to Version 1’s level of technical challenge.
Version 3 is where technology meets user need for the first time, and while it may be radically different from your initial designs, it’s likely way closer to achieving your vision. In many ways, Version 3 is the real first version of your product, the one most people will point at as the first "good" one.