Let’s say you manage a development team that has a few developers, a few testers, and a handful of Program Managers. You’ve already laid out a “vision” for a product you plan to build, and most everyone privy to the plan seems to think the idea is solid enough to be valuable and maybe even successful. You’ve got a stable environment and funding for the time being. You start laying out the development plans based on the rough “specs” you have laid out. Of course it is still early so the specs lack detail, but you can at least estimate the work at the level of developer-month (what one developer can do in a month, including bug fixing). So you do some rough calculations and determine that it will take about 8 years of solid development to deliver on your “vision”, taking into account stability work, bug fixing, and of course a whole lot of features. Of course, long before you figure out that it takes “exactly” 8 years you stop bothering and start thinking about what to do in the shorter term.
Ok, so producing a new product at that timescale is clearly not practical. Your funding will dry up, or the market will move on and leave your product obsolete long before you ship it. Maybe you could put more people on it. But then you run into one of the rules of thumb of software, which is that more people make things go slower, not faster. Yes, more code is written quickly, but that is actually the problem. (it is sort of like asking 6 people to write a novel in 2 months rather than having a single author do it in a year – not particularly effective)
You determine you really need to get into the market in about 2-3 years. You now have some options. You could build a foundation for the 8-year product vision – a skeleton framework that is not fleshed out. That would be like shipping what you have after 2 years of the 8 year project. But customers rarely find houses with foundation and framing but no walls to be worth paying for, even if it is the frame for a mansion.
Another option would be to build a room at a time. Of course you have a plan for the whole house, but for starters, you’ll build a complete dwelling which is just the entranceway and the living room. You’re careful to finish it out nicely so it is livable, and even throw in a fireplace along with a nice TV and a sofa. Now you have a nice little chalet which people will pay money for. Some will even say it is just right. But most will say “I love it, but I want more – a kitchen, bathroom and bedroom would be great.” Someone else says they also want a garage and a play room. Someone else says they’d like an office. But importantly, many people are pleased with the chalet, and recommend it to their friends, even though they often add that they’d really like it to be more of a condo or a mansion. After the chalet is open for business, you get to work on the next extension – a kitchen and bathroom, as well as raising the ceiling of the living room to make it more elegant. Once you’re done with that, more people will be happy but there will still be quite a few saying you’re missing a room. Eventually you’ll get the mansion built, but it will take you longer than it would have taken to build it straight through. More importantly, you’ll have built the mansion using feedback from the people using the chalet and other stages, so you can make sure it is designed for exactly what they need, not what you imagined they would need years ago.
Naturally, this is about OneNote and its development process. Sometimes people tell me it is a great app and they love it. Others say that too, but they have a list of additions they would like. Still others say it is unbelievable that we would release the product without X feature they need, which to them is the whole point, and what we delivered is useless.
The challenge for the team making the version 1 application is to build that chalet – the subset of the entire plan which has value to enough people all by itself. Where you see most version 1 products go wrong is that they build the chalet but they forget a wall, or they forget windows and instead build a hallway leading nowhere.
There are lots of reasons for this – that will be the subject of a future post.