Having effective software development project management is essential, irrespective of which approach you are using to develop software. This is obviously the case if you are using a traditional waterfall approach to software development, with a series of sequential stages where one cannot start until the previous stage has been completed and signed off. Your software development checklist will define the criteria for accepting the outputs of a stage, with defined software development change control to manage changes to scope and delivery. Your software development and management plan will define the expected delivery date for every stage, with regular reporting of progress against each stage.
The plan can also be used when determining how to manage a software development team by forecasting the number of people required for each stage and identifying the specialist software development skills required for each phase. Project management techniques such as Prince2 are very suited to the application for waterfall software development, and management approaches, as they provide an established project management process, roles, responsibilities, and templates.
Different Approaches for different Development Methodologies
The necessity for project management is less apparent if you are using agile approaches to develop software. Agile project management for software development is fundamentally different from the approach used for managing waterfall developments. Planning is, in many respects, much easier, especially when Scrum techniques are used with iterations of fixed length.
The focus moves away from developing detailed project plans where the outcomes are fixed, but the dates are allowed to change into a situation where the dates are fixed, but the outcomes can change. New approaches to software development for project management, such as Prince2 Agile, have been developed to recognize the different characteristics of agile software development. These continue to provide structure, controls, and governance to projects, but with the culture and flexibility that accompany agile concepts, methods, and techniques. They allow teams to focus on both management and software delivery and can be applied to just about every agile software development methodology. They can also help post delivery maintenance in modern software development, by fostering a collaborative approach between software developers, support teams, and customers. This will increase stakeholder confidence in the way that software is delivered and help projects to deliver consistently.
Approaches such as Kanban, where work is pulled from a queue and delivered individually, without any fixed cycles, require very little software development project management. Kanban encourages work to be frequently delivered in very small increments and can be measured in hours rather than in weeks. In these circumstances, project management will be an overhead rather than an enabler, so alternative ways have to be found to provide any required governance. This form of ‘extreme’ software development fully empowers each individual team member, in some ways taking us back to the very early days of software when there were no consistent approaches or methodologies, and often no real project management of developing software.
Hence in 60 years, we have come full circle – from no management of software projects to full-scale project management with delivery times measured in years, then agile delivery with fixed time projects delivering products in regular 2-4-week sprints, then right back to no project management at all.
Summary:
Software Development Project Management
Having effective software development project management is essential, irrespective of which approach you are using to develop software. This is obviously the case if you are using a traditional waterfall approach to software development, with a series of sequential stages where one cannot start until the previous stage has been completed and signed off. The necessity for project management is less apparent if you are using agile approaches to develop software. Agile project management for software development is fundamentally different from the approach used for managing waterfall developments. Planning is, in many respects, much easier, especially when Scrum techniques are used with iterations of fixed length.