Sunday, November 20, 2011

Working towards finished

As usual, I have been involved with shipping software, some was for a start-up (which I really can't talk too much about) and the other was a fairly complicated work-order to fix an invoicing / e-commerce system. In particular, during the last week I got involved in some conversations about being finished and I had this simple realization;
When developing online software you will get to finished faster if you ship whenever it works. It's about cognitive load...
So what do I mean by this?

Shipping software has a lot of details. And many of these details have a good number of interdependencies. Making sure all the details have been thought through as the team nears shipping the software takes work. The best way to reduce the number of details is to resolve them and put them away. In other words work towards reducing the complexity of software features you are shipping all at one time. This is done by grouping the features into sets. And shipping the sets when they are working and tested. This creates an approach where you frequently ship working sets toward a "finished" product. And each working set provides enough features to engage the users. Always aim to ship the least number of features frequently and work on soliciting feedback from the users. Feedback can come from a number of sources including; analyzing traffic data or direct engagement with the users. In the end shipping ten 20 feature sets would occur in less time with less effort than one 200 feature release. And often feedback received from the customer alters the feature set for the coming releases, improving the product.

For more information on this type of approach to software development begin reading about agile and lean approaches.