"How do you eat an elephant?" the familiar saying goes. "One bite at a time." For the record, I am against eating any kind of endangered species :) but the wisdom of the saying is sound. We can only tackle large challenges by breaking them down into small, manageable bites and chewing those bites individually. We cannot let ourselves get overwhelmed by the immensity of the overall challenge.
In my start-ups, we tackled new software projects in this way: identify the hardest, nastiest little nugget in the project. Really boil it down to the smallest possible piece that encompasses the hard stuff. What do we think is going be the toughest nut to crack? Then we'd start building there. Just mock up a potential solution for that small tough nugget. This would be done by 1-3 people, so very focused. Basically, the project would start as an experiment to figure out how we'd tackle that really tough piece. It might take a couple tries to get it right. But it would be so focused that we'd literally see results in a couple days and iterate quickly. Once that part was done to our satisfaction, we'd define nice APIs around it, wrap it up in unit tests, and then move on.
If the project had a couple of really hard pieces, we'd tackle each of them before moving onto anything else. Once we had all the really hard pieces done, we could build out from them. Since the hard parts were already done, the rest would usually be pretty straightforward solid. On a large project, you can parcel out all the tough pieces to separate small focused teams and have them work in parallel and then develop the "connective tissue" to link the nuggets together. In this way, I have seen complex products appear to magically emerge from the ether.
It is a bottom-up approach to building, but to be successfull, it needs to be guided by a well-thought-through top- down vision of the project and possibly the high-level architecture, but the implementation is tackled in very
small bites with a scrappy attitude and willingness to experiment to find the right solution
Copyright (c) 2016 Crazy Peak LLC