I have had a long discussion with my colleagues about team level practices vs. enterprise level lean. We have now practiced and lived almost two Years of Scrum, Kanban, Scrumban, Scrumbut and other Agile related practices in different teams and setups. Now we are facing new set of challenges and actually the real hidden gems Agile is giving, are just at this moment very visible and revealed. How to make big releases, how to make business models, how to organize the environment where teams work, how to….
I truly believe that Scrum can work (and has proven to be working) on team level and when added with some Agile and Lean thinking can be somewhat powerful. Unfortunately most of the discussion around Scrum (or Kanban) has started with the top-down or bottom-up implementation debate. The essence of needed discussion has not been fully targeted to the real question: what are the things and guiding principles you need to add to basic team level agile methology to make it a great success on enterprise level? How should we address these issues?
When looking at enterprise (>500 people in the operations) Agile and Lean principles apply to great extent as they apply on team level. But when you look at 5000 people organization from top, the practical meaning for those principles is somewhat different compared to a developer in a team. Continuous delivery is connected to roadmaps, not 1-2 weeks iterations. Business models and politics are all the time on your table. You are responsible of million dollar business and are measured against that. Not something you face in a team retrospective? This does not mean that we should not address “see the whole” on all levels, but the whole is different depending where you look at it.
I have come to a conclusion that when whole enterprise starts to move towards Agile the only sufficient way to go forward is to apply flow-based processes and methods on all levels. This means different things on team, program and roadmap levels. Short iterations are good and should not be abandoned on team level but moving away from stage-gated business models is also needed from corporation point of view. If you pile up your releases in 1-2 years queues it is almost impossible for the teams to achieve true Agile approach. If organizations just stick to team level practices and wait for the agile to happen on business layer it might become just too hard.
For us, who are lost, I have here listed some of the practices that support enterprise level Agile and Lean to realize its full potential.
1. Continuous Integration on Solution level -> Continuous Deployment
When applied correctly CI gives us the answer: always shippable products. It also gives feedback to developers and business. When done on solution level, it opens up the possibility to deploy often and delight the customer.
2. Acceptance Test Driven Development
Do not get lost on the requirements. Define your requirements as test cases and refine them with business, developers and solution level experts. This creates common goals for the enterprise.
3. All testing are done parallel, all the time
From Unit Tests to Solution Level system test. Do it all the time. Create solutions in a way that testing is guiding your development. And when it gets done, it is really done. Automated tests are your lifeline for the future as well.
4. Agile Release Planning
Create natural rhythm for your business. Plan for short releases (1-3 months) and order your backlog accordingly. You may combine these releases for the roadmap if needed.
5. Small batches to support the flow
Small batch size makes it easier to control the flow. Use Kanban or any other method that helps you to understand queues, resource utilization and removal of correct waste.
6. Agile and Lean Coaching on all levels
Grow people in the organization to understand, challenge and discuss. This is the real source of learning and improvement. Use these agents on all levels of organization.
To sum it up: Agile is about business models and principles but luckily there are lot of technical practices and methods that support business agility to happen.