Agile and Lean Startup - Part 1
Agile and Lean Startup - Part 1
Let's look at the ever-evolving space of lean and agile developments and provide you with a collective study that will help us understand the evolution.
Join the DZone community and get the full member experience.Join For Free
In the field of Software Engineering, Agile is held in high regard. Agile is treated like a panacea that is expected to solve all the issues faced by enterprises, with respect to Software Development. Agile based techniques like Scrum, Kanban have become pretty common and are widely adopted. However, there are many projects that have failed despite applying agile methods. Also, intriguing new developments are happening outside of the software industry focused on eliminating waste and applying lean beyond the definitions of agile. What is particularly interesting is companies with limited resources being remarkably successful by applying concepts from “The Lean Startup Methodology” which has gained immense popularity among the startups. Using the Lean Startup approach, companies can avoid chaos and conduct experiments to test a vision.
Lean Methodology puts a process around the development of a product focusing on cutting waste and emphasizing constant feedback. Modern concepts such as Lean Startup, Agile Methodologies, all trace their origins to Lean Thinking, a term coined to signify widely adopted Japanese manufacturing concepts.
Most of us Software Engineers are exposed to any of the popular Agile methodologies introduced by the organizations. We make minor tweaks as to the mandated processes to work effectively. These articles would attempt to expand and broaden the knowledge around studying the pattern of related concepts that have evolved over time and are playing a major role in our day to day work. My overall goal is to provide a collective study that helps us understand the evolution and draw conclusions as to how these methods compare or contrast against each other.
Car manufacturing was once an expensive Craft production and was made inexpensive by Henry Ford who introduced assembly line techniques which allowed low skilled workers to use specialized machines. This resulted in indirect labor and waste related to production planning, engineering, and management. Toyota, which was a small company then, wanting to manufacture cars in Japan, was unable to raise enough money to afford large single purpose machines or huge inventory or large amounts of indirect labor which was necessary for mass production. So, Toyota invented a better way to do things, using very low inventory and moving decision-making to production workers.
The core of Lean Production is this concept called Muda. Muda is a Japanese Word that means waste. It is used to denote any set of activities that don’t add value. Lean Thinking attempts to eliminate waste.
There are (5) Lean Principles promoted by the book titled Lean Thinking (J P Womack & D T Jones 1996). They are
Figure 1 Lean Principles
Value can be identified only by the actual customer. Value should be defined in terms of a whole product and sometimes value could be distorted by the experts within the organization defining them instead of listening to the actual Customers.
Identify the Value Stream
The Value Stream is the needed steps to the hands of the customer. Once all the steps are defined, they are categorized as
- Category 1: Steps that can add value
- Category 2: Steps that don’t add value but are now needed.
- Category 3: Steps that don’t value and that are not needed.
Effort is made to eliminate Category 3, minimize Category 2 using flow, pull, and perfection techniques.
The Value Creating steps are reorganized to make them flow. Departments which are used to working on a single-task process on large batches or the dependencies between departments where there is time lost waiting for work to be done by others is reorganized. Start thinking about ways to line up all needed steps to get a job done to a continuous flow.
Any wait time of a product on shelves translates to revenue loss. The pull system ends up reducing waste of any production process and allows us to start new work only when there is a customer demand for it. Ideal Pull system results in “Just-in-time” where deliverables are produced in order to meet actual demands and enterprises eliminate the risk of producing based on anticipated demand and rather rely on actual demand. This results in reduced inventory and increased efficiency.
Many different techniques could be used to encourage continuous improvement there reducing Muda (Waste).
Lean attempts to do more, using the least amount of all the resources reducing time and mistakes and giving customers exactly what they want, when they want. Lean principles allow us to create a focused production system, which improves overall performance.
Waterfall Software Development
During the 1990s Software Development was largely driven by heavyweight methods like Waterfall which were rigid, micromanaged, and highly regulated. The Waterfall Model followed sequential steps, and the project development team would only move to next phase if the previous step was completed successfully.
Figure 2 Waterfall Development Model
The Waterfall attempts to capture all requirements upfront during the Requirements. Design phase is the phase where experienced architects and system designers form a system design satisfying the captured requirements. Design is handed over top down to the developers during the implementation phase where the actual code is written. The verification phase attempts to validate whether the project meets the demand of the customers. Once it meets, it flows to the Maintenance phase, where the actual customer begins using the application that has been developed. Any new issues that arise are handled during this phase. Though the model was extremely simple and worked for specific projects where requirements were very clear, the model posed several significant challenges for majority of mundane projects like
- Bugs are found very late in the verification stages making it expensive to fix them. Requirements are frozen in time whereas, businesses operate in a highly fluid environment where changes were becoming a norm. Customers get to experience the application at the end and real time engagement feedback is gathered only then
Agile Software Development
Many lightweight methods like Extreme Programing, Scrum started emerging as an alternative to heavyweight methods like Waterfall during the 1990s. Most of these methods, though originated, before the term agile was coined are still collectively referred to as Agile Software Development methods. In 2001, several practitioners of these many different lightweight methods, collectively published the Manifesto for Agile Software Development. These methods break software development work into small increments, quicker releases that minimize the amount of up-front planning, design/documentation and allow for quick adoption and immediate feedback all backed by lightweight processes focused on high quality deliverables.
The team released the following purpose and principle statements.
The Agile Manifesto: Purpose
- We are uncovering better ways of developing software by doing it and helping others do it. We value: Individuals and interactions over processes and tools. Working software over comprehensive documentation. Customer collaboration over contract negotiation. Responding to change over following a plan
- 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.
The purpose and principles clearly illustrate the frustration with many of the existing methodologies which were oriented towards comprehensive documentation and rigid following of processes rather than focusing on empowering people and delivering working software in shorter increments, through which we provide Customer Value at the earliest.
Agile Versus Lean Principles
The Agile principles don’t have any references to lean methodology, despite common belief that they all are aligned. However, one could quickly consider many similarities between the two,
Pull versus Push
Pull model allows us to start new work only when there is customer demand for it. Similarly, the Agile model focuses on doing just needed work mandated by the stakeholders.
Both of the methods focus on empowering workers to become highly skilled and allowing them to take better decisions. This is no better evident than the agile principle “The best architectures, requirements, and designs emerge from self-organizing teams.”
Small Batch Size > Large Batch Size
In manufacturing, larger batch size was better, due to economies of scale. Similarly, in Software Development, done using heavy models like waterfall, the delivery of the entire set of features at the end could be considered analogous to the manufacturing industry’s large batch size. Lean thinking propagated smaller batch size in manufacturing, and it led to unforeseen benefits like less space on a factory floor or warehouse, less risk, less waste, and allowed better customization. Similarly, under the influence of agile, incremental delivery which analogues to smaller batches becomes the focus and has allowed quicken development cycles, handling better customer feedback etc.
The people doing the work own the process and as well as the continual improvement of that process.
There are of course very important differences
- Lean focuses on eliminating waste on the entire set of activities that an enterprise is engaged in. Agile focuses mainly on the delivery of the Software and the related activities.
- Lean focuses on defining value for the whole product were else agile limits itself to the working software,
Agile gave a set of guiding principles and it did not include any prescriptive steps or processes. Many methods have been applied during years after publishing Agile Manifesto. Out of the many methods which people believe to be helping organizations staying agile, Scrum and Kanban are extremely popular. We would be looking at some of the Agile Methods, Lean startup and what enterprises could pick up in the next few articles.
Opinions expressed by DZone contributors are their own.