Info Lean Development
Info Lean Development
Info Lean Development
Introduction
They may be clearly identified, but are poorly acknowledged. The problems of the
software development planet are responsible for most of the project failures that force
managements worldwide to put more rigid processes in place to ensure compliance.
More stringent processes at each stage are making the whole process a Concrete-Life
jacket.
By using Lean Production/Manufacturing principles not only quality concerns and
other issues can be resolved, but also a continuous improvement cycle can be built in
to the process. This can help in improving the quality of the software
solutions/products each time a new software solution/product is built.
27/06/05
www.projectperfect.com.au
Page 2 of 8
Eliminate waste
The first step in lean thinking is to understand what value is and what activities and
resources are absolutely necessary to create the value. Since no one wants to consider
what they do as waste, the job of determining what value is and what adds value is
something that needs to be done at a fairly high level. The seven types of
manufacturing wastes are illustrated below (refer: Table 1.0)
Table 1.0
Transportation
The seven wastes of manufacturing are also applicable to software development. The
seven wastes of software development, based on the above framework, are illustrated
below (refer: Table 2.0.)
Table 2.0
The project teams should try to avoid these wastes, which are very commonly
produced during the development process.
Do It Right the First Time (Incorporate Feedback)
"Do It Right the First Time" does not mean to "Freeze the Specs." On the contrary,
product (and software project) specifications change constantly. Lean discipline
demands instantaneous adaptation to changing market conditions, which is best
affected with a flexible architecture that readily accommodates changes, monitoring
27/06/05
www.projectperfect.com.au
Page 3 of 8
techniques that detect errors before they occur, and tests that are designed before
development begins.
The "Do It Right the First Time" rule has been widely used to justify the decision to
develop a detailed system design before code is written.
The problem with this approach lies in the assumption that customer requirements are
static and can be defined by a predetermined system. Because requirements do
change,-and frequently-throughout the life of most systems, they cannot be adequately
fulfilled by a rigid design.
If we acknowledge the axiom that customers may not know what they want at the
beginning of development and that their needs might change midstream, we must
incorporate a method of obtaining customer feedback during development. Instead,
most software development practices include a complex "change control process" that
discourages developers from responding to user feedback. Far from ensuring a quality
result, these change-resistant processes actually get in the way of "Doing It Right."
Lean development employs two key techniques that makes change easy. Just as Lean
Production builds tests into the manufacturing process to detect when the process is
broken, similarly Lean development must build tests at various stages of the
development process. As development proceeds and changes are made, the unit and
regression tests are run. If the tests don't pass, programming may be stopped until the
problem is found and corrected. A comprehensive testing capability is the best way to
accommodate change throughout the development process.
The second technique that facilitates change is refactoring (Improving the design
with out changing functionality), or improving the design of existing software in a
controlled and rapid manner. With refactoring, initial designs can focus on the basic
issue at hand rather than speculate about other features that may be needed in the
future. Later in the process, refactoring techniques can incorporate these additional
features, as they are required, making it easy to accommodate the future if and when it
becomes the present.
Empower those who add value
A basic principle of Lean Production is to drive decisions down to the lowest possible
level, delegating decision-making tools and authority to the people "on the floor."
Often when software development environments under-perform, the instinctive
reaction is to impose more rigid processes, specifying in greater detail how people
should do their jobs. Lean Production principles suggest exactly the opposite
approach. When there are problems in manufacturing, a team of outside experts is not
sent in to document in more detail how the process should be run. Instead, people on
the manufacturing floor are given tools to evaluate and improve their own areas. They
work in collaborative teams with the charter to improve their own processes and the
links to nearby processes for which they are suppliers or customers. Their supervisors
are trained in methods of forming and encouraging work teams to solve their own
problems.
Lean development similarly gives priority to people and collaborating teams over
paperwork and processes. It focuses on methods of forming and encouraging teams to
27/06/05
www.projectperfect.com.au
Page 4 of 8
address and resolve their own problems, recognizing that the people doing the work
must determine the details.
Software development involves the handoff of information at least once (from user to
programmer) and often more than once (from user to designer to programmer). One
school of thought holds that it's best to transfer all such information in writing, but in
fact, a great amount of tacit knowledge is lost by handing off information on paper. A
second school of thought believes that its far more effective to have small
collaborating teams work across the boundaries of an information handoff,
minimizing paperwork and maximizing communication.
Create a culture of Continuous improvement
In many software development projects today, excellence means the ability to adapt to
fast-moving, rapidly changing environments. Process-intensive approaches such as
the higher levels of Software Engineering Institute's (SEI) Capability Maturity Model
(CMM) may lack the flexibility to respond rapidly to changes and more over these
process-documentation programs indicate excellence only when the documented
process excels in the context of its use. So these accreditations have their own
advantages and disadvantages.
Iterative development can effectively employ the Plan-Do-Check-Act method. During
the first iteration, the handoff from design to programming or programming to testing
may be a bit rough. It's OK if the first iteration provides a learning experience for the
project team, because the subsequent iterations will allow the team to improve its
process.
In a sense, an iterative project environment becomes an operational environment,
because processes are repeated and Deming's techniques of process improvement can
be applied from one iteration to the next. A simple Plan-do-check-act principle can be
followed.
Check: Analyse the data from the experiment to validate the cause.
27/06/05
www.projectperfect.com.au
Page 5 of 8
27/06/05
www.projectperfect.com.au
Page 6 of 8
project management goal, local optimization will flourishat the expense of the
project's overall quality.
Best Procurement Practices (Partner with Suppliers)
The high quality and creativity of the supply chain partnerships far outweighed the
putative benefits of competitive bidding and rapid supplier turnover. Partner
companies helped each other improve product designs and product flows, linking
systems to allow just-in-time movement of goods across several suppliers with little
or no paperwork. The advantages of this collaborative supply-chain relationship are
lasting and well documented.
Conclusion
The lean production is a good metaphor for software development, if it is applied in
keeping with the underlying spirit of lean thinking.
The proposed lean software development process principles are:
Eliminate waste;
Empowerment;
Refactoring;
Learn by Experimentation;
Lean thinking dictates that scope will take care of itself if the domain is well
understood and there is a well-crafted, high-level agreement on the system's function
in the domain. Scope will take care of itself if the project is driven in time buckets
that aren't allowed to slip. Scope will take care of itself if both parties focus on rapid
development and problem solving, and adopt waste-free methods of achieving these
goals.
When applied to software development in the right context and spirit, these concepts
provide a much broader scope and framework for improving software development
process.
The simple tenets of Lean Production and Lean thinking have brought dramatic
improvements in a myriad of industries. If applied to software development process
as Lean Software development, these practices can make highest quality, lowest
cost, shortest lead-time software development possible.
References:
David Berger, Bill Cloke, Lean products start with Lean design,
27/06/05
www.projectperfect.com.au
Page 7 of 8
James P. Womack, Daniel T. Jones et. Al (1990), The Machine That Changed the World: The
Story of Lean Production.
Jones, D.T. & Womack, J.P. (1996). Lean Thinking: Banish Waste and Create Wealth in Your
Corporation,
Mary Poppendieck (2002), Lean Thinking: The Theory Behind Agile Software Development.
Journal of Software Development, Lean Software Product Development,
Todd Phillips, Building the lean Machine.
The Author
Dasari. Ravi Kumar is currently working as a Chief
Quality Officer in Emerio Corporation Pte Ltd
(www.emeriocorp.com), a Singapore based IT Services
Company. He started his career as Software Engineer and
then gradually held various positions that include Senior
Software Engineer, Project leader, Project Manager, Senior Project Manager,
Management Representative and to finally Chief Quality Officer for Emerio Group of
Companies. During his tenure at PMO (Project Management Office) he was involved
in the successful delivery of over 25 projects on time, on spec and on budget.
27/06/05
www.projectperfect.com.au
Page 8 of 8