10. Simplicity – the art of maximizing the amount of work not done – is essential.
Much like the documentation of waterfall methods, traditional development does a large amount of unnecessary work. This work wastes time and resources and reduces how much the team can accomplish on the product. As such, the team is overall less efficient.
Agile development seeks to only do what is absolutely necessary. Documentation is kept to a minimum. Research is done at the last minute. Bugs are caught and fixed before developers move onto other tasks. For developers, this often means spending less time writing and reading specifications, and more time writing code.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
As with focusing on methods over the individual, traditional development assigns teams rather than allowing them to organize themselves. This often results in a team that is less cohesive. Certain team members may not work well together. Team members may have different plans for a project, and it can be difficult to reconcile these differences.
In Agile, teams organize themselves. This improves the architectures, requirements, and designs that the team creates. With developers, this allows them to find an environment where they work best. With the right teammates and ideas, a self-organized team is much more efficient.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Since waterfall development handles each step in one pass, there are no stopping points to look back and examine progress. The team must stick with their current methods until the end of the current project at least. After each project, the team can examine how things went and adapt for the next project. The problem with this is that every project is different, and what worked for one project may not be ideal for the next.
The cyclical nature of Agile software development means that there are numerous stopping points to look at the team’s progress. The end of every sprint shows a small slice of every step in the process. Therefore, after each sprint, the entire team can look back on what went well, what went badly and adjust to improve the next sprint. These are accomplished within the same project, so there is ample time to improve the project before the end. For developers, this means being more cognizant of their own work, and how they interface with others. By the end of each sprint, developers need to know how the process can be improved. Without an opinion, things will remain at status quo.
The twelve Agile principles are obviously a lot of material, but they all do have tremendous value. For developers, especially, the Agile principles create a cohesive and more productive team. By cutting out all of the unnecessary parts of traditional development and encouraging communication, Agile creates an environment that generates quality code efficiently.
Recommended Further Reading
The following materials may assist you in order to get the most out of this course:
Course Contents
Section 1: Agile Project Management
Section 2: Using the Agile Manifesto to Deliver Change
Section 3: The 12 Agile Principles
Section 4: The Agile Fundamentals
Section 5: The Declaration of Interdependence
Section 6: Agile Development Frameworks
Section 7: Introduction to Scrum
Section 8: Scrum Projects
Section 9: Scrum Project Roles
Section 10: Meet the Scrum Team
Section 11: Building the Scrum Team
Section 12: Scrum in Projects, Programs & Portfolios
Section 13: How to Manage an Agile Project
Section 14: Leadership Styles
Section 15: The Agile Project Life-cycle
Section 16: Business Justification with Agile
Section 17: Calculating the Benefits With Agile
Section 18: Quality in Agile
Section 19: Acceptance Criteria and the Prioritised Product Backlog
Section 20: Quality Management in Scrum
Section 21: Change in Scrum
Section 22: Integrating Change in Scrum
Section 23: Managing Change in Scrum
Section 24: Risk in Scrum
Section 25: Risk Assessment Techniques
Section 26: Initiating an Agile Project
Section 27: Forming the Scrum Team
Section 28: Epics and Personas
Section 29: Creating the Prioritised Product Backlog
Section 30: Conduct Release Planning
Section 31: The Project Business Case
Section 32: Planning in Scrum
Section 33: Scrum Boards
Section 34: Sprint Planning
Section 35: User Stories
Section 36: User Stories and Tasks
Section 37: The Sprint Backlog
Section 38: Implementation of Scrum
Section 39: The Daily Scrum
Section 40: The Product Backlog
Section 41: Scrum Charts
Section 42: Review and Retrospective
Section 43: Scrum of Scrums
Section 44: Validating a Sprint
Section 45: Retrospective Sprint
Section 46: Releasing the Product
Section 47: Project Retrospective
Section 48: The Communication Plan
Section 49: Formal Business Sign-off
Section 50: Scaling Scrum
Section 51: Stakeholders
Section 52: Programs and Portfolios