Satisfy the costumer
Customer satisfaction through early and continuous delivery of useful software to let customer know the progress and through delivery of values to the customers by fulfilling the top priority requirements first.
Welcome changing requirements, even late in development
The change control process is simplified, and no formal documentation and approval are required. it allows fast response to latest changes in external environment to enhance competitive advantage to emerging opportunities.
Frequently Delivered Software (weeks rather than months)
This provides immediate values to the customers by delivering working features. The teams make sure that each feature is fully developed, tested, styled, and accepted by the product owner before counting it as delivered. The project team activities can be better structured with the fixed delivery timeframe to focus on delivery of value.
Agile development principles include keeping requirements and documentation lightweight and acknowledging that change is a normal. This makes close collaboration particularly important to clarify requirements just-in-time and to keep all team members ‘on the same page’ throughout the development.
Support & Trust Motivated teams
Projects are built around motivated individuals, who should be trusted
Projects are built around motivated individuals who are given the environment and support they need and trusted to get the job done. Team members choose the jobs they are most interested in through self-organization and not through external management influence. Micromanagement and top-down approach to management are shunned.
Promote face-to-face conversations
Face-to-face conversation is the best form of communication
Obtain direct feedback by going to the source of problem and use oral communication at the workplace. Is a benefit for both.
Virtual team conversations are facilitated via video conferencing.
Deliver working software
Collocation and pair programming
This principle is practiced via colocation and pair programming. Collocation involves various teams in the same open area and pair programming, which entails two programmers sharing a single workstation (keyboard/mouse etc.). The programmer at the keyboard is usually called the “driver”, the other, also actively involved in the programming task but focusing more on overall direction is the “navigator”; it is expected that the programmers swap roles every few minutes or so.
This leads to increase in code quality because “programming out loud” leads to clearer articulation of the complexities and hidden details in coding tasks, reducing the risk of error or going down blind alleys. It also yields better diffusion of knowledge among the team. Other benefits include better transfer of skills, large reduction in coordination efforts, and improved resiliency of a pair to interruptions.
Promote sustainable pace
Sustainable development, able to maintain a constant pace
Agile methodologies seek work-life balance among the team members and promote happiness by avoiding burnout or exhaustion. Through close collaboration and by being alert and creative, these methodologies avoid long nights and weekends which people try to undo the errors of unresponsive planning.
Promote technical Excellence
Excellence through Reflection
The best architectures, requirements, and designs emerge from self-organizing teams. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Maximize through simplicity
Simplicity: the art of maximizing the amount of work not done—is essential
The idea is to focus on the important 20% of effort that gets the majority of the results.
Focus on what are essential to create value to the project and customer not on distractors that do not add values like components, process, etc.
Have self-organized teams
The team is utterly self-managing under the Scrum methodology. It has autonomy and responsibility to meet the goals of the sprint and is responsible for determining how it will accomplish the work to be completed. The basic principle is that the team knows best how to carry out the work, not the project manager or human resources department.
Reflect & Adjust Regularly
Regular adaptation to changing circumstance
Agile Development holds that that requirements emerge and evolve, and that however much analysis and design you do, this will always be the case because you cannot really know for sure what you want until you see and use the software.