The Teamwork Guide To Software Development Project Management
Software development and project management go together like the less-than sign and the greater-than sign on a page of HTML. You’d generally prefer not to see one without the other.
In this guide, we’ll walk you through everything that makes software project management special, including how it works, how it can be used, and how software development project management differs from other implementations of project management processes.
What is software development project management?
Software project management is the use of project management practices and systems to help accomplish software-related objectives.
It is used by software development teams to deliver projects of all shapes and sizes and, including:
New product development
Patches and updates
Information system development
Test-driven development (TDD)
In a nutshell, pretty much any software development project is likely to be complicated enough to warrant the use of project management.
Almost all software development project management is facilitated using a project management platform. This is a shared digital workspace where the project is managed.
The software development project management process
Most software development projects progress through the following phases:
Phase #1: Initiation
During Initiation, we define the most basic project requirements. This could be anything from creating a new software, to fixing an existing software that has faulty UX. The commissioning stakeholder and leaders of the project team should document the requirements they agree upon as a project charter. Once the charter has been approved and signed-off by all key project stakeholders, the project starts.
Phase #2: Planning
Next comes the Planning phase, where the team works together to formulate the project plan. One of the key outputs from project planning is the project deliverables. These are the items the project will deliver, which could range from new software products to patches. It’s common for software projects to have multiple deliverables.
Another important element of planning is defining the criteria that will be used to measure project success. Widely used success criteria for software projects include quality targets and whether the project was delivered on time and on budget. Basically, what exactly will make the project a success?
Once your deliverables and success criteria are lined up, you can move on to planning the activities that make up the project work. Elements of this planning process include:
Identifying, creating and assigning tasks.
Specifying project milestones, which represent key landmarks on the journey to project completion.
Identifying dependencies between tasks, where completion of one task depends on another task being completed first.
Grouping linked tasks into task lists.
Phase #3: Execution
The Execution phase of a software project spans the active work of the software development process. This, as all developers know, represents a further series of processes including design, development, testing and quality assurance (QA) tasks. This work should be completed through your chosen development workflow.
The role of project management throughout the execution phase is largely focused around project monitoring. This includes tracking project progress against time available, and identifying blockers which could impede the team’s progress.
Phase #4: Evaluation
In the final phase of the project cycle, software teams should meet up (either face-to-face or digitally) and jointly evaluate the project.
Ask yourselves: what worked really well, what let us down or held us back, and were there any learnings that can be fed directly into planning for the next project? The answers to these questions could be key to your team’s improvement in the long run.
In some project management methodologies, this process of evaluation is facilitated through meetings called retrospectives.
Software development <3 agile project management
Software development projects are often managed according to agile project management principles. This makes a lot of sense, given the fact agile was invented by software developers.
Agile is a set of principles which form the basis of leading project management methodologies such as scrum and kanban. It underpins the thinking behind most contemporary project management processes.
According to Agile Alliance, the agile approach can be broken down into the following principles:
Satisfy the customer through early and continuous delivery of valuable software
Welcome change, and harness it to the client’s potential advantage
Deliver working software frequently, over short timescales
People on the business and development sides of the team should work together closely, day-to-day
Team members should be fully supported and trusted to do their job
One-on-one conversations are the best way to relay information
Functioning software is the best indicator of progress
The rate of work, progress and software use should be sustainable
There should be consistent attention to technical excellence and effective design
Teams should be enabled to self-organize
The team should be given regular opportunities to self-reflect and self-organize
Paying heed to these principles usually proves to be a wise move for software development teams, so we recommend you build all 12 into your project management process.
Agile project management was gradually pieced together by software engineers, in the latter decades of the 20th century. Today, all manner of teams use it to deliver their projects, including government departments, creative agencies, web developers and, of course, software engineers. We have no doubt software engineers will long continue to use the project management principles their own profession created to build useful things for the future.
Software project manager: role and responsibilities
Most software development teams will benefit from working with a specialist software project manager. This person leads the team through the project management process. They are likely to be well qualified to manage software projects, with a combination of software development knowledge and project management experience.
Responsibilities commonly listed in software project manager role descriptions include:
Leading and assisting software projects
Delivering status reports to senior stakeholders
Leading on change control (this process ensures changes to a deliverable are within accepted parameters)
Managing multiple projects at once
Creating and maintaining project documentation
Measuring project performance using appropriate tools and metrics
Another thing the software project manager has to do well is communicate. In particular, they will need to act as an intermediary between the client or commissioning stakeholder and the development team. This helps the team’s developers focus on doing what they do best, and also gives the commissioning stakeholder a consistent point-of-contact.
The project manager also needs to do all they can to ensure the project management process keeps ticking over. They’ll need to ensure the team does its work according to its chosen project management methodology, while optimizing the project management process to make it work for the team.
Can you manage a software project without a project manager?
Either by choice or through budgetary necessity, some software development teams use a project management approach without the involvement of a project manager. If that sounds like your team, rest assured that project management duties can usually be carried out perfectly well by regular software development team members.
If you’re going to take project management “in-team”, just make sure you have these three things in place:
Strong project management capabilities in the team. This is best achieved through training and practice. A good way to get all team members up to speed is to have responsibility for project management rotate through the team from project to project.
Clear allocation of project management duties to team members, so everyone knows who’s doing what in each project.
An intuitive project management platform, with attentive customer support.
Recommended project management tactics for software development teams
While a generic project management approach usually works for managing software development projects, we would recommend incorporating the following specialized methods into your process:
Project estimation techniques
The scope of a software project can be hard to define. How can we estimate how much work it will take for a team to create something that’s new to them, and maybe even new to everyone?
Software project estimation is difficult even for experienced software engineers, and it’s an especially challenging problem for non-technical stakeholders, who may lack a developer’s intuition for the complexity of software development tasks.
We can overcome the challenge of estimating software development project scope by systematically using project estimation techniques. We recommend exploring the following options:
, where elements of project scope are estimated based on comparison with similar elements of previous projects.
Parametric estimation, where measures such as the average cost of writing a certain number of lines of code are used to estimate project cost.
Management of project scope
Software projects can be vulnerable to excessive scope creep, also known as feature creep. We’ve no doubt that the very thought of this is enough to give some of you the heebie-jeebies.
Scope creep is where a project’s requirements increase greatly over the project’s lifetime. A certain degree of creep is to be expected, but too much of it can prevent projects from getting delivered on-time and on-budget.
The first and best precaution you can take against scope creep is to take a thorough and critical approach to project planning. It is far preferable to identify a potential issue during the planning phase, rather than during project execution, as this will enable you to carefully plan a workaround, rather than adding project features on the fly. During project execution, you can ward off excess scope creep through careful management of project change.
Project risk management
‘Project risk’ is a specific project management term which may not mean exactly what you expect. A project risk is any event outside of a project which could affect the project’s outcome for better or for worse. This could be anything from the unexpected launch of a competing software product, to change in user behavior resulting from a global pandemic, to a flock of birds flying in through your office window and pecking all your computers into millions of pieces with their sharp little beaks.
Needless to say, some risks are more worthy of monitoring than others. The most convenient way to monitor a project risk is to add risks to your project management platform. This will remind you to keep checking in on the risk factor, so you can keep adapting your plan to suit emerging situational factors.
Project management tools for software development teams
Software development teams tend to use a project management tool to help deliver their project. This tool provides a digital project workspace where team members can collaborate and track all the moving parts of the project. All the processes of project management should be facilitated by this tool.
Some software development teams may choose to integrate their favourite third-party tools with their project management tool. For example, Teamwork’s integration with Dropbox enables teams to attach files to tasks in Teamwork directly from their Dropbox accounts. If you plan on integrating a third-party tool with your project management tool, just be sure to check whether the integration is facilitated, as creating your own bespoke integration could prove difficult, or even impossible.
With the right project management tool on your side, your project management process will be equipped to run smoothly and deliver great software.