Matthew Schenck is an enterprise solutions engineering manager at Atlassian.
Is the federal government truly ready to embrace agile software development?
Every time we think we have a definitive answer, another wrinkle presents itself. For example, the Homeland Security Department canceled its billion-dollar FLASH program, designed to award contracts to a set of pre-approved agile vendors. The program not only aimed to increase DHS’ investment in agile processes; it also took a more agile approach to procurement, removing much of the oversight and hurdles typically associated with the contract process. The move to cancel the program seemed to bear out the sentiment that achieving true agility within the federal government is still hard.
For agencies that have never done it before, the transition to agile software development can be hard. We tend to think first about the types of solutions we need to procure to solve a certain problem.
However, successful agile environments do not start with technology; they start with creating the right team. This can be harder than it may first appear, because agile challenges preconceived norms of how federal IT teams should be structured and the way they approach projects. Agile teams are typically a combination of individual contributors (particularly those from development and quality assurance backgrounds) who rarely work together but must now collaborate to achieve common goals.
Agile is also significantly different from the highly structured “waterfall” development methods, and agencies must match team members’ personalities and strengths to fit the new model.
With agile, the work is broken into smaller pieces and the status of projects becomes completely transparent. Information is shared more frequently, and teams need to be ready to react to changing needs and challenges. Gone are the days of teams working through non-iterative processes that involve coming up with intricate requirement documents and delivering applications nine months late. With agile, it’s all about speed, adaptability and collaboration—all for the sake of accelerated and better application development.
Agile development’s “outside-the-box” mentality calls for a different approach to team building that can take agency managers outside their comfort zones. To help ease the transition, here are some suggested strategies for building agile teams destined for success.
Think beyond technical qualifications. The first thing hiring managers normally think of when seeking developer candidates is “what’s your coding and technical background?” That’s an important question, to be sure—but building an agile development team requires going well beyond this and probing what other qualifications a prospective employee may possess.
Instead of just focusing on their development history and projects, delve into their personal work experiences. Ask about how they worked together with past team members, and the role the candidate played in that environment. Gauge whether they have experience working in an agile environment, and how they feel about working in that type of atmosphere. Go past the technical experience to see if they are a good cultural fit for the team that is being created.
Look for people who can say “I don’t know”—but are willing to learn. Engineers are often loathe to admit they do not know the answer to something. That can be a problem in an agile environment, where a large part of the work involves learning from mistakes and working with other people with equally strong opinions. A person who says, “I don’t know” is someone who is willing to accept others’ ideas, learn as they go along and ask for help if they are unsure about how to handle something.
Hiring someone who is OK with admitting they don’t have all the answers accomplishes several things. Teams avoid spinning unnecessary cycles over mistakes made purely out of ignorance or unwillingness to admit errors. As a result, they are unlikely to miss development commitments. There’s also a much better chance that the finished product will be free of vulnerabilities or errors.
Continuous mentoring is very important to the success of agile development teams. In fact, the notion of agile comes from the concept of consistently getting better cycle times and higher quality. That’s why teams practicing Scrum, the popular agile development framework, engage in end-of-development retrospectives, during which pertinent questions are asked—how many user stories did we get done, what can we do to make sure we are working effectively and more. It’s important to hire individuals who are open to criticism and willing to learn, so the team can achieve better results next time.
Focus on transparency. Agile development thrives off of transparency. All team members must be able to see where workloads stand at all times, and individuals must be ready to share their theories on the status of their projects.
For example, scrum incorporates frequent daily stand-up meetings. These are short, highly focused meetings designed to keep teams on task. Standups help provide daily transparency into the development process, so all team members, whether they are onsite or working remotely, have a good sense of their project’s status. Standups help keep team members honest and the discussion they facilitate can identify obstacles that may be impeding development.
Each of these points is important in achieving the right mix of team members, which is particularly critical for agile success. Teams that work well together tend to have lower turnover, better throughput, fewer bugs and a better percentage of commitment to delivered velocity. In other words, they produce better products in line with what their customers are requesting.
Here’s the good news: It is increasingly difficult to find people who do not want to work in an agile development environment. Many of the new employees coming into agencies have already been nurtured in agile ways. It’s what they know, it’s how they work and the talent is there. The trick is to find the right combination of talent that will allow a federal agency to truly unlock the potential for agile success.
Still, it’s important to remember agile is not a silver bullet. Even with agile, failure remains possible. The key to increasing the odds for success in an agile environment is iterative development mixed with a customer-centric culture.
Is government lagging here? Possibly. But it’s also showing a stronger commitment to agile than ever before. Although the FLASH program may have failed to fully launch, other efforts, such as those undertaken by the Government Accountability Office, are thriving. That leads one to believe despite challenges, there is a bright future ahead for agile development in the government space.