Sunday, August 15, 2010

Business of Software

Abstract:
Business of Software is written by a professor from MIT SLOAN school, Michael Cusumano. Published in 2004, and the book has become one of the best-seller among the world. This is a comprehensive guide through history to how and what the software technology should be developed, managed and manufactured. For me, as a Japanese, what surprises me is that Japan had a very unique and advanced management methodology even when dealing with software development. Overall, this book has taught me, that hence the management complexity, software is attractive business which is still growing; the market of software can grow as much as human brain can imagine.

Major Problems that the book cited as Software Development Process Standardization;
  • Lack of understanding in system requirements on the part of customers and designers. 
  • Large gaps between estimates of costs and time with actual expenditures due to poor estimating techniques, failure to allow time for changes in requirements, and division of programming tasks into blocks before the devision of the system are understood well enough to do so properly. 
  • Large variations, as much as 26:1 in one study in programmers' productivity levels. 
  • Difficulty of dividing labor between design and production (coding), since design-type decisions must still be made during coding. 
  • Difficulty in monitoring progress in a software project, since "program construction is not always a simple progression in which each act of assembly represents a distinct forward step". 
  • Rapid growth in size of software systems. 
  • Poor communication among groups working on the same project, exacerbated by too much uncoordinated or unnecessary information and a lack of automation to handle necessary information. 
  • Large expense of developing online production control tools. 
  • Difficulty of measuring key aspects of programmer and system performance. 
  • A tradition among software developers of not writing systems "for practical use" but trying to write new and better systems, so that they are always combining research, development and production in a single project, which then makes it difficult to predict and manage. 
  • Rapid growth in the need for programmers and insufficient numbers of adequately trained and skilled programmers. 
  • Difficulty of achieving sufficient reliability (reduced errors and error tolerance) in large software systems. 
  • Dependence of software on hardware, which makes standardization of software difficult across different machines. 
  • Lack of inventories of reusable software components to aid in the building of new programs. 
  • Software maintenance costs often exceeding the cost of the original system development. 
Next Chasm to Cross
  1. Bubbles are just bubbles. They expand and then burst. Software companies, whether they are product-oriented, service-oriented, or something in between, will have ups and downs. To have "Kaizen" spirit (continuous improvement) is the key to strive good times and bad times. In other words, "be prepared, so the chances will come to you any time they want". 
  2. Software business can be more futuristic. As described in Chapter 3, most new opportunities for software entrepreneurs come with new hardware or computing platforms and niche applications, often for new platforms. Business of software can go ahead of hardware. So if you want to watch out for new hardware forefronts, watch for the software innovations that will lead the new. 
  3. Truly novice user. 5 billion or so people in the world who do not own a computer. 
What this book captured was 20 years of software business itself. This is by far the book of software history, for programmers, engineers, managers, and executives in the industry to read. 

Once Japan had a great optimized development model for vertical integration.
But the model no longer works for flat, horizontal integration model.
Whenever there is a great inefficiency, there is a great chance of improvement.