One the constant tensions in our industry is the business need to make software more like manufacturing — highly predictable and controllable — and the reality that much of the software development lifecycle is not amenable to the process control techniques that are so effective in manufacturing. Software development is different than manufacturing in that:
- There is a wide range of uncertainty. Software efforts span from green field projects with little initial understanding of the needed system to bug fixes and small changes with very detailed specifications.
- There is an indirect relationship between the effort expended and value created. Generally, if one spends 10 hours painting a wall, one can expect there will a lot of wall painted. One can spend 10 days doing requirements analysis on a green field project, and who knows if any value has been added.
We saw the rise and fall (?) of the software factory movement over the last few years. The movement’s failures may be traced to a lack of accounting for the above differences. Maybe though, with the emergence of devops and continuous delivery, the software factory (which arguably is a mashup of factories and agile that is generally applied to deployed software).is only in remission.
Most organizations that see themselves as ‘Agile’ do in fact commit to the business to deliver desired content on a schedule and with high productivity. While striving to meet these commitments, these teams find using stories, scrums, sprints, work items, etc. do improve their ability to delivery. But even with the success of agile methods, there will be continued pressure on productivity of software development, especially on the cost of labor for most enterprises that rely on building software. For these organizations, labor arbitrage is only a partial answer. They need the teams to be more productive.
Even though factory methods have limited utility in software, the lean practices of identifying and eliminating waste can apply across the whole range of development efforts. So while industrialization will gain momentum, it won’t be in building software factories, but in making the software development supply chain (internal and external) more efficient by adapting techniques learned from manufacturing, such as Kanban and Value Stream Maps (VSM).
While this trend is already well underway, it will accelerate in 2014. In particular, as in manufacturing, effective implementation of VSM relies on instrumentation to collect operational measures. The next phase of industrialization will entail greater adoption of, and eventual standardization of, these measures.
[Editor's Note: This post is part of the annual "Cutter Predicts ..." series.]