Agile, Lean, or Something in Between

[article]
Summary:

Agile, and more recently lean, have dramatically shaped the landscape of software development practices. The reason is simple, they both promise to deliver higher quality products to the market faster. In this artilce, we examine some of these agile and lean promises separately and explore when one set may be a better fit over the other or how they may be combined.

Agile, and more recently lean, have dramatically shaped the landscape of software development practices. The reason is simple, they both promise to deliver higher quality products to the market faster. In this artilce, we examine some of these agile and lean promises separately and explore when one set may be a better fit over the other or how they may be combined.

Overview of Agile
Although agile is fundamentally a value and principle-based approach to building software, the vast majority of agile practitioners and methodologies apply an iterative and incremental approach. These time-boxed iterations are commonly implemented with the very worthwhile goal of receiving continuous feedback and direction on the software features being produced. This maps nicely to the agile values of Working Software, Customer Collaboration, and Responding to Change.

With this in mind, agile practices tend to define value as something that is demonstrable to the customer. Features are prioritized by the business, but it is not often in the context of what can generate revenue. Therefore, a production release only happens when the sum of the features delivered in all iterations are deemed high enough quality as a whole.

Popular agile practices have emerged in the area of release planning, such as producing a product backlog, relative estimation, velocity, etc. All of these serve as tools that can help determine constraints on a project - timeline, budget, and feature sets - in a quick and effective way while maintaining the ability to adjust when needed.

Overview of Lean
Lean has a much longer history than agile. It is an accepted and widely used approach rooted in the manufacturing industry and has since been adopted in many other industries. More recently, it has gained significant momentum in software development. Given the relative newness of lean techniques and practices in software development they are not as well understood as those in the agile space.

Like agile, lean is a principle-driven approach. Its principles are focused on building better products with higher quality and getting them to the customer as efficiently as possible while generating the least amount of waste. None of this contradicts the values and principles of agile.

Kanban is a lean approach gaining wider acceptance and understanding in the software development community. Those applying kanban do so in a purely incremental manner. The notion of a time-boxed iteration is dropped in favor of completing a saleable and meaningful piece of functionality as soon as possible.

Kanban challenges practitioners to identify the smallest, most important features that have economic value to the business. These items form a lean backlog and are commonly referred to as Minimally Marketable Features (MMFs). These are analogous to agile features or user stories but are different in the qualification in that they can typically generate revenue independent of other features.

As a rule, an MMF will be worked through to completion before the next is started. Delivery of business value occurs with each increment and therefore a return on the investment can be realized much sooner.

A lean backlog is kept very short and intended to ensure that there is an optimal amount for work in the system. This helps reduce the waste from premature discussions and plans for features that are beyond the horizon.

These techniques and approaches can eliminate considerable waste in upfront and repeated planning through the life of the project. This is all in accordance with the fundamental lean concept of Just-In-Time (JIT). JIT aims to meet market and/or customer demand in the fastest way possible. Therefore, it is particularly amenable to more fluid environments where change is quite pronounced as well as those that do not have the constraints of a more defined product backlog or timeline.

Lean or Agile
So when should you apply Agile or Lean? The answer depends on your team, product, and organization. 

Your Team
If your team has never attempted an agile methodology (i.e. Scrum) you should probably start there before attempting Lean. Concepts such as self-organization, team commitment, and retrospectives are easier to implement with the arbitrary time-box of iteration. Teams new to agile or lean need some time to understand how much work is reasonable. Since agile is more widely adopted in software development, there is a much broader knowledgebase and support available for these teams.

The Product
For new product development, agile is likely the best approach, as it is helpful to generate a wide breadth product backlog of user stories. This helps to frame everyone’s understanding of the product. Early in a project, it is often very difficult to identify and produce features that can be sold independent of other items in the backlog.

Once a critical mass of functionality has been built and released, it becomes more practical to add incremental features and functionality that can generate revenue. Therefore, a new product may start out agile and, as it matures, transform into a lean approach.

If your product is already in the market, and you are in a regular production enhancement mode, a lean approach may be best. This is more akin to production line management, where lean has its roots.

Organizational Considerations
If your business, organization, or product is subject to radical shift and change in direction, a lean approach might be effective. This may be commonplace in environments with volatile markets. Some examples could include a financial trading application reacting to market fluctuations; a start-up product trying to be first to market; or an Internet company adapting to a fluid customer base.

If, on the other hand, your organization requires a more defined scope in order to facilitate funding and resourcing, agile approaches may be more suitable. 

Final thoughts
Agile and lean techniques provide excellent frameworks, practices and complimentary sets of values and principles to help you be successful with software product development. They should both be important elements of your toolkit when planning for a successful project.


About the Author

Don McGreal is the Director of Learning Solutions at Improving Enterprises, a software professional services firm in Dallas, TX, and is co-founder of TastyCupcakes.org, a collection of games for accelerating the adoption of Agile principles. An active member of the software development community since 1995, Don is a popular speaker, agile consultant and trainer. As a consultant and Certified Scrum Practitioner, Don has fulfilled many roles while ensuring that the clients get the most from each engagement: developer, architect, business analyst, process coach, and mentor. As a trainer, he has authored and taught classes in requirements, architecture, design, and process for thousands of software professionals around the globe.Connect with Don on LinkedIn . Follow Don on Twitter.

Tags: 

About the author

CMCrossroads is a TechWell community.

Through conferences, training, consulting, and online resources, TechWell helps you develop and deliver great software every day.