Interest in Agile development methodologies has increased dramatically in the past decade and has resulted in the increase of training, certification exams and conferences plastering the term on every form of marketing material available and has certainly bolstered the appeal of delivering usable software in a reduced timeframe for less cost. Companies serving both private and federal customers have been jumping on the proverbial bandwagon, doing their best to convince both their customers and their development teams that Agile is the secret ingredient to working smarter and faster but not harder. Add Agile to your development lifecycle, and your end product will seemingly be better as a result. But what does that mean exactly? Many customers and practitioners don’t actually know the answer, which has led to poor implementations and Agile getting a tarnished reputation in some arenas. Dovel’s experience with transitioning from waterfall to Agile has provided us with insight into how to improve Agile projects that face implementation and restructuring challenges. Dovel has raised the bar on how to deliver software using Agile methodologies, which has resulted in a stronger rapport with each of our customers and a higher level of customer satisfaction overall. Some of our insights are discussed below.
Be patient and don’t rush
This may feel like a step back or a slow start, but when beginning an Agile project, it is important to understand why your customer chose Agile as the desired development framework. Before jumping into a business requirements discussion, get a feel for their past experiences and don’t immediately assume that they are as passionate about Agile methodologies as you are. Customers may have had development experiences that they want to replicate, and Agile implementers are best served by uncovering what it is exactly that worked so well. Perhaps there are some tasks that didn’t go so well. Remember that even some Agile loyalists are frustrated that they received only part of the promised manifesto. Maybe a customer received usable code quickly, but it wasn’t exactly what they wanted or imagined. Perhaps they were panicked during the entire process because documentation expectations weren’t appropriately set. Or maybe the process took longer than expected because the thought of the time commitment required with the review process was especially daunting. Agile is a process of understanding and improvement. Your first goal here is to understand your starting point and begin building a relationship of trust that will be the stable foundation for meeting and exceeding customer expectations.
Understand customer needs first
Building upon your initial baseline of why Agile was selected as the desired development framework, take a moment to uncover your customer’s understanding of Agile. It has been Dovel’s experience working on numerous projects supporting a variety of customers that understanding of Agile methodologies and concepts varies. Dovel has learned that it is our job as Agile practitioners to know and understand our customers, their business needs as well as the methodologies available and use this knowledge to educate, plan and execute Agile projects to successful outcomes. Key questions to gain insight into customer needs include:
- During the project, will the development team be in the same location as the users?
- Will there be multiple stakeholder groups or just one?
- What is their meeting and feedback availability?
- What is their general level of agreement and responsiveness?
- Are there multiple levels of management above them that could hinder decision making?
- How large is the project(s)?
- Are requirements expected to be volatile changing at a whim or more stable once agreed upon?
- What are their documentation requirements or expectations?
- What metrics if any will they require?
These are all important questions that need to be answered in order to appropriately set expectations and build a trusting rapport. Some of the potential consequences to not answering these questions early on include project restarts, lack of understanding leading to poor implementation and no leeway in development stemming from lack of trust from a customer. Each of these is extremely costly so putting in the effort up front is well worth the time to reduce risk.
Understand the methodologies that can be used in support of running an Agile project
Agile is a framework comprised of several software development methodologies, guided by a core set of principles used to rapidly develop anything from stand-alone products to complex systems. There are several methodologies included under the Agile umbrella that can be adapted in various degrees to increase project agility. SCRUM and Lean are two of the more popular methodologies that don’t specify technical practices but do support the other Agile technical practices. Feature Driven Development (FDD), Extreme Programming (XP) and Test Driven Development (TDD) are three such methodologies that do specify technical practices and work well with SCRUM and Lean. Understanding each of the methodologies’ strengths and weakness early on in the project has enabled Dovel to appropriately plan the overall engagement and set customer expectations.
Know your team
Through years of Agile implementation, Dovel has learned that team experience level, size, synergy and distribution are all important factors in choosing appropriate methodologies. For example, XP works well for experienced developers who need less technical mentoring, who are co-located, part of a small team and have been working together over the course of several projects. The quick, two-week cycle of development through deployment is made possible through the use of pair programming, continuous integration and test driven development, which are challenging practices to master. SCRUM and Lean share similar development concepts but have less need for face-to-face interaction reducing the co-location requirement. They also employ less rigorous principles that are easier to pick up for those new to Agile. Knowing your team’s experience both individually and collectively and aligning Agile methodologies accordingly greatly reduces the risk of over-committing the team, which can lead to burn-out and not delivering on customer expectations.
Avoid rushing implementation, providing small changes and early “wins”
After choosing which methodology or blend of methodologies to apply, Dovel first selects features of the methodology that our customer values most, and we make it a priority. Sometimes the customer highly values transparency and appreciates frequent feedback, in which case we would focus on informative communication. Other times there may be concern over long meetings, in which case we would make it a goal to keep tag-ups to between 15-30 minutes. Once we’ve achieved our first goal and maintain it consistently, we tackle the next, gradually moving towards more complex tasks to further demonstrate Agile’s benefits, building a solid rapport for the years and contracts to come.
Regardless of the initial hurdles with Agile implementation, know that Agile is still the answer; however, it is not a one size fits all solution. Agile is an iterative, continuous improving process. Proper implementation of the appropriate methodologies takes time and patience and several cycles of trial and error. Make the effort to listen and understand, and your customers will thank you with partnerships that will last for many years to come.