The application and adaptation of Lean project management and manufacturing principles to software development have provided a tangible benefit to many software projects. Lean principles are both consistent and extend Agile software development processes in useful ways.
|Paper title||Implementing Lean Software Development: From Concept to Cash|
|Authors||Mary and Tom Poppendieck|
|Publication||Year 2006, Addison-Wesley, DOI: https://dl.acm.org/doi/10.5555/1196372|
This is a fantastic book about the incorporation and adaptation of Lean ideas into Agile software development. Here, the authors cover several aspects of software development that are not commonly addressed in most books on software development. One of the biggest things that I took away from the book was the importance of avoiding waste by not implementing any feature that is not absolutely necessary and/or of high priority. The idea is to find, write, and maintain that 20% of code that satisfies 80% of the desires of your customers. The whole chapter on "Waste" was excellent and everyone who does or is associated with software development should read this chapter. Another interesting topic the book covers is how people fit into the software development process and what management practices help to build strong teams (and what management practices work to destroy strong teams, such as individual rankings impacting compensation). Some other interesting concepts to look for are "technical debt", "automation", and "cycle time". It was also interesting to read that most mistakes that are made in software development are due to a flawed process and/or supporting tools and not due to bad developers. Therefore, we should first question and improve the process and/or our development tools to make them more mistake-proof before we point our fingers at individual people for the mistakes they make. Simply asking people to remember more or giving them a big list of things they have to do is not enough. Lastly, the "Try this" section of the last chapter "Journey" gives a great condensed summary of the whole book. If you read nothing else, read this last "Try this" section and go back in the book to look for further details and explanations.
Note: At the foundation for "Lean" software development is an analogy to the Toyota Production System (TPS) for manufacturing. As with any such analogy one can go too far (see Code Complete (2nd edition) for a discussion of this issue) but the authors appear to be able to take the manufacturing analogy only as far as it can be usefully applied to software development and not any further.