|
Lean principles are not new; in fact they originated largely from the manufacturing domain with Toyota and its Toyota Production System. One only has to look how the Japanese car industry dominated in the 1970's and 80s to see how devastatingly effective this approach has been. Lean principles have since evolved and been tailored to domains ranging from manufacturing to product development and more recently software development. Mary Poppendeick has spent considerable effort publicising the 7 principles of lean software development: Eliminate waste Anything that is not needed or used is waste. Typically in software projects the term waste applies to things like unnecessary documentation, too many features, too clever an architecture and other stories that I am sure we are all familiar with. Waste in software development projects is also created in less visible areas for example by passing ownership of artefacts. How often have you seen a team of Business Analysts develop a product to pass to technical architects who say things like "we don’t need all of the stuff that is in that document" or even worse "we don't use it anyway"? This is waste! Amplify learning Development is very different to production. Take the example of building a new car, the development phase is all about learning how to build the components, integrate them together and test them, optimising the way they interact as a whole vehicle. The production phases has a different emphasis, it is about making all the cars the same with no variance in quality. One does not expect these prototype cars to be right first time we have little or no knowledge of the product at the beginning of the project. As we learn more the product improves and evolves. Software does not have a production phase it is all about development. The term production of software actually means development. It is clear that once software has been developed all that is needed for “production” is to copy the files. Therefore, as with the car example, the development phase of software is all about gaining knowledge, expertise and skill that is vital to the development of a high quality product. Decide as late as possible It is important to keep options open and not commit too early. How often has a client on a software project changed priorities, requirements or architectures? Building a capability for change in a system is important. Look at the video systems in the 1980’s, betamax, video2000 and VHS. Wise manufactures kept their options open as to which one would prevail. Deciding late does not mean never deciding. One must identify the latest responsible moment. If you leave a decision too late it will be made for you, almost always to your determent. Deliver as fast as possible Feedback is critical to the learning process and to ensure quality. Rapid feedback is required to make informed decisions as late as possible when the most information is at hand. Making smaller faster iterations is more advantageous than slow large deliveries as more frequent information is provided. Decide as late as possible and deliver as fast as possible are complementary principles. A good example of the application of this and decide as late as possible is the Apple ipod. The ipod was by no means the first portable mp3 player to hit the market but where it succeeded was in that it was released to the market when the technology was just sufficiently mature and capable to support the product at the right price (decide as late as possible). It was delivered fast so it was the first of the current technology generations to hit the market (deliver as fast as possible) Empower the team Empowerment of individuals and consequently the team is vital to successful delivery. It creates the necessary ownership of the decisions based on the best possible knowledge. Approaches such as SCRUM advocate team empowerment. Without ownership individuals have no vested interest in seeing the product succeed. Take a production line; the people who really understand the issues are not the process engineers who designed the line but the individuals who work on it and have to deal with the problems on a day to day basis. Successful manufacturing learns from these individuals and gives them the power to take ownership of these optimisations. Build integrity in Integrity is difficult to measure; it is very much qualitative and can only really be perceived. Software with high integrity is supposed to be stable, fast, efficient, do exactly what is needed, be clever in the way it works and change and grow with time. Today’s customers demand a solution with integrity. Integrity is a cultural thing, not something that can be “bolted on” at the end. Nor can it be achieved by dictatorial application of processes and metric. See the whole In product development and in particular software development there are always trade offs to be made and there is a tendency to focus on individual’s responsibilities and interests to maximise their own return. Taking again cars, the engine department may want to provide a large engine for maximum performance which would impact the interior cabin space. This could perhaps be enlarged to meet the demands of space and comfort. Both requirements have been met but at the overall cost of the whole vehicle which is larger heavier and more costly than necessary. Losing sight of the whole has resulted in good individual aspects but a poor overall solution. Inappropriate contractual or incentivisation arrangements makes this situation more likely. It is similar in software projects. Imagine a typical project where the GUI has been completed and tested early, and potentially rewarded for doing. This could result in changes to the back end to fit with the GUI fields, menus and screens. The Principle7 Approach
Principle7 build on these principles bringing a wealth of experience and pragmatic approaches in their application to client’s projects. We help clients become agile through the application these principles supported by technologies and engineering practices. Many thanks to Mary & Tom Poppendieck for all the inspirational work that they have undertaken in developing the lean principles for software development. How lean are you? Try our quiz - here
|