While many of the basic principles and practices of project management apply to software projects, there are also dimensions of software project management that are not covered with standard project management approaches – for example, dealing with projects that have constantly changing requirements. (Or as Agile puts it “We welcome the constant churn of changing requirements”). This course covers the basic functions of project management but within the context of managing a software development project under different development methodologies. The course begins with a review of basic project management processes: initiating, planning, executing, monitoring, controlling and closing – as well as the ten knowledge areas: cost, risk, time, quality, scope, etc. The differences between traditional projects and software development projects are then emphasized, especially the challenges with using highly adaptive processes such as Agile. The course then revisits each of the traditional processes and knowledge area but introduces the software specific concepts and practices that are in current use. For example, in terms of planning, the basic work on software project estimation is covered while risk and quality are evaluated in terms of the continuous integration of software quality and testing methodologies into the development process. Examples of other topics that are covered are stakeholder management in Agile and other process forms and the use of Acceptance Test Driven Development to implement stakeholder management, and the various Agile and other collaborative techniques to create ongoing risk identification and management as well as enhancing communication both within the team and between the team and stakeholders. The important relationship between software architecture, design and software craftsmanship are also underscored as being essential foundational issues in managing software projects successfully. A number of labs to reinforce the concepts and techniques are held as well as case studies to demonstrate both the best practices and the avoidable failures are presented in class. The course can be tailored to a specific software development process methodology.
No previous experience in project management is assumed.
4 Days/Lecture & Lab
The course is intended for anyone in software development who will be managing a software project or be part of the project management team.
Basic overview of project management.
- The five project management processes.
- The ten project management knowledge areas.
- How software projects are different than traditional projects.
- Adaptive versus predictive projects: working with incomplete and changing requirements.
- Overview of Agile processes designed to address project management tasks.
- Creating efficient and effective software development processes.
- The importance of well-designed architectures, good designs and high quality software craftsmanship.
- The project management team roles: team leader, QA lead, BA lead, design lead, infrastructure lead.
- Ongoing evaluation and monitoring using ATDD, TDD and other techniques.
- Collaborative team techniques.
- Project and software risk management.
- Evolving project targets in adaptive environments.
- Handoffs to support and implementation teams
- Crisis management (When things that can’t possibly go wrong do go wrong).
- Typical software project management challenges and effective responses.
- Classic software project management mistakes to avoid.
- Personal skills needed for an effective software project manager.