In my journey working with different Agile teams across a variety of businesses, I have learned that no new Agile teams start practicing Agile with all of the resources available to them. Even at very large organizations that invest heavily in their infrastructure and tools, teams are often launched without a lot of planning and analysis of needs. As a result, I have encountered many teams that ask me the following questions:
- “How do we know if we are ready for Agile?”
- “What are the basic requirements for an Agile team to begin applying Agile practices?”
- “Shouldn’t we improve in our basic engineering practices before we try this new thing called ‘Agile’? Wouldn’t this give us a better chance for success?”
How “ready” does a team need to be prior to adopting Agile practices is a very subjective topic. Some Agile experts believe that a team must be able to demonstrate a strong command of fundamental engineering practices before attempting to adopt Agile, while others believe that such practices can be learned and implemented incrementally over time. I believe that the perspective is often driven by organizational culture and sense of urgency that are specific to that organization. For example, if an organization is a start-up company that is in desperate need to release working capability to the market in order to secure funding and keep its doors open, the sense of urgency will likely be high and desire for sound engineering practices will likely be low.
Some Agile experts believe that a team must be able to demonstrate a strong command of fundamental engineering practices before attempting to adopt Agile, while others believe that such practices can be learned and implemented incrementally over time.
In my view, I believe that in most cases, I have a tendency to recommend that any team can start its journey towards Agile excellence regardless of where they currently stand as pertains to engineering maturity. Below are a few reasons why I am usually (not always!) more inclined to launch an Agile team sooner rather than waiting.
- The team will need to iteratively improve their practices, no matter how mature they believe they are. In my experience, the majority of teams that I have worked with are mediocre when it comes to basic engineering practices such as code quality, implementation of coding standards, ability to produce software builds with consistent quality, ability to identify and resolve defects in a timely manner, ability to conduct timely code reviews, etc. This is not a criticism of the teams, but rather, an observation that most teams don’t have very high level of discipline simply because the delivering working product is often valued more than product quality. Many organizations instill a sense of urgency for “meeting a date” due to market and competitive pressure, and that is completely understandable. However, this often means that product teams usually compromise in other areas of their processes.
- Teams need time to learn and implement tools, which will not happen overnight. Even the most mature teams will likely need time to learn a new tool and discover new ways of using existing tools that are more aligned with iterative, incremental approach that is foundational to Agile development practices. Practices such as Continuous Integration, Continuous Delivery, Automated Testing, Automated Security Scans, etc., need to be deployed in order for an Agile team to be fully-optimized. All this work requires significant effort and time, and there is very little benefit to delay the launch of the Agile team because these components are not yet available.
- Teams need to learn how to operate within the Agile construct as early as possible in order to establish a continuous learning mindset. One of the key skills that technical workers need to learn is “inspect and adapt”. Often times, even the most intelligent and skilled technology workers have a tendency to forget about the past because they are so focused on “the next big thing”. Learning to reflect on past successes and failures/challenges is an important aspect of Agile engineering that will take time to master, and the sooner that the team can start practicing effect Retrospectives, the better positioned they will be in overcoming complex issues.
So, is it possible to launch an Agile team without ANY technical practices? My response would be “yes, but the results may not meet your expectations”. Many organizations still see ‘Agile’ as the silver bullet that will solve all of their problems. In reality, Agile practices are not intended to be the cure for all issues, but rather, it will bring forth your dysfunctions more quickly and earlier in the product development cycle so that you have the opportunity to address those issues if you choose to. Agile does not replace sound engineering practices, but augments them.
As for the question of “Can your team be Agile without technical practices”, my view is that in order to fully realize the benefits of Agile development, you should seriously consider at least some of the basic practices mentioned previously to optimize the flow of value that your team is delivering to the customers.
My advice to any teams that are interested in improving how work is done: Start where you are, continuously inspect and adapt, and learn to celebrate small wins. If you follow these steps, over time, your team will be on the right path towards Agile excellence!