An Expanded Introduction to Agile Software Development
By no means a new development methodology, Agile development sees a resurgence in popularity, particularly from smaller development teams that can take full advantage of its unique benefits. Agile software development specializes in rapid iteration, focusing on end-user needs, proposing that the fluid and flexible design process results in a better product for the customer.
While it can be difficult to work with this methodology when scaled to larger products, it provides some clear benefits to developers who embrace it. Even larger developers can see some benefit from Agile thinking, and hybrid methodologies have been proposed and seen success in enterprise-scale projects.
The main benefits of Agile revolve around a direct-to-customer iterative development process that focuses on finding out what the end-user is going to need, developing it, and getting it quickly into the hands of users.
Producing continuous and functional iterations on software, Agile developers can get a constant flow of feedback, testing, and real-world usage information to further iterate on during the next cycle. Proponents of the methodology cite this as a primary reason the Agile development leads to happier customers and a better product.
Agile: A Brief History
The origins for Agile can be traced all the way back to the ’50s, but the current iteration we see today, with clear guidelines for its use, is largely rooted in the software boom of the ’90s. When software development was undergoing a transition from large corporations and well-funded research use to “garage development,” more rigid software development methodologies slowly gave way to iterative processes that made more sense for smaller development teams. Early versions of iterative processes, like Scrum in 1995, arose from a demand for a more cost-effective, personnel-driven development methodology that heavyweight entries lacked.
The Manifesto for Agile Software Development was written in 2001 by seventeen developers working together in Snowbird, UT. This could be considered the official birth date of Agile itself, though many development processes were collectively titled agile development methods throughout the ’90s.
This documentation laid out the tenants and processes that began the framework for the Agile methodology.
Early Agile development faced some unique challenges. Kickback from larger developers who saw the Agile methodology as “anti-methodology” led to some stigma around its use, particularly in the late ’90s. The process was sometimes seen as a lazy way to circumvent proper development.
The publishing of the Agile Manifesto helped to dispel some of the negative reception of agile development methods, giving the software community a clear set of tenants and processes that could be used to execute an iterative software process effectively.
Agile development continued to gain traction throughout the early-to-mid 2000s and saw a rapid increase in use after 2010. With independent software studios cropping up almost everywhere, Agile development has become the preferred method for small teams worldwide.
Other Applications for Iterative
Iterative development isn’t limited to the software space, and several other industries take advantage of it to quickly adapt products to fill needs. Cutting-edge automotive development often follows this pattern. The engines for “ultra-cars” often go through several design phases as tweaks are made to the original design for maximum performance.
This is also popular in aerospace, where getting a working proof of concept is often key towards successful development. Manufacturing processes see some of this as well, though it will depend on the manufacturing sector as to whether this benefits over more rigid methods.
The Benefits of Agile
Agile development excels at rapidly getting a working product into the customer’s hands for use. One of the key tenets of Agile development is that direct communication with the end-user is necessary for a good product. The number one principle of Agile methodology is to bring customer satisfaction by continuous delivery of valuable software. Once the product is in the customer’s hands, feedback can be taken, and the iterative process can begin.
This makes Agile development incredibly flexible when developing a new product. Unlike traditional development cycles, where rigid planning, development, and testing phases are scheduled out months in advance, an Agile development cycle combines the latter two phases. This lets designers get real feedback on product usage to put into the next cycle.
Agile development is more than just a framework for an iterative design process; its tenants include a design philosophy built around strong teamwork and communication. Agile touts the benefits of working closely with co-workers via face-to-face communication, consistent reflection, and self-motivation.
Proponents of the Agile development methodology stress how important it is for a team to “gel” to produce a satisfying product for the end-user. This process works extremely well for small development teams working closely with customers to meet a specific demand or desire.
The Downsides to Agile
This flexibility and versatility aren’t without their downsides. Agile can struggle to develop products at scale, with extensive software projects demanding a more rigid design structure to facilitate huge teams.
Working closely in a face-to-face environment makes sense with a small team of 20 developers; it’s significantly harder with a team of 200. The size and expenditure of these projects often preclude the luxury of a highly flexible design cycle. Agile can also have issues playing nice in larger infrastructure settings. Large corporations that may strictly follow various IT guidelines could have trouble incorporating Agile’s less formulaic approach to design.
While it’s not impossible for Agile to play nice with ITIL and other rigid structures, with many versions of IT asset management software working just fine with Agile development, it could take a rework of existing frameworks to be successful.
Is Agile Right for Your Business?
Whether or not Agile will work for your business will depend on the size, scale, and financial status of your organization. Smaller teams working closely with their customers can gain huge advantages by using Agile, while larger companies may have trouble getting to grips with the methodology. If an iterative design process focusing on customer interaction and teamwork seems like it could work for your team, it may be worth looking at Agile.