Agile Software Development, an Overview…
Agile software development is a method that has been around in some form since the mid- 1990’s. At first there was no official name for the practice until the Agile Manifesto was published in 2001.
Before most of you fall asleep, let me break it down into something that everyone can grasp. Agile development methods were designed to promote collaboration and teamwork but also to allow for easy adaptation of “new” requirements being introduced into any project.
My first introduction into the world of Agile Software Development was a little over a year ago when I started with GiftCards.com. Prior to that I had only worked in an environment where the Waterfall methodology had been practiced. I must admit that in the beginning I was a bit skeptical of a development process that allows requirements to be added as needed to the scope of a project. At first, admittedly, this felt un-natural. As I had always worked on projects that were scoped thoroughly prior to any development beginning. These projects without fail would linger on for weeks and often months and at the end of the project you would realize that what you built was no longer relevant. Inevitably you would spend about double the expected time on the project just fixing what you built.
Conversely the Agile method encourages you to break tasks into small increments (Sprints) with minimal planning. Sprints are short iterations that typically last one week in duration. Each Sprint involves a small team (typically 3-6 members) working through a full software development life cycle, including planning, requirements analysis, design, coding, unit testing, and acceptance testing . The goal is to deliver a small subset of working code to key stakeholders. This minimizes overall risk and allows the project to adapt to changes quickly. Project Leads/Owners will produce documentation as required to keep the Sprints moving. A Sprint does not always add enough functionality to allow a product launch, but the goal is to have working code (with minimal bugs) at the end of each Sprint. Multiple Sprints are often necessary to fully release a product or new features.
I have been pleasantly surprised by the productivity gains that I have witnessed by practicing the Agile Methodology. Projects take less lead time to launch, development is broken down into more manageable deliverables and Product Owners are pleased to be able to adapt more quickly to market shifts.