Mastering the 12 agile software development principles
Agile software development is the only way software development is done these days. Many, many years ago (circa 1990) we relied on extensive documentation and outdated management styles to get the job done.
In this column, we explore the 12 core principles of agile software development outlined in the Agile Manifesto to help you make sense of the sometimes esoteric text.
Here are the 12 tenets of agile software development explained:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Sometimes software vanishes into thin air. A great idea has to be supported by constant development and feedback.
Software development can be fraught with pitfalls, especially when development timelines go unchecked, problem areas go unresolved, and when goals become vague. A great way to avoid this is to continuously develop and deploy working software.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Keeping yourself elastic is one of the best ways to ensure success. By making yourself open to changes, you’re more likely to address problems quickly and effectively. Clinging to old software requirements, even if they look perfect on paper when they’re just not working increases your chance for critical error.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Agile software development is about being as quick and as nimble as possible. Delivering working software is the major metric by which to gauge success. Extensive documentation is nice, but often, it can bloat the process. Setting very narrow timescales can help you be as lean as possible.
4. Business people and developers must work together daily throughout the project. Build projects around motivated individuals.
Technical excellence cannot be achieved without the help of an entire team. Business people and developers have to collaborate in order to make sure that a software product is viable, has a place in the market, and that its development isn’t consuming unnecessary resources.
5. Give them the environment and support they need, and trust them to get the job done.
Micromanagement can harm any project. Needless to say, micromanagement can be even more deadly to agile software development. Every process needs to be streamlined. Emphasize finding the right team and trust them to get their work done.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Don’t let communication get bogged down in emails. Asynchronous communication can complicate the development process. Instead, simply meet through video conference or face-to-face to make communication as meaningful and effective as possible.
7. Working software is the primary measure of progress.
It’s easy to base metrics off of documentation, number of meetings, number of hours poured in. The only way you know if development is going well, however, is checking up on the software itself. What is the product right now? How many features are implemented? Will it work?
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Agility doesn’t mean you exhaust yourself. It means allocating your time and energy with precision. Any excess fat is trimmed. This means you should also avoid the trap of overextending your team for short-term gain. Keep the pace constant and you will be rewarded.
9. Continuous attention to technical excellence and good design enhances agility.
Technical excellence should always remain at the core of your project. Agility is a natural consequence of well-executed design.
10. Simplicity--the art of maximizing the amount of work not done--is essential.
Keep it simple.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
As a rule, management is about letting people explore in a supportive manner. Ideally, teams emerge naturally among professionals.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Change is constant and evidence-based.
Agile software development, the art of making software as quickly, effectively, and creatively as possible is by far the most successful strategy.
Software development is an exceptionally difficult undertaking without agile software development principles to guide you. In essence, agile philosophy posits that continuous development, tweaking, and face-to-face communication greatly decrease the chance of major errors for ambitious software projects.
Use these 12 principles outlined above to help streamline your processes and improve your chances for success.