Goals of Project Management in Software Development
This isn't about a specific framework like Agile, Scrum, Kanban, etc. Instead, it's about practices that should work with them all. You should use those frameworks as tools for your end goal, not as a strict checklist to follow. A good project management plan should cover how to do these three things well:
- Build the right thing
- Build the thing right
- Build the thing fast
Key Roles in a Software Development Team: Product Owner, Project Manager and Individual Contributors
To build a successful product, you'll need a team of people with different expertise. Each person needs to know exactly what their role is and how they can do it most effectively. Here are some key roles in a software development team:
- Product Owner: The PO is in charge of the “build the thing right” part. This person acts as a bridge between the stakeholders and the dev team. They need to be a good communicator and should explain the goals of the product to the dev team. They should prioritize the tasks, so the team can focus on the most valuable tasks for the business.
- Project Manager: This person is in charge of the “build the thing fast” part. It's their job to make sure the team is as efficient as possible. They need to manage people, remove blockers for the team, and increase productivity. They should coach the team, analyse progress, and make changes to deliver things on time.
- Individual Contributors: They are responsible for the “build the thing right” part. This includes people from the dev team, the design team, the QA team, etc. They should build the product to a certain standard. They need to meet the requirements set by the PO.
Document the Project Management Process
You should have clear documentation on the steps each team member needs to take and when. This ensures everyone is as efficient as possible. Include all the steps of the project management process and what each team member needs to do.
Make sure to update this often as processes may change over time. You can also automate some of the tedious steps that the team members need to do to keep it updated.
Create consistent task descriptions
You should create a consistent task template for all similar tasks. The template can be different for each team or company. But, it should encourage the creators to include all the relevant details.
Our templates look like this: As a <user role>, I want to <feature description> so that <benefit>. We also leave some room for more context and comments from the person creating the task. All task descriptions should have the following:
- Who will benefit from the task
- Clear explanation of the requested change
- How will it be beneficial for the business (with calculations or estimated improvements if possible)
- Any examples by other sites/apps
- Does this have a fixed deadline
Create a task checklist
You must have a clear idea of what you should finish, to complete a task. This helps with sprint reviews, or individual PR reviews. A checklist is a great thing to include in a task. This helps the task creator to communicate to the developers exactly what they want.
How to estimate a task
This is one of the most difficult things to do. But for effective project management, it is something we have to do. Without estimates, it's hard to prioritize the work.
It also makes it difficult to communicate the status of the project to the stakeholders. Some teams prefer time estimation, while some teams prefer estimating using story points. Our team moved from time estimation to story point estimation. Here’s a helpful guide on story points estimation.
How to prioritize tasks
A good prioritization system will make sure your team is focusing on the right things. If you already have a good system for creating tasks and estimating them, then this part should be easy.
Your team needs to settle on a consistent and clear prioritization system. In our team, we're using this formula, (Business point + Time Criticality) / Story points. Business points,
Time criticality and Story points all use a modified Fibonacci series as the values, e.g. 1,2,3,5,8,13,20,40, etc. A good priority formula should account for the following:
- How time sensitive a task is
- How much value will it bring to the business
- How complex will it be to finish it
Setting up a review process
At the end of each sprint, there needs to be a review. The team should go over what they accomplished and celebrate that. They should also look at any problems faced during the sprint and find ways to avoid that in future sprints.
It can be hard to schedule time for the review in a fast-paced environment, but this is one of the most important parts of the process. You should check that your process is actually working and meeting your needs.
Make sure you're not blindly following a plan just because it's easy and that's how you've always done it. You should track the key objectives of your business. Then see if the work you've done in your previous sprint has actually got you closer to the objectives or not. If they haven't, then you need to refine all the items mentioned above for the next sprint.
Besides the sprint review, you should also have a check-in process to see how the team is progressing on the tasks. This doesn’t need to be as thorough as the sprint review. This should remove any blockers from the team and figure out if the team is on track or not.
Communication within the team
You should have a clear communication system set up for your team, especially if it’s a remote team. Try to keep it as asynchronous as possible. Tailor your communication for the intended audience.
Highlight the stuff that your audience actually cares about. Be careful not to have too little communication, which can make people lost. Also, don't over communicate, which can cause information overload. When creating your process documentation, include how the team should give out updates.
Conclusion and checklist
I hope these tips have helped you decide what things you need to do next for your process. Here’s a list of stuff that will help you make your process better:
- Make sure each team member is aware of their role in the team.
- Make sure each team member knows the full process they should follow as part of their role.
- Have a consistent Task template and ensure everyone follows it.
- All tasks should have a checklist that the team can review.
- Estimate tasks in relative values instead of an absolute value like a time duration.
- Each task should have an estimate for it.
- Create a prioritization system which should sort the tasks automatically for the team.
- Have a template for your review process. Make sure to tie down the reviews with the key metrics your business cares about.
- Have check-ins within sprints to check whether the team is on track or not.
- Set up async communication between the team and the key stakeholders. Inform everyone about the key areas they actually care about. Tailor your communication for the intended audience.
- The Product Owner should communicate the business priorities to the dev team.
- The Project Manager should inform the Product Owner about the status of the different work streams.
- The Dev team should communicate the changes made to the Product Owner.
- The Product Owner and the Dev team should inform the design team on the goals of the designs and the technical limitations for the design.