7 Common Mistakes in Agile Software Development
Agile software development is a set of values and principles that influence development practices. It’s an approach that leads to better software development that, once understood, is surprisingly flexible.
However, Agile doesn’t necessarily work well when people are on different pages. A developer might have a clear understanding of Agile, but a manager may not, and the way that developer is managed may actually undermine the developer. Furthermore, you can imagine issues arise when entire departments have different viewpoints on Agile development.
A lack of consistency amongst different departments is one common mistake from companies doing Agile development and there are many more that hinder the quality, efficiency or success of Agile projects. Below we will identify these common mistakes to help you avoid them. We will also comment on solutions, but really the solutions are all in Agile’s values, principles and manifesto—issues occur when the foundation of Agile isn’t understood. Let’s get into it.
- Not Valuing Customer Collaboration
Many groups still do not give enough consideration to customer input when deciding project designs. One of Agile’s core values is ‘customer collaboration over contract negotiation’ and we need to pay attention to it. Sometimes teams do not consider customer information due to previous project failures that overly-relied on customer input. Customers can have a very limited frame of reference and don’t always provide information that will make them want to purchase a service. The place where this goes wrong is usually in the sort of customer feedback we seek: customers are often poorly-equipped to make design decisions or other technical matters, but we ask them questions like “what sort of product do you want?”
They don’t know. Instead, customers should provide outcomes, i.e what they want the software to do for them, “I want this application to save me time.”
- Lack of Internal Engagement
Agile development practice prefers teams to engage in face-to-face communication. However, remote workers (permanent or temporary) are very common in modern development companies. This can pose challenges when discussing the most important parts of a project, —communication windows can be difficult to come by amongst different time zones. You also don’t get to build that rapport and informal freedom that teams gain when working in close proximity.
One solution here is to establish a modular structure amongst different remote teams. This minimizes a teams’ reliance on each other and helps isolate points in a project where integration is necessary. Another vital aspect is the distribution of code reviews between offices. Reviews need to be regular and thorough, which lets a company identify and resolve project issues with minimal fuss.
- Inconsistent Agile Training
As stated earlier, companies run into problems when members have different levels of understanding of Agile. This is often the result of the company itself not providing adequate training, which usually also means a company can be lackadaisical in explaining their own methodology to newcomers. Inadequate training means roles become undefined and tension arises when people either cannot see the value or provide varying amounts of value to Agile development.
- Departments Are Out of Sync
The tenth principle of Agile development is ‘Simplicity’. However, solutions aren’t simple when department are out of sync. This mistake often occurs with departments working in different timezones. This can make communication windows hard to organise, disrupting a consistent development pace and undermining your self-organizing teams.
- Not Valuing Reflection
The twelfth principle of Agile development is ‘regular reflections on how to become more effective.’ Without reflection, teams lose flexibility and end up applying previous strategies that won’t suit new projects. Agile development companies who actively look to increase their efficiency and quality are those who survive in such a competitive industry.
Often, reflection is most valuable when project managers or product owners are not present. Developers can speak more openly without these individuals, especially if critiquing a decision by them.
- Unmotivated Team Members vs Overload
Motivated teams will produce quality work, unhappy teams will not. Simple enough, but what causes teams to be unmotivated?
One common reason is that a scrum master takes too much control of a project and begins to also become a project manager. They begin to decide how much work will be done by the team, promising unrealistic deadlines and causing their developers to quickly burn out.
In other scenarios, changes will be made to a sprint, during the sprint. This results from a higher authority claiming that a new task or fix needs to be completed right away and giving the developer no choice but to comply. In other words, managers are using Agile development as an excuse to make ridiculous demands, and this has led to developers working unhealthy hours.
Teams work best when they’re respected and have freedom within their self sufficiency. When scrum masters start to abuse their positions, the team quickly falls apart. Nobody wants to work for someone who is willing to trample on their team to make themselves look good.
- Agile Principles Aren’t Supported by the Organization
This is a surprisingly common mistake, it makes you wonder why a company chose to implement Agile in the first place. If a company’s culture conflicts with the values of Agile, development is doomed from the start. Really, this mistake is the overarching cause for all of the mistakes listed above.
Agile values and principles are worth fighting for and, once they’re acknowledged by your organization and team, you’ll enjoy your work a lot more. If you’re a developer encountering any of these issues, be stubborn in having a reflection session and bring up your concerns, encouraging others to do the same.
Avoiding Companies That Make These Mistakes
If you’re a customer, it’s good to be aware of common Agile development mistakes, so you can collaborate with a company that doesn’t tolerate them. But how do you know what company to pick?
It’s important you prepare for a consulting session with a development company. You want to cover all the usual: pricing plans, communication windows, previous experience, project privacy and deadlines. Many companies will claim they implement Agile, but whether they mean it or not is something different. It’s important you ask “how does Agile influence software development at this organization?” The answer should show a clear understanding of Agile as a set of values that provide flexibility, rather than a set of rules that restrict practice. They should also comment on how Agile works specific to their company: are they a remote team? How are their teams structured? Is their management style more top-down or outside-in?
Of course, there are some other important metrics that aren’t directly related to Agile. Customer satisfaction rates, years of industry experience, the quality and activeness of their job portfolio. One company that has gained global success and refined their approach to Agile software development is CodeClouds. They provide services in a range of popular platforms and frameworks. If you’re for a company that implements agile development methodologies for your next project, they’re a trusted choice.
The success of Agile is not only dependent on the development company, but is also influenced by the relationship between the customer and the development team. If you’d like to learn how to best work with Agile software development, read this piece on facilitating developer productivity.