The Key Principles are

:
1. Collaboration and communication - face to face meetings, co-located teams or
for geographically dispersed teams, extensive utilization of communication tools
2. Product backlog - smallest, workable pieces of functionality that translate into
tangible business benefits. These items must be deliverable live in short
iterations of 1-4 weeks. This backlog is then maintained to deliver against
incremental iterations
3. Get to market faster - in other words, working software that's delivered in weeks
4. Stakeholder engagement - agile teams view stakeholders as important & visible
members of the team and engage them right from the start and throughout the
project
5. Capacity management - every aspect of capacity is assessed and agreed
before delivering any live software
6. Release planning meetings - planning and scheduling of design iterations is
done up-front. Designers pick user stories from design backlog and produce low
level solution designs. Then, teams will pick up the designed user story
7. Coordinated sign-offs - agile teams ensure sign-off at every stage of the
software development lifecycle from relevant stakeholders
8. Risk management - the product owner actively monitors the software delivered
and ensures that stakeholders give early visibility to managing risks and issues
9. Effective change management - agile teams are welcoming and responsive to
changes that stakeholders require. Working with the stakeholders helps ensure
that these changes are aligned to the business goals. Agreed changes should be
planned and scheduled in retrospective Sprints
10. Effective control of budget and resources
Best Practices Include:
1. Optimize daily stand-up meetings (Scrums) - try to keep meetings to 15
minutes as a maximum and ensure that the whole team attends too. If a member
is unable to attend, ensure that they update another attending team member.
Start the meeting with the person that joined the meeting last and ensure that
each individual clearly articulates answers to 3 key questions: What did I achieve
yesterday? What will I achieve today? What impediments are blocking my
progress?
2. Effectively use collaboration tools - to create documentation, share user
stories and so on
3. Where practicable, co-locate teams (or for geographically dispersed teams,
extensively use audio visual communication tools)
4. Integrate feedback and decision making - be sure to actively involve the
stakeholders through the lifecycle. This will dramatically improve decision
accuracy
5. Maximize article re-use - this will save you oodles of time
6. Optimize review and sign off meetings - at the end of each iteration, as a
minimum, have a quick meeting to discuss what worked and what didn't and sign
off deliverables. You can then effectively incorporate lessons learn into future
iterations - continuously improving the process as you go.