Now it’s over twenty years after the Manifesto was released, and it remains up-to-date, being the most comprehensive set of rules for all the Agile software development best practices. The details can, of course, differ slightly, depending which exactly you have adopted in your company. First, let’s take a look at twelve principles behind the Agile Manifesto:
- 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.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
- Simplicity–the art of maximizing the amount of work not done–is essential.
- 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.
From this list, we can derive the Agile project management best practices that can be applied. The first and most important would be to closely collaborate with your customer, which helps with continuous improvement of the end product – even if it differs from initial conceptions, it is better suited to the needs. Another of Agile development best practices would be day to day communication of team members, that helps find solutions for problems and keep high levels of individual motivation and productivity.
An important rule to apply in Agile is to promote face-to-face communication, both inside the development team and with your customer. Such approach helps build much needed trust and helps find solutions to the problems as well as new ideas quickly. This is a part of building a self-organizing team, which does not need close supervising, splitting tasks and promoting confidence in team member’s input to the project.
The last one of the overall good practices would be to reflect on team effectiveness and improve. This might be implemented in most methodologies according to one of the best practices in Scrum – where in a team retrospective after development iteration each member suggests, what the team should start, stop or continue doing. When such suggestions are applied, they help improve the performance on next stages of current projects and better organize projects, that the team would realize in the future.
Staying with Scrum for a while, it is good to point out the best practices in this framework. The role of Scrum Master is generally well understood: to support Product Owner in management of the Product Backlog, to help overcome obstacles that the Sctum Team meets and to encourage deeper implementation and understanding of Scrum on all levels of organization. What is sometimes overlooked is that a Scrum Master should excel both in technical and social skills, and be empathetic as well as open-minded.
In Scrum and several others Agile framework, the workflow is organized in short (usually two weeks long) Sprints. Some companies tend to forget, that Sprint Planning should be split in three separate elements, which can be summed up in simple questions: Why? What? and How? Such approach helps team members understand the upcoming tasks and their role in a big picture, which helps in finding ideas and solutions to occurring problems.
Such understanding of a project’s big picture and the role of individual tasks can also be achieved with introduction of user stories. They are intended to describe end-product features from the perspective of its user or customer. You build the story, deciding on its main character, expressing their needs and suggesting what could possibly solve the problem.