Agile Development is quite the buzz term in the tech world. It refers to a methodology that is applied to the management and workflow of software design. The system rose to prominence during the 90’s as a means to inject adaptability and fluidity to meet the needs of the rapidly changing tech landscape. It’s been a mainstay in the industry since, so it’s important to familiarize yourself with the concept.
Agile Development can be thought of as a reaction to Waterfall Development. Waterfall Development became popular with a much younger tech industry back in the 70’s. In this system, the design process starts with comprehensive documentation which informs a linear progression of development phases, each dependent on the completion of the former.
During the early 90’s, the internet industry boomed and software developers became increasingly frustrated with the rigidity of Waterfall methodology and its inability to adapt to changing tech requirements, client’s needs, and the competition. Some of these developers broke from the Waterfall model and instituted their own systems that served as precursors to Agile Development. Having recognized shared principles in their systems, they came together in 2001 to collectively publish Manifesto for Agile Software Development.
They summarized the core tenets of Agile philosophy as follows:
- Individuals and interactions over processes and tools
- Working software over comprehensive documentation
- Customer collaboration over contract negotiation
- Responding to change over following a plan
Each point is worded as a response to the previous way of doing things, and emphasizes strategy to develop flexibly and responsively.
The manifesto provided an open framework that allowed for different kinds of implementations, and as such, there are now several popular styles of Agile Development. Some of the most popular forms are Scrum, Kanban, and Extreme Programming. While their implementations vary, they all stem from the core philosophy laid out in the manifesto and, therefore, employ similar methods.
Some of the common practices include breaking projects down into incremental and demo-able goals, working within smaller time frames (weeks vs months or years), sorting tasks according to priorities or points, regularly checking in within and across teams with stand-ups and stand-downs, regularly communicating with clients, and re-evaluating and updating timeframes and priorities according to the communication from teams and clients.
Anecdotal evidence suggests proper implementation of Agile methodology leads to faster development and better quality products, but that doesn’t mean it’s considered a perfect system either. It can be very straining to strictly adhere to an Agile system. The system requires full commitment from everyone on the team, and training everyone on proper Agile procedure can be a difficult process, especially if members are use to different development or management styles.
That being said, Agile Development revolutionized the tech world and couldn’t have done so if there weren’t a lot of merit to its core principles. Ultimately, the methodology has instilled a mindset that dev teams ought to be adaptable and responsive by working iteratively. I hope this read has helped bring some clarity to the concept. Happy coding!