In your own words, How would you describe Agile Software Development?
I believe Agile Software Development has less to do with the software development itself and more to do with the relationship between the customer and the software development team. Agile Software Development means that the software development team attempts to create a base working prototype as quickly as possible then iterates upon this, checking in with the customer frequently to make sure the project is going to meet the customers needs and expectations. In doing so they commit to not only regular iterations, but regular testing, and construct individual components of the project one at a time. At each phase of the project they are able to present a tested, workable example to the client to ensure they are able to get effective feedback. This process not only means that they do not show up at the end of the project cycle with and end product that does not meet the clients expectations, but gives the team more flexibility to modify and alter aspects of the software if the clients needs or expectations change along the way.
Does following a Software PMP make a software development project less Agile?
It really depends how the SPMP is put together, and how it is utilized by the development team. A SPMP that demands all requirements be stated up front to establish a plan with hard, specific deadlines that is then to be followed by the letter is certainly going to result in a less agile project. However a SPMP that recognizes the importance of iteration, frequent testing, workable components even if they are rough and early, and regular check ins with the client to not only demonstrate what has been completed, but to ensure the project is living up to the clients expectations will allow a team and project to be very agile. A SPMP is actually very important for agile projects, because it would be very easy for a project to continue being dragged out, miss deadlines, and incur more and more costs if expectations or requirements are always changing and there is not a higher level plan in place to make sure the project as a whole is on track with time and budgetary restraints. Additionally even though an agile project and team will result in a end product that better meets the clients needs in the end, it is important for project management to have an overall picture of what the client would like to accomplish so reasonable timelines and cost estimates can be made - this will help ensure the team is on the right track by establishing what needs to be created (front end and individual components, for example) and the order in which these components should be addressed based on the relative difficulty of completion to the importance to both the project and the end client.