Agile and Lean methodologies are often compared to each other but their origins are quite different.
One developed from a need to improve software processes and the other out of vehicle manufacturing. They do, however, share one very important motivation: efficiency.
Toyota is famous for adopting a lean methodology in the mid-20th century. The company managed to revolutionize its production line and manufacturing methods by eliminating waste.
One of the ways it achieved this was by implementing a process called ‘Kanban’ – which is Japanese for ‘board’ or ‘sign’.
How it worked was simple; when certain components were running low, a Kanban was sent to the relevant supplier or team requesting new stock.
Rather than amassing an inventory of idle parts, components would only be supplied in response to real demand.
This lean approach to efficiency, among others, was embedded in the Toyota culture and led the company to great success.
Its lean management methods have since been widely admired and applied beyond car manufacturing to areas such as project management and yes, software development. In fact, one of the leading Agile tools is called Kanban.
The Agile methodology has pulled several key characteristics from Lean:
Short work cycles: customers are consulted frequently to reduce the risk of developing unwanted or unnecessary code.
Quality: the project is tested at each step, with every sprint or as code is written.
Training and empowerment: teams are encouraged to ‘self-organize’, develop their skills and find their own solutions to problems.
Should your company decide to adopt Agile, it needs to plan for a major cultural change. Implementing Agile successfully won’t happen overnight – it must be applied to all levels of the organization concerned with software development.
A key element of the Agile methodology is that it ‘values individuals and interactions over processes and tools’. In other words, your primary focus needs to be on people and expertise.
This could mean using consultants, training existing stuff, hiring new staff or a combination thereof. Once the right skills are in place and pilot projects have been prepared, your team can decide which Agile tool is best for the company’s needs.
There are hundreds of Agile project management methodologies available but the list can be broken down to the following five main ones.
Here’s an overview of each one, outlining their pros and cons so that you and your software developers can make the best choice for your business needs.
Scrum is the most widely used Agile methodology. Its popularity is due to its lightweight process framework.
The Scrum framework uses development cycles called Sprints and keeps overheads as light as possible by maximizing the amount of time available for producing useful work.
Scrum is particularly good for managing complex software projects and product development. It uses iterative and incremental practices to increase productivity significantly and is characterized by agility.
Unlike the traditional ‘waterfall’ processes that follow a set step-by-step approach, Scrum enables organizations to adjust and meet ever-evolving business goals.
Scrum can benefit your company by:
- Increasing the quality of your deliverables
- Responding better to changing requirements
- Providing better estimates (and spending less time on generating them)
- Controlling the project schedule and tracking its stages.
The only potential downside is that Scrum does not specify exact deadlines on certain tasks.
2. Extreme Programming
Extreme Programming (XP) is often combined with Scrum and is closely related to test-driven development (TDD).
XP takes an engineering-style approach to various aspects of software development and through this discipline, can significantly improve the quality of output.
This methodology is built around the whole team and values simplicity, communication, feedback, courage and respect.
A team of extreme programmers works together closely to ensure consistent coding and to keep the system continuously integrated.
The code they create is constantly being tested and improved to meet current business needs. One drawback to XP is that its requirements are expressed as tests which leaves little room for scalability.
Inspired by Lean management and Toyota’s just-in-time manufacturing processes, the Kanban method takes an incremental approach to organizational systems change.
It maximizes efficiency by organizing chaos and improving the customer experience. It does this by:
- Emphasising priorities
- Giving the delivery teams a clear focus
- Identifying problems in the workflow process in time for a solution.
Kanban places much value in the flow of production. It allows for specific deadlines and is well suited to IT projects outside of software development.
Unfortunately, given its focus on project completion, it has limited capacity to perform retrospectives.
4. Iterative Development
Iterative development is a forerunner of Agile in that it evolved from the traditional waterfall method.
The difference being that with iterative development, coding doesn’t begin until each phase of the software application has been reviewed, and testing doesn’t begin until the coding is complete.
Essentially, iterative development takes a large software development application and breaks it down into smaller chunks, designing, developing and testing in repeated cycles.
With each iteration, additional features can be applied and tested to create a final software application that is ready to be deployed according to customers’ needs.
While iterative development is easy to combine with aspects of the waterfall method, there is no set way to do it which makes it unideal for inexperienced teams.
5. Lean Development
Lean software development is a direct application of lean manufacturing principles to software development. It’s easy to adopt in workplaces that are already using Lean Management techniques.
However, it’s method has only been adopted by a relatively small community in the software world and is yet to gain wider traction. The seven key principles of lean software development are integral to achieving efficiency:
- Waste elimination
- Built-in quality
- Knowledge creation
- Fast delivery
- Optimised production processes.
Applying an agile methodology to your software development processes helps create a flexible system that can move with your customer’ requirements.
These methodologies don’t plan everything in advance, but rather build on each step of the process independently.
Agile was formed from the same thinking as Lean management which emphasizes the importance of people in achieving efficiency.
Get the right team on your side and your company will be able to choose the Agile approach that is best suited for your organization.