One of the main tenets of Agile development is to empower the development team to make its own choices. This is really important because it helps the developers identify with their projects in a very personal way. It gives them a motivator stronger than any benefits package. It gives them pride in their work. However, letting a dozen different teams take a dozen different approaches to development infrastructure probably isn’t the best strategy. It’s important to orchestrate efforts between teams without robbing individual teams of their autonomy.
It seems like there is a definite inverse relationship there. Program directors have to pick a point on a spectrum between letting each individual team make all their own decisions at one extreme and micromanaging every decision at the other. But this may be a false dichotomy. There may be a central infrastructure strategy that can orchestrate efforts across teams and still let individual teams of making their own choices. Let’s look at one particular organization that’s walking the tightrope between empowering teams to make their own choices and orchestrating large team efforts.
Jason Shawn is the Director of Cloud Services and Platforms at Neustar. Shawn said he has “a mandate to make the lives of both the developers and the administrators in operations easier.” By ensuring that adopting central continuous integration processes is easier than the teams’ current delivery processes, Shawn and his team pull developers into wanting to use centralized resources, rather than pushing reluctant developers into continuous development. Shawn said there are two main pillars to his strategy. One is training and the other is tools.
In terms of training, Shawn said he views his team’s role as liaisons between developers and operations. He stations his team members with various teams to teach the teams what they need to know to hook into the central CI infrastructure. The liaisons start off doing a lot of set up and configuration for the team. Taking this work off of developers goes a long way toward winning their confidence. Gradually, the liaison transitions from doing all this work to teaching both developers and operations players to do their own parts. This keeps the liaison from becoming the team’s bottleneck and prepares the team to carry on when the liaison eventually moves on to the next team.
On the tools side, Shawn is focused on continuous integration and test automation. The continuous integration is based on Jenkins and the test automation relies on Selenium. These were already the tools most teams were using. Shawn said, “Making those two central has played out well and provided more value to the business, in addition to just making development less tedious.” On the back end, Shawn uses a service called DEV@cloud from CloudBees. While Shawn and his team take a lot of menial infrastructure support work off of the frontline developers, DEV@cloud takes a lot of the menial work off of Shawn and his team.
The continuous integration infrastructure Shawn has built up around Jenkins, CloudBees and Selenium is central to his team’s success. It gives them a common core around which they can train disparate development teams to work in concert.