How to build a parking lot
The empty lot next to my office has been converted into a parking lot. The interesting thing is how they have gone about doing the construction. The architects and contractors could have brought in the pavers and cement trucks and built a full parking garage immediately. The work would have taken several months to a year and been very intrusive to everyone trying to work near by.
Instead, they brought in a minimal amount of equipment, put down some dirt, graded it, install fences and a pay system and left. That minimal amount of effort, the simplest thing that could possibly work, was good enough for several months.
We had a warming trend and the dirt was starting to get pretty churned up with large ruts starting to form in the middle of the lot. So, the crews came back with some gravel, re-graded the lot and covered it with stones. As I look out my window now, the lot is functioning great. It isn’t perfect, but it is completely functional. Everyday there are cars parked in.
I am sure that eventually the crews will return and pave it, making for a more permanent lot, but for now, it works.
Too often in software development people feel that they have to release the perfect product or, at least, release a fully functioning piece of software. I know were I work this is something we are trying to move away from. In my opinion, it is much better to release the functional, dirt version first and let people play with it. Give it enough time to figure out where the ruts are forming and then go in and gravel.
I have a theory that, with most software, all that is need is about 60%. We only need to implement most of the functionality for people to be both productive and happy, e.g., the gravel version. By starting with the dirt version and working up, we are able to stop when we hit the right point, be that the gravel version or the initial paved version.