1. Continuous software delivery
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Instead of overspending too much time in planning, try reporting to your customers continuously to get their feedback. This way you are focused with the ultimate objective of giving your customers what they want.
2. Embrace change
Welcome changing requirements, even late in development. Agile processes harness change for the customer's competitive advantage.
Customers cant always know what they want at the begining of a project. You need to accomodate their feedback to deliver the best possible product.
3. Deliver frequently
Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
We must recognized that failing early is a good thing because it gives you the opportunity to recover from small failures before it becomes a larger issue.
4. Teamwork collaboration
Business people and developers must work together daily throughout the project.
Business stakeholders and technical team may probably be talking in their own different languages. Therefore bridging the gap between both side is crucial for your project's success.
5. Motivated individuals
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
You need to support, trust, and motivate the team. NEVER micromanage. It doesn’t work as it wears down morale and causes more disengagement. You've assembled the best - now let them do what they are good at. Step in as needed but stay out of their way.
6. Face-to-Face conversation
The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
Face to face is still considered as the best way to convey information. Because even with collaboration software such as Slack, sometimes the only way you can achieve a quick response, interpret thoughts, gather feedback and build relationship is by talking to your team in person.
7. Working Software as Measure of Progress
Working software is the primary measure of progress.
Delivering a functional software should be your ultimate factor in measuring progress. Focus on whats important - this is what really gets you to achieve the goal of the project.
8. Consistent Development Pace
Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
Avoid taking more work beyond what the team can accomplish in any given iteration. Often when release date draws near, your team runs the risk of being in a
death march where unexpected bugs shows up, unfinished feature piles up and your team starts to feel the
project is now destined to fail due to unsustainable overwork needed.
Sustainable development can be reinforced through Sprint Planning by allowing the development team to determine how many items can be taken from the Backlog.
9. Attention to Technical Detail
Continuous attention to technical excellence and good design enhances agility.
Having good coding practices and solid design plays a vital role in project scalability. It promotes agility to quickly implement changes from the shifting requirements.
Simplicity--the art of maximizing the amount of work not done--is essential.
Prioritze and focus on doing the bare minimum requirements first as they are the most necessary for the product.
11. Self-Organizing Teams
The best architectures, requirements, and designs emerge from self-organizing teams.
Trust your team to produce quality software without too much control from upper management. Customers will still lead the product direction but let the team decide on how to build and implement based on their own expertise.
12. Regular Reflection and Adjustment
At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Ask the question: What went well? What didn't go so well? What have I learned?
When you conduct retrospective meetings at regular interval you open an opportunity for your team to improve process and learn from mistakes so that the team can be more effective.