Agile practitioners must be committed to continuous improvement in quality and cost-effectiveness, which means that every development is analyzed for lessons that can be used to improve policies and working practices.
Agile is all about teamwork, transparency, and technical excellence.
No matter what your experience with Agile practices and techniques, the foundation for Agile methodologies is rooted in best practices positioned to enable collaborative environments where diverse teams can continuously learn, improve, grow and produce.
There are 12 principles of Agile methodology that assist in forming the Agile foundation of collaborative productivity. These 12 principles - inspired by and supportive of the Agile Manifesto - are guiding practices that support teams in implementing and executing with agility the production of software development.
Satisfy The Customer
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage. It's hard not to get a wave of despair when thinking about change requests but change is good if you can react to it fast enough. Change means you are getting closer to client needs and that's a good thing.
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale. The sooner you deliver incremental software, the faster the feedback and faster you can identify a wrong turn or a miscommunication with the client. Would you rather find out earlier when you can do something about it or at the end when a complete rework is required?
Business people and developers must work together daily throughout the project. It makes sense for the customer to become part of the team. After all, both the developers and the customers have the same goal; to deliver valuable software.
Build projects around motivated individuals. Give them the environment and support they need,and trust them to get the job done. Agile projects emphasize self-organizing teams who instinctively are able to manage both themselves and the work. The micromanagement of projects is no longer required or beneficial.
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation. Co-location is the ideal. Osmotic communication - where you absorb some part of the conversation around whether you are part of the actual conversation or not - is a very real benefit of co-location. Unfortunately, development teams are often distributed. If the teams are not co-located, every effort must be made to communicate often and to increase the use of technical communication techniques.
Measure of Progress
Working software is the primary measure of progress. When you focus on following the plan you typically get too involved in updating documentation - taking focus off the objective of the project. When you make working software the primary measure of progress you promote it to the primary focus of the project.
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely. Think Work/Life Balance. Remember the end of the project dash? Everyone worked almost around the clock to get the project finished. Nevermind the impact on quality, how about the impact on the team? Agile strives to maintain a consistent level of activity which translates to consistent velocity. One important result is a better ability to forecast.
Continuous attention to technical excellence and good design enhances agility. While an elegant design is meaningful even more valuable is a solution that will span the test of time. Perhaps even more importantly a solution that has the ability to be updated to keep it current. What good is an elegant design if it cannot maintain its value through update and maintenance cycles.
Keep It Simple
Simplicity! The art of maximizing the amount of work not done - essential. Of course the most reliable features are the ones that are not yet built...they can't fail. But that aside, nearly 30% of the functionality we build is seldom or never used. Agile is ruthless about cutting functionality that does not lend value.
The best architectures, requirements, and designs emerge from self-organizing teams. Self-organizing teams that are cross functional as well. Who better to recognize issues before they become real impediments; of course the people closest to the solution.
Reflect for Effectiveness
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly. We've all been on projects that end with an AAR, After Action Review. These reviews help the next client but not the one you just finished. Agile defines several ceremonies and important among those is the Retrospective. Generally held at the end of each Sprint/Iteration it is a way for teams to catch and improve behaviors before they have a huge, detrimental impact on the project.
To create high-performing teams, agile methodologies value individuals and interactions over processes and tools. All Agile practices, including Agile's 12 Principles, seek to increase communication and collaboration through frequent inspect-and-adapt cycles and consistency of collaborative exchange rooted in a foundation of Agile truth - transparency, trust, respect, and commitment.