The goal of agile programming is to provide early and continuous delivery of valuable software. But it’s not so easy to implement methodologies that can deliver on the agile promise, and the blame typically lands on people: they’re just not the tech elite.
Agile is an iterative software development methodology, as opposed to the more linear traditional methods.
This iterative approach allows developers, managers and users to collaboratively create the project requirements as they go, as opposed to the traditional linear method where requirements are agreed in advance. Agile is more of a mindset than a ruleset, so it can be hard to implement in a rigid corporate environment.
True, people can be a barrier: agile is a culture, not a process; a box-ticking mentality will make projects look agile without gaining any of the benefits. Flexibility is key and you need your developers, managers, consultants and users to embrace it.
I’ve used agile to manage many successful projects, and transformed a global professional services organization from habitually late and over budget to on time, on budget with great results, all using agile. While many believe that only the tech elite can handle agile, I believe good management can get almost any team to become so.
Here are my four top tips for building an agile team:
1) Empower your users
Agile programming requires frequent, detailed feedback from users. They may be reluctant since they have other more urgent priorities, and they may be afraid that they won’t give useful feedback since this new to them. Nor do they want to be criticized by their peers. Here’s how to handle it:
When users who are burdened with their other day-to-day responsibilities, resist devoting time to investing in giving feedback. The system after all, is designed to increase their productivity and job effectiveness. If they invest now, they will save time later.
Identify users who are able to give and take criticism and create a culture of learning and collaboration, so contributors won’t fear that they will be singled out and blamed if the final result is less than perfect. Remind them that developing systems is an interactive learning process where requirements are discussed and refined as a group, there is no one individual who is responsible.
Introduce users to agile with small, bounded projects so there can be early successes before taking on larger more complicated and riskier missions. As users build confidence in helping steer IT development process successfully, they will provide more valuable feedback, will be gratified for being recognized for their contributions and are more likely to collaborate in the future.
2) Nurture flexibility
With traditional top down project management, everything is defined up front and there is little room for change. Therefore, many successful programmers develop work methods and attitudes that are counter to agile programming. Perfectionism, an inability to pursue a roughly-defined solution, avoiding criticism or not respecting feedback from users can sabotage agile development projects.
Create an environment where developers can feel safe: not only to throw out incomplete work but also safe to discuss areas beyond technology, which they may not understand so well. Having developers meet user champions is empowering for both, and a little communication training can make a big difference.
3) Hands-on managers
It’s not just users and developers who need to learn new behaviors: if anything, there is an even larger change of mindset required from managers who need to evolve from a command-and-control approach to being more hands-on, involved in the project, tracking and monitoring of results.
This is because with agile programming, managers frequently need to shift requirements and make new decisions that were not considered at the onset.
Managers need to consider the interaction of requirements, budgets and time and often merge and adapt various project management methodologies in order to successfully complete projects. The key is to remain flexible and view the methodologies as tools rather than being set in stone.
4) Use consultants wisely
If your project involves third party consultants, you need to ensure that they fit in your agile environment as well. You need them to buy in to your program management, and nurture them to make them feel part of the team. Be aware that common methods of managing consultants can work contrary to agile values.
Don’t let consultants focus on code volume to churn out code that doesn’t match requirements. Watch out for the “I know best” attitude that comes from experience but might make them less open to criticism and feedback.
At the same time make sure that consultants who are accustomed to doing whatever it takes to please their clients and have a tendency to say “yes” to new requirements also know it’s ok to say “no”. Although requirements can be flexible it’s important to keep projects in scope, on time and on budget, rather than adding extra features just because you can.
Agile development requires that everyone be flexible and willing to make adjustments as the project progresses, including users, developers, management and consultants. Therefore rather than requiring a superstar team, I believe that any team can become agile if it embraces this flexible attitude. Success depends on a strong spirit of collaboration with a shared goal of early and continuous delivery of valuable software.
Image credit: Shutterstock