There has been MUCH written on the subject of agile software development and by extension agile project management. To go back to the source of this knowledge you can spend a little bit of time at AgileManifesto.org to get an idea of where this all started and the values agile methodology holds dear, along with the 12 guiding principles the original team espoused. Below are the 12 principles of agile project management along with commentary on how and why each of these principles is beneficial in the rough and tumble world of software development.
Principle 1 – Our highest priority is to satisfy the customer through the early and continuous delivery of valuable software.
This is a great principle to follow because the highest priority of software development is many times lost in the shuffle of corporate politics and bureaucracy. The software is not built for the sake of building software but rather to be put to use by an end user to do their job better and more efficiently. Or, it may open the opportunity for the end user to perform tasks that previously were out of their reach.
Principle 2 – Welcome changing requirements, even late in development. Agile processes harness change for the customer’s competitive advantage.
Conventional and linear software development and project management methodologies cringe at the idea of change. However, you can almost be assured that there is no one software project in existence that made it from beginning to end without one change. Agile project management software development embraces this fact. They view it as an opportunity for the end product to end up being closer to what the client or end user wanted and thus increase its usability and satisfaction.
Principle 3 – Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Previous methods of developing software would concentrate on an incredible amount of documentation up front under the guise of vetting out 100% of the requirements that were needed for a particular project. The reality is that after a couple of months what you ended up with is a whole bunch of very nice and very thick documentation but nothing else to show for it…like working software. Agile project management concentrates on creating and implementing working software frequently.
Principle 4 – Business people and developers must work together daily throughout the project.
What? Yes, you read that right. Business people and developers must work together daily throughout the project. This is what helps maintain the agility of software and the ability for it to change in order to keep up with the changing marketplace. This is a foreign concept to many that have been in software development for some time and not worked within the parameters of agile project management. This is something that needs to be taught, learned, and reinforced on every occasion with your teams because it’s not something that will come naturally to most people.
Principle 5 – Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
In other words, there’s no need to micromanage teams that are following agile project management methodologies. There’s no one that knows better what needs to be done and how it needs to be done than these self-directed teams. Allow them to figure things out, make their own decisions, and move the project forward. An agile project manager is there to support and enable them to get their work done.
Principle 6 – The most efficient and effective method of conveying information to and within a development team is a face-to-face conversation.
Much has been lost in the art of communication due to, ironically, technology. Technology allows developers and business people to make it throughout their entire day without talking to someone if they so choose. The use of email, instant message, text and other forms of communication have displaced face-to-face communication. While these technologies have their place, keep in mind that there is nothing better than face-to-face communication if you really want to understand someone or be understood yourself.
Principle 7 – Working software is the primary measure of progress.
Simple, right? But, think about all of the other measures of progress that have been used in the past. A number of open bugs, the number of closed bugs, the velocity of bugs being fixed, hours spent on a project, hours remaining on a project, budget consumed, budget yet to go, etc. These are important measurements, but, they are really all the overhead that is necessary to get the software working correctly. That’s what needs to be measured.
Principle 8 – Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely
It used to be very cool back in the early days of software development and not-so agile project management methodologies to get down to crunch-time at the end of a project schedule. This is when there were only 2-3 days left before the software was to be delivered and there were 2-3 weeks of work left to go. Everyone would hunker down, pizzas would be ordered, costs would be set up and the all-nighters would begin. Great times, maybe. Sustainable? No way. This type of crunch-time schedules became a normal way of working for many developers and created all kinds of issues ranging from burnout to health problems.
Principle 9 – Continuous attention to technical excellence and good design enhances agility.
This means to take pride in your work. Agile teams aren’t just a bunch of hacks that are throwing code together to get a shoddy product out the door. They use scrum tools and take the time to review their solution, determine the best approach and then implement an agile project management plan with far-sighted vision on where the product is going in the future.
Principle 10 – Simplicity–the art of maximizing the amount of work not done–is essential.
Simplicity is the genius. The ability to take something extremely complicated and then make it easy to understand for everyone involved with the project is a true art form. A goal of agile project management is to make this possible more often than not. This many times flies in the face of corporate culture and what managers are looking for in their employees. They want to see busy-ness…even if they are working on things that are an unnecessary and no value-add.
Principle 11 – The best architectures, requirements, and designs emerge from self-organizing teams.
Teams that practice agile project management are strongest when they are self-directing. There is an aversion to a top-down, know-it-all, hierarchical approach and more of a “we’re all contributors to the solution” approach. Everyone is free to offer suggestions on the best implementation ideas, architectures, requirements and other aspects of the project to make it the best result possible.
Principle 12 – At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Inspect and adapt is an overarching principle of agile project management. Just because something is written down somewhere or this is the way something has been done for years does not mean that it needs to stay that way. The team should always be asking if a particular way is the best way of doing things. If it’s not then adjustments can be made and the new way can be implemented going forward.
The 12 twelve principles above seem to make perfect sense when you look at them in the context of agile project management. However, these were revolutionary principles when they were first introduced. Many have taken these principles and made them their own for the benefit of themselves, their teams, their companies, and ultimately the users of their working software!