This post is one of many from the series of Stuck Fermentation – Converting to Agile Stalls and it will focus on helping you address ownership and process issues by leveraging SOA based principles.
In order to be truly successful in Agile, you must have a feedback loop that enables you to validate whether or not the software you are building is meeting the mark of the end consumer. The most ideal situation is getting access to the actual end consumer of the software. The less translation layers the better!
If you can’t get access to the end the consumer, you have to rely on the next best thing – a very capable product owner who can accurately convey the needs of the end customer. Without this, you run the danger of writing software that can change rapidly based on the product owner’s direction but ends up missing the mark of the end consumer anyways.
Even if you have a good proxy, you have to be able to release software frequently enough so that the end consumer gets their hands on it. No matter how great your proxy is, as we all know, communication in verbal or written format never replaces working software and hands-on feedback.
So… what happens if you have to integrate your agile work with systems that don’t follow the same release cadence or the same methodology? What happens if your current system isn’t modularized enough to enable loose coupling? What happens if you don’t have the ability to deliver production quality agile driven software independently of the systems you are integrated with?
Unfortunately for us, all of the items just listed haven’t been solved yet. We are trying to come up with solutions as fast as possible but in our case, we ran out of time and were forced to adhere to a joint agile and waterfall release cycle. We shoot for two agile releases within a single waterfall release. The last embedded agile release has to stop three months prior to the waterfall release in order to allow for sufficient time to test the agile and waterfall together.
We have not lost sight of reaching a point where our agile software is mature enough to release into production independent of our waterfall code. Unfortunately, it’s pointless for us to fight this specific battle until we actually solve the issues that would enable us to deploy into production after a release even if we weren’t embedded within a larger waterfall release cycle.
Before we fight the battle of being able to release agile software into production without the waterfall timeline constraints, we must
- Modularize – we can’t be constrained by the systems we integrate with. Being tied to a downstream waterfall system on a completely different product life cycle forces us to comply with the weakest link
- Dedicated Teams – you must leverage team members that are dedicated to the effort vs. team members that can quickly be pulled off for other efforts. More often than note, this tends to be QA resources because in a waterfall world, resource planning occurs really far in advance. Switching to agile is often driven by the development organization so resource dedication generally gets solved in development first.
- Environments – we must have the flexibility to test our software rapidly and repeatedly. This includes the ability to test integrations at least partially through stubbed out interfaces and effective test harnesses. With a lack of mature deployment and configuration process, you suffer long environment ramp-up cycles that inhibit your ability to effectively reach done, done, done
- Quality – the entire agile release train must embrace the concept of done, done, done. Our goal is working software – that includes development, unit and functional testing automation, documentation and product owner acceptance. Not reaching this level of quality forces you to carry technical debt into subsequent release cycles
- Team Commitment – everyone is responsible for the items I just mentioned. Not just a few developers or the scrum master or a tester. Everyone must stand behind these important concepts. If you don’t have access to QA resources or documentation resources, don’t sacrifice quality. Sacrifice scope in order to force the right difficult discussion on dedicated resources vs. being hampered by a side effect conversation on quality. Most importantly, the leaders sponsoring change must believe in the same team commitments. This leads me to my final point
- Leadership who Understands the Big Picture – If you think switching to agile initially is hard, realize that staying agile is 10x harder. After the newness of a new process wears off, people start to revert back to their original safety nets. Only certain leaders embrace the ever changing industry and are therefore willing to stay abreast of recent trends. These types of leaders reach out to the industry for answers because they embrace change and they embrace the fact that they don’t know everything. Other leaders will start to make process changes based on what they previously knew. Recognizing you don’t know what you don’t know is critical trait of a leader embracing agile
The morale of this story is three fold…
- If you strive to be agile, beware of all the complications that will prevent you from becoming agile
- If you falter, choose your battles wisely – there is always a time and it’s best to lose a battle vs. losing the war
- Transformation takes time – especially at scale. Recognize that upfront or you will end up frustrated each and every day you go to work