Where to Begin Your Transition to Lean-Agile


Start Where the Problem Is
If you want to make a car go faster, where would you start? Maybe you would put in a bigger engine. But what if the problem is in the transmission? Or the parking brake is locked? Or your tires are completely worn through? Of course, you should start where the problem is. The transition to Lean-Agile is no different. Staring with development teams is like starting with the bigger engine—if impediments lie elsewhere, then even if the individual team gets better, overall agility might be less! Even worse, if an Agile pilot project ends up causing headaches for the organization, people will turn against it. Who wants that? And it becomes very hard to try again. Unfortunately, we have seen this many times. It is much better to start where the problems are. Table 1 offers ideas to help you identify problem areas to focus on.

Table 1. Identifying problem areas

Problem area

If any of these are false

Then focus on this challenge area…

Business side

The product management organization maintains a list of prioritized product enhancements.

Product enhancement requests are broken into the smallest pieces that can be released.

The development organization is never overwhelmed by enhancement requests.

Enhancement requests are prioritized individually; they are not released in one package.

Product portfolio management. Create a prioritized list of smaller enhancements, each of which can be released when completed.

Product enhancement packaging. Keep the number of product enhancements being worked on small enough to not overwhelm your teams.

Cycle time. Focus on delivering value on a regular basis with short cycle times so that the business can reevaluate its plans. Focus on the length of your projects rather than interval between releases of different projects.

Management side

Effective teams work well together.

Except for people with truly specialized skills, everyone in the development organization works on one team.

The organization is free of “silos” that separate resources from each other.

Management clearly describes the order in which to build and deliver product enhancements incrementally.

Teams can get feedback from the business and customers quickly, when they need it.

Value. Management must create an environment that supports the creation of value quickly.

Impediments. Many impediments to teams are due to forces outside the team’s span of influence. Management must act intentionally to remove these impediments on behalf of the team.

Team agility

Teams are able to deliver software incrementally.

Teams build only what they are requested to build without adding new features in anticipation of the future.

Code is tested virtually at the same moment that the code is built.

Teams write acceptance tests before writing any code.

Flow. Have teams learn an agile process that is based on flow (that is, the elimination of delays). It could be based on iterations or on kanban.

Cadence. Create a cadence of work that delivers product to customers and gets feedback from them at regular intervals.

Work-in-Process. Ensure that the team keeps the amount of Work-in-Process (WIP) as small as possible.

Test first. Ensure that the teams write acceptance tests for a story before writing any code for that story.

Technical skills

Development teams spend most of their time writing code and working with customers to write requirements.

Teams easily understand how to introduce a feature into existing code.

Testing and debugging takes place throughout the iteration. Testing and debugging is not a major focus at the end of a development cycle.

There are relatively few errors detected during integration testing.

TDD. Teach teams how to do Test-Driven Development (TDD).

Continuous build. Have teams use continuous build and integration.

Design patterns. Teach teams the proper use of design patterns.

About the author

About the author

AgileConnection is a TechWell community.

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