At Rackspace, a managed hosting company that has grown to serve more than 14,000 customers in eight data centers since forming in 1998, process innovation that enables better development is a top goal. It's through Agile development that the company strives to achieve that goal.
What is unique about the development task there? The company's business is built around deploying thousands of devices in its data centers, said Dirk Elmendorf, co-founder and chief technology evangelist at Rackspace. These must be provisioned correctly, and that is a unique problem.
"Managing all the information, and knowing they are serviced properly -- it turns out that it's a big problem," Elmendorf said.
The task of managing tens of thousands of devices can be viewed from different angles. From one point of view it is an enterprise-scale problem, Elmendorf said. But it can be looked at another way: Single devices may run for a single customer.
"Small business software does not work for us because it does not scale, he said. "But big software does not work either."
That means the internal software development team is busy and getting busier.
Elmendorf's Rackspace group started out on the Agile path because Elmendorf liked the philosophy underlying the Agile Manifesto.
"We developed software, and we tried traditional methods -- what I learned in school. You build from a big plan. But we didn't get results that were very satisfying," he said. "We felt we had to do something different. We tried to do it internally, and we weren't really ready for it yet. It takes a lot of discipline to make sure you are involving the customer and that you are working in small iterations."
To better come to grips with Agile methods, Rackspace enlisted consultancy ThoughtWorks. The choice was in part due to the fact that the consultancy had established a reputation in both Extreme Programming (XP) and Agile methods. Dirk Elmendorf was ready for the new approach.
"We needed software that worked -- that came out in predictable development cycles," he remarked. He was eager to obtain that goal. "If people said, 'Light a fire and dance around it,' I would have done it," he said good humouredly.
Working alongside the experienced agilists, the Rackspace crew was able to see the places where they were close to achieving successful agile practices, but had just not yet been getting it exactly right.
A new approach to requirements is needed when doing agile development, according to Elmendorf. If you are agile, you get what you need in the end -- not what you thought you needed when you started the process.
The big thing for requirements tools is making sure you capture what is really going on and using tools that enable better communication. If your team is smaller and closer together, you don't need very fancy tools, he indicated.
"When we had, say, two good users [stakeholders], four developers and one manager, note cards worked," he said. "Our first small Agile project team didn't need tools. But, as we added projects, we added to the mix."
That meant they needed more tools and had more need to integrate them, as well as report on results.
As Elmendorf has seen the projects grow in scope, he has found it difficult to keep everyone on the same page.
"You have to keep track of where you are at and where you are going to. Keeping everyone informed on that becomes very difficult. It is hard, but essential to your success," he said.
ThoughtWorks recently expanded from consulting into the software product business. The company produced the Mingle project collaboration and management tool. Elmendorf said Rackspace was in the process of rolling out Mingle.
I iterate, therefore I am
What is a good frequency for iterations of software releases?
ThoughtWorks recommended a frequency of two weeks, Elmendorf said. But at Rackspace they've found that a week is a good number for them.
"It's scary but it forces you to keep things small and controlled," he said. "When you have two weeks, there is that lag. It is a little slower getting back into the game. A one-week iteration is a reminder you have to get stuff out."
Whether it is via collaborative software repositories or index cards, the word everyone should remember in the Agile world is "communication," according to Elmendorf.
Agile is about an ongoing conversation between stakeholders and developers. Whenever you are looking at a potential tool, you have to ask how it improves communication, he said.
"If you sit at the same desk, note cards are great," he said. "If people are in different time zones, note cards don't work."