Project management best practices
Following these rules will help you to manage a big project more effectively.
- Every task should be assigned to a single directly responsible individual.
- If a task is assigned to a team, then it is not assigned to anyone.
- All discussions regarding a project should happen in the relevant public channel on Slack. No private DMs allowed.
- A task should remain in 2 states:
- Waiting for a timeline
- Has a timeline
- A task’s status should be one of these:
- Yet to be picked
- In progress
- Done
- Delayed
- At-Risk
- Keeping multiple trackers does not lead to better project management. You just need a single source of truth, which can be even a google sheet. Keep it simple.
- Different stakeholders have different needs when it comes to status. Your CEO or VP won’t have time to go into the details of each individual project. For them a simple card on asana with the status updated regularly would work. For active collaborators who need more context, make sure they can get more details in your spec. I always keep the status for a project at the top of my spec. If they need more granular info they can always scroll below and see details on completion of each milestone. Follow the pyramid principle for communication. For PM, EM, and devs working on the project, the micro details regarding individual stories are kept on Jira. Tools and their stakeholders:
- Asana board with card regarding the project - CEO, VP
- Status at the top of the spec - Different collaborators who might or might not be active collaborators
- Detailed milestones and their completion %
- Active collaborators for the project
- Status on stories for each milestone on Jira - For devs and PM
- Google sheet with every dev is working on - For your team
- Keep the trackers updated. I update my trackers on Monday (time-based) or when there is a big update, say something moved to Production (event-driven project management).
- Escalate blockers early.
- Send regular status updates. I send out a weekly mail for each big project I am working on, where I highlight the following: status, % completion, details on milestones, blockers, if we are on track to meet the timeline. Everyone who is part of the project, or needs info about the project, gets cc’ed on this mail. This is the same MOM mail, which is resent as a status update mail.
- Push > Pull.
- Always highlight external dependencies on email. Slack is ephemeral. Messages get missed. The more important the info, the more critical the dependency, the more you need to make sure that the info is captured and communicated well.
- Avoid last-minute surprises. I have always hated last-minute bad news as a manager. And I make sure I avoid giving the same to my own boss. Keep giving frequent updates so that blockers are highlighted much before they delay your project.
- Delays are okay. Waking up one day before release and telling there are 10 things broken which will delay the release is not.
- If dependent items are not resolved, keep escalating till they are. If the dependent person is X, then escalate to their boss Y. If you don’t get a response then escalate to Y’s boss Z.
- Take extreme ownership of your work.
- Communicate early, and often. I don’t worry about overcommunication. It is under communication which has always caused issues for people. Not the other.
- Use documentation as cache.
- Steer into objections early.
- Follow the communication rules followed here: Lessons from working at Gojek.
- Share information in the Slack Channel where the most number of people can gain context on an issue. If you have to tag people later on it is also easier.
- Don’t create temporary private DMs with multiple people.
- Measure your communication.
- You don’t need to wait for something to go live on Production to share an update. If the project is running ahead of schedule, even better. Share an update on the Slack channel praising your developer.
- Be quick to praise others. Take blame if things don’t go as per the plan. Most managers do the opposite.
- When things don’t go per plan, people turn every discussion into a blame gaming session. Keep reiterating that you are in this together, and you will do your best till the end.
- In case a project fails, make sure you highlight both the good and the bad. Most people focus only on the bad. Write a post-mortem report with learnings, and share the next steps.
- Pin all relevant documents on the Slack channel.
- Pin spec as the master doc on the Slack channel
- Asana card for the project
- Jira epic
- Roll out plan (when you are in the endgame)
- If it is a FYI, then mark it as such. Don’t let people assume that there is an action item for the.
- Remember that owner’s word weighs a ton.
- For every project, no matter how you want to manage it, the following info should be easily accessible
- what is the plan
- what has been executed till now
- what are the next steps
- are we on track to meet the deadline
- open items not closed till now
- potential blockers
- DRI to whom people should reach out if they have any query
- Identify external stakeholders with whom you would need to coordinate for launch. Add them on Slack so that they have full context.
- If there are multiple items marked as P0, then you don’t have a P0.
- Welcome message for people joining a project channel.
- All features shipped successfully are celebrated with ice-cream parties; mostly the PM’s treat.
I am working on a master post of all principles and frameworks I use as a PM here: PM frameworks.