Agile seems to be a steadfast buzzword in custom software development and beyond. But as with all buzzwords, it’s hard to tell the real values from the hype, to separate fact from fiction. As early adopters of the agile approach to custom software development, we found this article, compiling expert insights from the agile-minded IT crowd, extremely useful.
In the beginning, there was the “waterfall” model, which interpreted software development as a process regulated by rigid requirements and timing, flowing in a linear fashion through the stand-alone phases of requirements analysis, design, implementation, testing, integration and maintenance. But over the past few years, there has been a paradigm shift towards a mentality that allows more flexibility in order to instantly address changing business needs. This is called agile software development.
Now let’s see what agile is, and what it isn’t.
First and foremost, it’s important to consider that an agile approach to custom software development has a distinct business edge. It hinges on teams’ ability to prioritize between projects, features to be included in those projects and processes to use. “Value is provided by only doing the important things that directly contribute to the sustainable competitive advantage of the organization”, says business systems coach Kent McDonald. Kelly Anderson, a C# developer adds: “If you count the cost of bugs that make it too far downstream in the process, there is simply no way to financially justify any approach except some kind of agile approach.”
It doesn’t make sense to interpret agile exclusively in the framework of processes – it affects the entire company culture.
Simply put, agile means embracing the idea that requirements change because people do, and incorporating rapid feedback into custom software development in order to quickly accommodate those changes.
Significant differences as opposed to the old-school “waterfall” method include relying heavily on feedback and collaboration, which requires that IT and business departments, providers and clients be honest with each other. The faster the feedback, the better, says IT consultant George Dinwiddie: “Reducing the time between when a decision is made and when it is validated will pay off in reduced waste.” Agile collaboration challenges the short-term thinking and siloed structure typical of “traditional” organizations by encouraging everyone involved to join forces instead of focusing on a single task assigned to them. But the most difficult part is the shift to transparency, since corporate culture today is in large part based on distrust and a lack of truthfulness, observes consulting guru Mishkin Berteig.
Clients and managers who are used to more predictable methodologies of custom software development may be daunted by the iterative nature of the agile approach. However, “agile” doesn’t translate into “disorganized”. In fact, while this method gives the flexibility to reprioritize requirements according to changing market conditions, it doesn’t mean that teams can do away with long-term planning, software architecture, output standards or project management. As tech journalist Isaac Sacolick sums it up: “Enterprises have to think through how and where to apply agile development.”
Miraculous as its results may be, agile is no magic wand. It brings about gradual changes in custom software development, so those who expect instant, spectacular success are in for some disappointment.
According to James Kricfalusi of TEKSystems, in the early phases of an agile project, iterations should be regarded as investment in ideas, frameworks, defining requirements and processes. The first release is rarely spot on, but in developing it, the team gets the opportunity to set up an effective feedback loop in order to improve later versions.
For the shift to agile to take place, it’s important to stop micromanaging, says Kricfalusi: “Trust the team, relax and let them do their thing.”
Agile is far from being the ideal solution for every custom software development project. It’s best suited to projects where client requirements are exploratory or tend to change quickly and unexpectedly.
Furthermore, the success of agile depends heavily on the human factor. “The people working in such an environment need to be able to ignore the personal quirks of the others,” says IT business owner John Miano. Other experts warn that even the agile approach won’t turn bad programmers or communicators into good ones. According to consultant James Shore, “To successfully adopt agile development, teams need self-discipline, a rigorous approach to their work, management support and time to learn.”
As we have seen, the agile approach has a lot of potential but require the same rigor than any other approach. Would you opt for custom software development within such a framework? Tell us your opinion in the comments below.