⏰ How to Finish Projects on Time

Deadlines are inevitable. Learning to navigate them is the key to landing project after project, on time, while minimizing stress.

Welcome to the ninth issue of the Software Mastery newsletter.

In this issue, I want to talk about deadlines.

From my experience working on features and projects as an intern and full-time software engineer, projects are often behind or barely on schedule.

Having navigated this fine line multiple times before, I have some tips on handling deadlines.

Avoiding Crunch Time

As they say in medicine, prevention is the best cure. The first opportunity to prevent a software project from slipping behind schedule is to plan properly in the first place.

From my experience, these are the four most common planning failures:

  1. Not being aware of the long pole. In project management, the long pole is the task that takes the longest to complete. Typically, you should start this task (or one of its prerequisites) as soon as possible because it has the most impact on the overall timeline.

  2. Forgetting about dependencies on other teams. At mid-size and large companies, delivering substantial features usually requires collaboration between multiple services/teams. Onboarding can take a while, as it can require talking with other teams that serve many clients. The key here is to start these communications early and follow up if you don’t get a response.

  3. Underestimating how long it will take to implement something. When breaking a project down into tasks, it is common to base time estimations on how easy something seems, which leads to underestimates. Instead, I’ve found it useful to take the time to read some code and sketch out a solution, which forces you to acknowledge the implementation details.

  4. Not planning for unknown unknowns. Despite our best attempts to plan upfront, we inevitably come across something we didn’t (or couldn't have) considered. To combat this, I’ve seen teams arbitrarily add padding to their project deadlines (e.g., by adding an extra week or 10% of the total project duration).

Adjusting On The Fly

Even with perfect planning upfront, things can fall behind in the middle of a project. I’ve observed that there are a few common ways teams course-correct if a project is starting to fall behind:

  1. Delegate tasks. Sometimes, borrowing an engineer for a few tasks might get a project back on track. Note that this approach only works if you delegate early (see Brooks’s law, which famously observed that “adding manpower to a late software project makes it later”).

  2. Cut scope. Removing requirements from the initial launch can help you meet deadlines. For example, if you’re working on a list page for a mobile app, maybe it’s acceptable to ship with pagination and search features but defer sorting and filtering. This approach requires negotiating with your project manager.

  3. Move the deadline. If you don’t have a hard deadline and aren’t able to make the timeline work, then you’ll have to push the deadline back. The important thing here is to manage the communication with your leadership; they should already know the project is falling behind, so it shouldn’t be a surprise that the project will be late.

Your Turn!

I hope this issue gave you some ideas on navigating project deadlines.

Deadlines are one of the most stressful parts of the job; I believe learning how to manage a project end-to-end can make a huge difference in your physical and mental health.

Do you have any project management tips for software engineers? Reply to this email or comment below to let me know!

Best of luck,

Sammy

Reply

or to participate.