Lean-Agile: How to maximize Flow
Applying the principles and practices of Lean and Agile product development has naturally evolved in a way where neither set of principles really works without the other. Thus, the reference to Lean-Agile as a set of practices and principles that always go together at Getty Images.
When I think of the primary value of Lean, it is its focus on Flow. And when I think of the primary value of Agile, it is feedback. Combine continuous flow in the system with regular feedback all along the way, you establish a wonderful mechanism for delivering exactly what your customers and business stakeholders want, with the best time to market you can achieve.
Today, let’s examine the concept of maximizing Flow. What exactly does this mean in terms of software delivery? Flow is the elimination of wait time at any point along the way. Let’s say a business owner thinks we would make more sales by adding autocomplete to our search keyword entry. Well, it’s just an idea at this point. At the very least, it would require the business owner to sit down with an available software developer, and pay her to write code for this feature. The business owner would tell her what the feature needs to do, have the software developer write the code right then, and then immediately move the feature to the live site. That is the purest example of the flow of concept to cash, from idea to paying customer.
But in a company of more than two people, it’s not that simple. Who’s to say the company wants to spend money on that feature? Who’s to say it wants to spend money right now? And how does the business owner know that his approach is the one our customers will love the most, and that there will be a developer (or developers) available? You get the picture.
And therein lies the world of stopping flow, and waiting.
So the business owner writes a document to communicate the ROI of the idea and a meeting, or several meetings, are called to discuss ROI – wait time. Its determined the ROI is worth it, so they call another meeting with the development team to ask to get it done — wait time. There are 3 other features deemed more important to the business ahead of autocomplete that haven’t even started – wait time in line.
Finally, alas, the keyword autocomplete feature gets prioritized and pulled in to a team of developers to code and test. But that unleashes a whole other string of wait time:
- What does the UI look like?
- The dev teams work with UX teams who work with our customers to come up with the right usability scenarios.
- What happens when there are two ambiguous keywords in the system – which comes up in the list first?
- The product owners on the team work with the business Program Managers to iron out these functionaly details
The wait is over! (or is it?)
Now the teams are actually finally writing code. Recall in our utopia situation, that happened at the beginning, when the business owner sat down with the developer to tell her what he wanted, and code it right there. During code, the feature needs to be fully tested to ensure, when it is deployed on a site such as GettyImages.com, it doesn’t break anything and accidently stop the cash register. There is a team of six working on it because of its size. They need to communicate with each other as to who is doing what and how they go about building it. Then…Woo Hoo! Its done! Not quite… Now the code must move from the development and test environments to the production environment. That requires more testing, ticketing systems and meetings … And at last, autocomplete for search makes it into the use of our paying customers in production. Hooray!
None of the preceding flow is wrong. It’s all actually necessary, and the larger a business is, the more steps there are out the door. The key is to maximize flow by reducing the number of wait points, and reduce the wait time within those points, all along the way. The way to achieve this unfolds in the lean concepts of making everybody’s work queues visible, limited and small, and ensuring all teams’ priorities are aligned.
It also involves the concept of looking for waste (anything that doesn’t add direct value to the business or customer) and eliminating it.
For example – if something can be done via face-to-face communication over taking the time to write it out, do it. If a meeting can be eliminated by business owners talking directly with the teams, do it. If testing processes can eliminate the need for manual handoffs through creating automated tests, do it. This, is the lean concept of maximizing flow.
There are hundreds of ways to speed up flow in the process. The key is getting the entire business to think this way and work this way as a whole.