Main illustration: Olenka Malarecka
People often shudder at the thought of working to a deadline. They can be seen as stressful, constraining, and arbitrary.
It can sometimes feel like delivery dates are chosen on a whim and imposed randomly. However, you should never feel that the number of hours your team will between now and then is the only way you can affect the outcome.
Project planning isn’t easy. You’ve probably already heard the famous line: “good, fast, cheap; pick two.” While quality, speed, and cost are levers that you can pull, delivering on a project is often more nuanced than that.
Delivery dates do matter
Building features takes a lot of work. Once you’re ready to ship, more work needs to be done by others to bring the feature to market. Without working to dates, it becomes very difficult to coordinate that work. Delivery dates do matter. While working without the pressure of explicit deadlines can feel liberating, it also increases the chance of distraction from the overall goal. Deadlines help us stay focused, aligned, and driven – and can be used to keep project scope in check.
“Deadlines help us stay focused, aligned and driven – and can be used to keep project scope in check”
At Intercom, we have shipped some ambitious projects to tight deadlines in the past year. Focusing on dates allowed us to set project milestones, line up cross-team collaboration, and keep only what was necessary in scope.
How to craft engineering deadlines
It is crucial for everyone to understand why engineering deadlines matter to other functions within your company. Everyone on your team should know why the date was chosen. They should feel that they have some input into this – having a sense of control over deadlines helps prevent the feeling of helplessness and dread that deadlines can inspire. Here are the steps we take to craft effective deadlines:
- Help set the date by agreeing on the scope of the project and estimating the amount of work involved.
- Bring the stakeholders together to compile a list of possible features.
- Mark each as either table-stakes, a differentiator, or a nice-to-have and have an idea of how much effort each might take to build.
- Break a project into milestones and set dates against those milestones.
- Evaluate your progress against the dates frequently.
If for some reason the date is sooner than you are comfortable with, let someone know! It might make sense to get more people on the project or reduce unnecessary scope. Talking to a product manager or designer about your concerns is a good start.
Adjusting project scope and managing uncertainty
A big part of how we successfully handle deadlines here at Intercom is by adjusting scope. When we commit to a launch date we’re always flexible about the exact set of features we’ll ship. Dogmatically following a plan in the face of new information leads to death marches. Success is shipping the best product we can, not a set of features we agreed on months ago.
“Success is shipping the best product we can, not a set of features we agreed on months ago”
Estimating software projects is notoriously difficult. A team can get better at it over time, but without the accountability that dates bring it’s difficult to look back and spot improvements for next time.
Estimates should have error margins to account for this – it’s dangerous to be too optimistic. No matter how good you get, once you introduce change, you add more uncertainty.
Listed below are some factors that might add uncertainty, and you should expand the range of your estimate if you spot them:
- Does the team have a different makeup than before?
- Does the project have different dependencies than before?
- Are you using unfamiliar technologies or integrating with an API that you’ve not used before?
- Are there any new engineering processes that might slow things down?
Planning timelines is about more than just work
Deciding how much effort a project will take is only half an estimate. Putting dates against project milestones is much more effective. A team isn’t made up of easily calculable worker units – people have lives outside of work that have to be considered when planning. Laying a plan out on a timeline makes you think about other commitments that the people on your team might have: holidays, anniversaries, training, meetings. Life can’t be put on hold until the project is completed.
“Sequence your work in a way that progressively reduces the most uncertainty”
Revisit your estimates during a project. Sequence your work in a way that progressively reduces the most uncertainty. Even small things can hugely reduce risk. Look for a point of contact for each team you work with. Talk to people – make sure everyone agrees on exactly what you’re building and why.
Get stuff done with engineering deadlines
To-do lists and SMART goals are great tools for getting stuff done, but goals without deadlines are mere aspirations. Adding dates turns these promises into commitments. You are probably already doing this if you use sprints or time-boxing. Adding a deadline to your goals and scheduling time in your calendar to work on them can be more effective – if only to remind you when you are busier than you thought.
Clear engineering deadlines have had a transformative effect on how we work and helped us ship a huge amount of quality product on time. If you find yourself having a knee-jerk reaction when a deadline comes your way, rethink your response. Embrace the deadline.