Agile Software Development: A Better, More Flexible Approach to Software Development

Agile Software Development: A Better, More Flexible Approach to Software Development

  • "If you're just starting with Agile, don't get bogged down in the rules. Remember, the main goal is to ship working software that people love." - Kent Beck

The dev program from my mid-2023 wins recently added four new topics which were Soft Skills, Version Control, Agile and Scrum, and Technical Writing.

Started with Agile and thought of compiling bits from the lessons learned here for reference purposes.

What is Agile Software Development

Agile was coined in 2001 by a team of software developers in Utah who were frustrated by the way of work in Software development, and brainstorming on how to make it better. What emerged was the Agile Software Development Manifesto which is a philosophy, and simply a way of thinking that is guided by 4 values, and 12 principles.

Agile Model image by FreshNow Tutorials

Agile Four Set of Values

The Agile Manifesto defines a set of values and principles that prioritize flexibility, collaboration, and customer satisfaction in software development. Below listed are the four set of values from the Agile Manifesto value

  1. Individuals and Interactions over Processes and Tools: This value suggests that processes and tools are important in software development and should be designed to support and enhance the efforts of individuals working together.

  2. Working software over comprehensive documentation: The intent of this value is NOT to disregard documentation entirely (as it is helpful for communication, understanding, and future maintenance) but to avoid overemphasis on extensive documentation that may not directly contribute to the delivery of working and valuable software.

  3. Customer collaboration over contract negotiation: means prioritizing working closely with the customer throughout the development process rather than relying on a rigid, pre-defined contract. Contracts offer stability while collaboration offers agility.

  4. Responding to change over following a plan: Imagine driving to a particular destination for the first time. A detailed map is helpful, but rigidly sticking to it could lead to an unexpected turn of events when there is a blockade on the road.
    The fourth value of Agile Software Development is about embracing the dynamic nature of software development and being able to adjust course as needed to deliver the best possible product.

12 Agile Principles in Software Development

Agile principles are a set of principles that guide the agile mindset and help teams prioritize values such as customer satisfaction, collaboration, adaptability, and continuous improvement in their software development processes. Below in no particular order are the 12 Agile principles in the Agile Manifesto:

  1. The highest priority is to satisfy the customer through early and continuous delivery of valuable software.

  2. Welcome changing requirements, even in late development: Implying harnessing change to align with customer evolving needs.

  3. Deliver working software recently, from a couple of weeks to a couple of months: This implies aiming for short development cycles, allowing for frequent releases of working software.

  4. Business people and developers must work closely daily: This principle ensures that the delivered software aligns with business goals.

  5. Build projects around motivated individuals: Meaning empowering, trusting, and ensuring the team members are motivated recognizing that motivated individuals can drive successful projects.

  6. The most efficient and effective method is face-to-face conversation: This ensures that there is no confusion. When face-to-face communication is not possible, use other effective means.

  7. Working software is the primary measure of progress: This principle implies that the delivery of working software is more important and the true measure of progress than meeting project deadlines, or completion of documentation.

  8. Agile processes promote sustainable development: Implying a work environment that promotes consistent and a sustainable pace that the team can maintain over a long time. The team should not be working so hard that they burn out.

  9. Continuous attention to technical excellence and good design enhances agility: Implying that the team should be focused on writing good code, and making good design so that it can be easier to maintain or make changes in the future.

  10. Simplicity - maximizing the amount of work not done - is essential: Perhaps the most common case study of principle 10 is that of the Google Landing page. Despite being the world's most popular search engine, the simplicity of the Google landing page shows how maximizing the amount of work not done is essential.

  11. The best architectures, requirements, and designs emerge from self-organizing teams: This means that the team should be trusted to make decisions on their own and organize themselves. This helps in team efficiency.

  12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly: Implying team members should meet at regular intervals to discuss what is working well, and what is not working well. This will enable them to identify areas for improvement and make adjustments.

Summary

There are so many benefits to using agile software development which are not limited to; fostering collaboration, streamlining processes, improving software quality, faster time to ship software to markets, and more.

If you are considering using agile software development, I also would recommend you do some research on the practices available.

Cheers