Agile vs Lean Software Development
For more quick information see the FAQ on the Sphere of Influence site.
What’s the difference between AGILE and LEAN as they relate to software development?
This is a common question that involves more than just a simple one-line answer. And, depending on how you define LEAN, it could have several answers.
LEAN, at its core, is a management approach for streamlining production systems. Lean is responsible for colossal improvements in productivity and quality over the past 32 years and is used successfully by industries that range from manufacturing and logistics to product development.
AGILE is more of a philosophy than an approach and is very specific to software projects. Agile encourages higher productivity and increased accountability to customers by placing emphasis on producing “real software” vs. plans, schedules, and paper. At its core the Agile philosophy does three things: First, it assumes that specification cannot be codified at the beginning of a project and uses intense iteration and customer interaction to identify features. Second, it imposes extremely rigorous disciplines for quality control. Third, it depends on having “professionals” skilled in performing key jobs efficiently.
Lean is a generic streamlining approach for all production systems, but Agile is specific to product development environments. Agile is considered an alternative to traditional product development methodologies that emphasize BPUF (Big Planning Up Front), or as others have put it “PERT-based project management”. Many people regard Agile to be the philosophical antithesis of the Project Management Institute’s favoritism towards plan-centric management.
Lean has a more complicated history than Agile. Many people regard Lean to be well-established and even old because of its heritage in manufacturing and logistics. However, there are many forms of Lean – some old and some new. Modern Lean has three main evolutionary branches: First is Lean Manufacturing; second is Lean Logistics (a.k.a. Supply-Chain Management); and third is Lean Product Development. Software projects should mostly be concerned with the third, Lean Product Development.
The most recent is Lean Product Development, developed byToyota Motor Corporation’s design studios. This variant of Lean is specifically intended for designing products, not for manufacturing them. Thanks largely to Mary & Tom Poppendieck’s fantastic book on the subject, Lean Product Development is making a strong appearance in the software industry.
At Sphere of Influence Inc. we regard Lean Product Development as more fundamental to stimulating productivity than Agile. We generally recommend clients start with Lean and then move to Agile. Lean Product Development initiatives tend to be more useful to the business as stand-alone items and generally pave the road for a successful Agile initiative to come later. Agility involves a lot of religion, meaning that the menu of Practices is long and the tradeoffs are complicated with sparse evidence of what is minimal yet required. Lean initiatives, on the other hand, focus on the core task of identifying and eliminating waste while driving key decisions outward in the development cycle. By eliminating waste from production systems (called Value Streams) the overall objectives are more efficiently accomplished; even when Non-Agile management methods are employed.
That was the short intro. Read on if you want more details...
AGILE
AGILE is a buzzword and somewhat of a fad, but definitely here to stay. To the uninitiated an “agile” project evokes notions of being simple, adaptable to change, nimble, and quick (pardon the redundancy). The term itself suggests paper-thin bureaucracies and minimal documentation; opposite of traditional heavyweight processes such as 2167-A, 496, RUP, and the PMBOK.
This is a good enough description for line-of-business (LOB) executives because it gets across some key values of Agility, particularly to someone frustrated by the foot-dragging pace and poor accountability of traditional software development. However, this does not accurately depict what Agile really is. Agility was not conceived from the top by LOB executives trying to make software projects more accountable; it started at the bottom with developers attempting to self regulate the out-of-control quality situation in the software industry by embracing tried and true patterns of success. Agile was a response from the development community to address the quality and productivity problems that mil-specs, CMMI, ISO9000, and heavy-weight methods had either created or failed to control. Since developers created Agile for themselves the entire movement tends to be developer centric. The Practices associated with Agility address developer tasks and situations, and to a degree the tasks and situations of project managers, but do not go far beyond that. Executives, customers, and other stakeholders are viewed as outsiders from the Agile perspective.
As such, the lofty business-centric ideals conjured up by the word “agile” are close to what Agility delivers, but not exact. Agility is mostly a self-imposed discipline and QoS standard for use by developers and development organizations.
The Agile Manifesto itemizes its principles:
Principles from the Agile Manifesto
· Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
· Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
· Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
· Business people and developers must work together daily throughout the project.
· Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
· The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
· Working software is the primary measure of progress.
· Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
· Continuous attention to technical excellence and good design enhances agility.
· Simplicity--the art of maximizing the amount of work not done--is essential.
· The best architectures, requirements, and designs emerge from self-organizing teams.
· At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Where the non-agile world values Process, the Agile world values People. Where Documentation and Traceability are key objectives in the non-agile world, Working Software is the main objective of Agility.
What’s all this really mean? It means that developers are saying “no” to big planning up front, big processes, big architectures, big binders, and big specifications.
However, there’s nothing directly actionable in the Principles themselves. To convert a living breathing organization to Agile you need more than principles – you need PRACTICES. That’s where things get messy.
Various methodologies (i.e. brands) have appeared, such as: eXtreme Programming (XP), SCRUM, Crystal Methods, DSDM, Feature Driven Development, Adaptive Software Development, and others. Each of these brands enumerates its own set of practices that should be followed. Practices include things like Pair Programming, Test Driven Development, Daily Stand-up meetings, and etc. Some practices are common across brands, while others are not.
The jury is still out on how well each of the practices works and in what combination they should be adopted. Yet an organization that is adopting Agile needs to select specific practices and more-or-less adhere to them in what usually is a disruptive change to the organization.
Results are inconclusive. Some case studies indicate extremely positive results with Agile while others indicate results more consistent with long-standing industry averages. The reality is that Agile does truly enhance a software project but achieving useful levels of Agility is not as easy as it sounds.
Converting to Agile is like converting to certain religions. You might agree with the principles and objectives but you end up spending most of your time wrapped up in doctrine and dogma. Such is the case many times with Agile.
Moreover, executive LOB managers generally don’t wish to understand Agile beyond the simplistic ideals of adaptable, nimble, and quick. They appreciate those high-level ideals but if you put a list of Agile Practices in front of a LOB manager – most couldn’t care less. Agile is developer centric and as such will never be truly appreciated by most people with P&L responsibility.
LEAN
LEAN has nothing specifically to do with software; it is about streamlining production systems by eliminating waste, having the “right” process, leveraging people as the most flexible resource in the system, and being disciplined about “when” decisions are made. Classic Lean Manufacturing is the five-step process of: defining customer value, defining the value stream, making it flow, “pulling” from the customer back, and striving for excellence [J.Womack & D.Jones, Lean Thinking: Banish Waste and Create Wealth in Your Corporation].
The main idea behind Lean is to avoid any over-production (i.e. inventories), because over-production is not only wasteful it prevents rapid response to changing customer demand.
Where it gets confusing is that the term “lean” was already introduced to the software industry many years ago; long before there was a concept of Lean Product Development, and before Lean Manufacturing had been fully digested by the industrial community. The early versions of “lean” introduced to the software industry were derived from Deming’s work on team-centric management, statistical quality control, and process improvement. It become known stateside as Total Quality Management (TQM); and TQM-style thinking was applied to everything. Embedded as philosophical drivers into ISO standards, CMM, and Six-Sigma - Lean ideas found their way into software development in many industries. Software projects got a version of Lean that focused on quality, not efficiency, and was ported from Deming’s philosophies on statistical quality control and process improvement and largely omitted the team-centric leadership aspects found in pure TQM. These early “lean” initiatives pushed the software industry down a path of intense measurement, statistical measurement, heavy processes, and mammoth documentation – a path that bloated software development budgets without yielding any industry-wide increase in software productivity or potency (in fact, many think it did the reverse).
Meanwhile the manufacturing world was taking notice of the Toyota Production System (TPS), which began with Deming’s TQM but evolved quite independently in the years between 1950 and 1973. The TPS became the reference model for what is now called Lean Manufacturing. Even though you can still see the TQM roots, the core concepts of modern Lean Manufacturing are very different from TQM.
Lean Product Development is fairly new. Developed in Toyota Motor Company’s design studios it is the highly successful approach Toyota uses to design new car models. Toyota adapted key concepts from Lean Manufacturing to fit the design studio environment, which is radically different than a manufacturing floor. Toyota’s success caused their methods to be studied and imitated by people in many diverse industries, including software.
Lean’s core concept of avoiding over-production appears in Lean Product Development, but takes unexpected forms. The production of any artifact that won’t be immediately consumed is suspect of being over-production. This applies to use cases, requirements, designs, test plans, defect reports, change requests, and other artifacts typically found on software projects. For example, when requirements are over-produced then the project’s ability to respond to change is hampered. The key is to regulate production of all artifacts to match consumption by allowing consumption to “pull” the upstream production process. With Lean Product Development, requirements are specified in detail at the latest responsible moment, the moment when the most is known about the requirement and before it is needed.
Lean Manufacturing doesn’t make a big deal about “when” decisions should be made, but Lean Product Development does.
A Lean initiative in a product development environment primarily revolves around the elimination of waste and getting quality right the first time. The techniques employed on a Lean Product Development initiative are very sophisticated and quantitative yet not statistical in nature. There is no attempt to impose statistical quality controls on the creative, developmental, and engineering processes. Lean Product Development is not TQM!
We find that executives instinctively take to Lean Product Development much more readily than they do to Agile. This is partly because Agility is expressed in the language of developers, not managers. Lean, by comparison, generally makes sense at all levels...from developers up through executive officers. Lean speaks the language of “production” without much regard to what is being produced.
Lean and Agile overlap in the concept of accommodating change late in a process. The old Big Design Up Front methods are criticized for their inability to cope with midcourse change, whereas both Agile and Lean embrace midcourse change. Lean not only expects midcourse change; it strongly encourages pivotal decisions to be delayed until the last responsible moment.
A software project can be Agile without being Lean, or it can be Lean without being Agile. There is nothing directly relating the two concepts, yet they fit together nicely in a software organization.
MY ADVICE:
I advise clients to start with LEAN Product Development and then adapt at their own pace toward AGILE practices. There’s a lot more bang for the buck vis-à-vis the bottom line with a partially completed Lean initiative than a partially completed Agile initiative. Once an organization is LEAN, becoming AGILE is a step that developers can take on their own without requiring much management backing.