Ashwathy Babu Paul, Programmer Analyst, Cognizent Technology
Introduction
Lean is a process of eliminating waste with the goal of creating value for enterprise stakeholders. Lean works everywhere from product manufacture, raw material supply, transportation, facility layout and training. Let us find the logical adoption of lean principles in the field of software development. Agile software development deals with requirements and solutions which evolve through collaboration between self-organizing cross functional teams. A lot of ideas of Agile are imbibed from the Lean Methodology. Scrum is an agile process tool, in which an organization is split into small, cross functional self organizing teams. I tried to understand the level of adaptation of lean philosophies in Agile software development.
Why Agile?
Ensuring Quality and cost effectiveness is a vital key to software development. Team work, continual improvement and customer satisfaction are the pillars of Lean thinking. The methodology was widely used in the manufacturing industry for mass production. Software as a product often used to fail in meeting the customer needs due to lack of customer focus and not able to understand the value as perceived by the end user. Hence, an Agile system of responsive methodology came in to existence. It was natural of software industry to adopt this in the cost effective and time bound development scheme.
Present day Lean Manufacturing is developed primarily on the strong fundamentals of Toyata Production System(TPS) and the Quality Management Systems (QMS).
The importance of cost reduction in software development through emerging techniques like Scrum is important to all stake holders. For understanding the adaptation of Lean Manufacturing Tools in software development, let me bring out the salient aspects of waste reduction in manufacturing industry.
Lean Production
Lean production is about expanding capacity by reducing costs and shortening cycle times between order date and shipping date. To put it simply, Lean is about understanding what is important to the customer. Value is a capability provided to a customer at the right time at an appropriate price, as defined in each case by the customer. The dimensions of value are features of the product or service, availability, cost and its performance. Any activity that consumes resources but creates no value is a waste. Lean is an attitude of zero tolerance for waste. Also, it is the action of relentless pursuit of waste to eliminate it from its source. “Lean is a process of eliminating waste with the goal of creating value for enterprise stakeholders.”
Waste is any activity that adds cost/time without adding value to the service we offer to our customers. In a nutshell, waste is anything that the customer does not want to pay for. Some of the Important terminologies regarding waste are as follows:-
(a) MUDA – waste of over capacity
(b) MURI – overburden. Muri refers to pushing a machine or a person beyond natural limits.Overburdening people leads to safety and quality problems while overburdening a machine is a direct cause of breakdowns and defects.
(c) MURA – unevenness is a combination of Muda and Muri. Due to unevenness in production levels, sometimes there is excess capacity(Muda) and at other times there is overburden(Muri).
The seven types of waste are as follows:-
(a) Transportation – moving products that are not actually required to perform the processing is a waste.
(b) Inventory – all components, work in process, and finished product not being processed are a cause of muda.
(c) Motion – people or equipment moving or walking more than is required to perform the processing could be identified as a waste.
(d) Waiting – waiting for the next production step, interruptions of production during shift change is a waste.
(e) Overproduction – production ahead of demand.
(f) Over Processing – resulting from poor tool or product design creating activity.
(g) Defects – the effort involved in inspecting for and fixing defects.
5S is the name of a workplace organization method that employs five Japanese terms: seiri (sorting), seiton (simplifying), seiso (sweeping), seiketsu (standardizing) and shitsuke (self discipline). It is a series of steps taken for ensuring proper organisation, neatness, cleanliness, standardization and discipline in company’s housekeeping and workplace management practices.
The five steps to becoming lean are depicted in a figure and brought out as follows:-
(a) Identify the value – Value can be defined by the ultimate customer who decides about the quality for an affordable prize.
(b) Map the value stream – Identify the Value Stream (the way a Work In Progress – WIP moves while getting value added). This exposes the enormous amount of waste.
(c) Create the flow – Reduce batch size (number of items produced together as a batch) and create flow.
(d) Establish the pull – Let the customer pull the product through the Value Stream. Manufacture only what the customer has ordered.
(e) Seek perfection – Continuously improve quality and reduce cost by eliminating waste for better profitability.
Agile Methodology
Agile Software methodology is a process of dividing software development work into distinct phases or activities with the intent of improving planning and management activities. The Agile manifesto focuses on:-
- “Individuals and interactions over Processes and tools
- Working software over Comprehensive documentation
- Customer collaboration over Contract negotiation
- Responding to change over Following a plan”
The manifesto could be understood clearly by understanding the core Agile values which is brought out in the subsequent paragraph.
Core Agile Values The core Agile Values are depicted in a diagram and the elements are described below:-
(a) Individuals and Interactions – In Agile development, self- organization and motivation are important. Also, interactions like co- location and pair programming should be important issues to consider.
(b) Working software – Working software will be more useful and welcome than just presenting documents to clients in meetings.
(c) Customer collaboration – Requirements cannot be fully collected at the beginning of the software development cycle. Therefore, continuous customer or stakeholder involvement is very important.
(d) Responding to change – Agile development is focused on quick responses to change and continuous development.
Principles of Agile
The important principles of Agile are listed along with brief explanation.
(a) Highest priority is customer satisfaction – highest priority is to satisfy the customer through early and continuous delivery of valuable software.
(b) Welcome changing requirements– Agile processes harness change, at every stage of development for the customer’s advantage.
(c) Frequent delivery of software– Deliver working software frequently, in a couple of weeks to a couple of months, with a preference to shorten the delivery time.
(d) Business people & developers cooperating daily– Business people and developers must work together daily throughout the project to meet the demands of the customers.
(e) Build projects around motivated people– Give them the environment and support which they need. Do trust them to get the job done.
(f) Face-to-face conversation is best– It is the most efficient and effective method of conveying information to and within a development team.
(g) Progress measured by working software– Working software is a more useful measure of progress than just presenting documents to clients in meetings.
(h) Sustainable development pace-The sponsors, developers, and users should be able to maintain a constant pace.
(i) Continuous attention to technical excellence– Prioritising technical excellence and design perfection enhances agility.
(j) Simplicity– The art of maximizing the amount of work which need not be done is essential.
(k) Self-organizing teams– The best computer architectures, IT requirements and designs emerge from self-organizing teams.
(l) Regular reflection & adaptation– At regular intervals, the team reflects on how to become more effective. Then fine tunes and adjusts its behaviour accordingly.
In essence, Agile is about being flexible and responding rapidly to changes in feedback, requirements, and market needs. In order to do that, Lean thinking is necessary, as its principles help promote the environment needed.
A Case Study: Scrum
Scrum is an iterative and incremental agile software development framework for managing product development. It defines “a flexible holistic product development strategy where a development team works as a unit to reach a common goal”. It challenges assumptions of the traditional, sequential empirical approach while encouraging physical co-location or close online collaboration of all team members and daily face-to-face communication among all team members and disciplines in the project as far as possible.
A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need (often called “requirements churn”). Unpredicted challenges cannot be easily addressed in a traditional predictive or planned approach like Waterfall Methodology of Software Development. As such, Scrum adopts an approach which accepts that the problem cannot be fully understood or defined. It focuses on maximizing the team’s ability to deliver quickly and respond to emerging requirements. Lean and Agile share many of the same principles and many Agile principles are borrowed from Lean thinking. The table below amply proves this point.
Basis of Comparison | Lean | Agile | Scrum |
Working in groups/teams | Yes | Yes | Yes |
Iterative and continuous improvement | Yes | Yes | Yes |
Customer Driven | Yes | Yes | Yes |
Waste elimination | Yes | Yes | Yes |
Time Bound | NO | Yes | Yes |
Adaptability to change | Yes | Yes | Yes |
Conclusion
In an era where customer is the King and quality is the mantra, Lean manufacturing is the final solution. But the term “manufacturing” can be misleading. Lean’s application does not lie in the production systems alone. It finds extensive use in software development as well. In times of rapid changes in IT industry, it is essential to have in place an agile and adaptive system that can respond appropriately to customers. Lean in Agile is the perfect combination and SCRUM is a perfect example. Utilising the methodology during IT projects would definitely provide us better products at lesser costs.