The 12 principles of Agile software development
The 12 principles behind the Agile Manifesto offer more detailed guidance on implementing Agile in day-to-day operations. They include:
1. Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
The first principle of Agile makes clear that the primary focus is customer satisfaction.
Software development takes time, costs money, and exists to meet customer needs. Sooner equals better: The goal of Agile is to generate high-value applications early and often.
2. Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
The second principle of the Agile process recognizes that the only thing permanent in business is change, so adjustments and modifications to application requirements should be expected and welcomed, even in the late stages of development. The last thing users and customers need is software that's outdated or irrelevant upon arrival.
3. Deliver working software frequently, from a couple of weeks to a couple of months, with a preference for the shorter timescale.
This principle underscores the importance of iteration and accelerated time-to-value. It's never too early to generate value, which is why Agile focuses on a time frame of a couple of weeks to a couple of months. Think smaller releases, more often.
4. Business people and developers must work together daily throughout the project.
Agile emphasizes overcoming traditional silos and barriers to smooth collaboration between the development and business sides of the house. The fourth principle recognizes that misunderstandings are resolved before they can find their way into code, and feedback comes quickly enough to avert problems before users ever see them.
5. Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
Projects are only as good as the people who work on them — and software development is a case in point. Developers whose skills are empowered by the right training, environment, tools, and management support will naturally create successful projects.
6. The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
The sixth Agile principle acknowledges the importance of clear, direct communication.
In other words, the best and most productive interactions are one on one. With modern tools like Zoom, Skype, and Teams, distributed teams can and should collaborate face-to-face over distances and time zones.
7. Working software is the primary measure of progress.
If there's one Agile rule that stands above all the rest, it's the seventh principle: That progress is measured not by models, analysis, or flowcharts — but by a real, live, functioning product. When following an Agile development process, the mantra is always: Working software is the primary measure of progress. Note: It’s understood that software that passes tests is considered working software.
8. Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
The essence of the eighth Agile principle is continuity. Agile is about ongoing exertion, not one-time spurts. When successfully employed, its processes facilitate workflows that are consistent and sustainable over the long term.
9. Continuous attention to technical excellence and good design enhances agility.
Undeniably, Agile puts a premium on rapid development, but not at the expense of good design and technical quality. A mediocre product won't fully meet user needs no matter how fast it gets delivered. That's why the ninth principle acknowledges the critical cross-functional collaboration that Agile promotes: Agility must be counterbalanced with a focus on quality and user experience.
10. Simplicity — the art of maximizing the amount of work not done — is essential.
The tenth Agile principle defines simplicity as “the art of maximizing the amount of work not done.” This means, among other things, eliminating outmoded procedures, favoring automation over manual processes, using macro libraries where available, and in general, taking the most direct route to each given objective. Simplicity is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
The eleventh Agile principle understands that good developers work best when they feel ownership in the work product. According to Conway’s Law, the design of a system will mirror the communication structures of the organization that built it. Therefore, a key enabler for effective development rests with management. Higher-ups must trust the team to organize its efforts, consult with business stakeholders, and dive into coding — free from over-control or micro-management.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
The twelfth agile principle acknowledges the fact that no individual or group makes perfect decisions all the time. There's always room for improvement. This makes it imperative for Agile teams to periodically assess, optimize, and fine-tune their efforts. Often this is called a “retrospective” or, in the case of a failed project, a “post-mortem.”