🛑 Don’t Start Coding Yet: Here’s What Great Engineers Do First
Before jumping into coding, top software engineers make a plan. By reducing scope creep, managing dependencies, and setting clear milestones, engineers can deliver better results on time
Sometimes, in a corporate job, it feels like you spend more time talking about coding than actually writing code.
Surprisingly, these discussions are very necessary.
It’s not about pushing engineers to meet deadlines earlier.
It’s about managing complexities when multiple teams are working in parallel.
In this article, we’ll explore tactics to make software development more efficient.
⌛ Open-Ended Work in Software Development
Software engineering isn’t like assembly line work, where tasks are repetitive and predictable. Instead, it’s a process of continuous problem-solving that often requires experimentation.
This means that, without a clear timeline, engineers would over-analyze problems, resulting in delays. For example, tasks like refactoring or optimizing code can easily spiral out of control because, in theory, "it could always be better."
Without a structured approach, these open-ended projects can drag on indefinitely, making it difficult to deliver timely results.
😷 Parkinson’s Law as the disease
One key concept that affects all projects is Parkinson’s Law, which states that “work expands to fill the time available for its completion.”
Without a deadline or estimation as reference, all tasks would expand unnecessarily
For project managers, this lack of structure makes it hard to plan effectively because they have no sense of when a task will actually be completed.
💊 Artificial Deadlines as the cure
Artificial deadlines are self-imposed or team-imposed deadlines to create urgency and structure.
They counter Parkinson’s Law by setting a time constraint, forcing engineers to focus on delivering a functional product within a specific period.
These deadlines:
Drives productivity: With limited time, engineers are pushed to prioritize the most critical tasks.
Prevents scope creep: Deadlines keep projects from expanding uncontrollably, ensuring tasks don’t linger.
Encourages incremental development: Rather than aiming for perfection, the teams focuses on delivering a minimum viable product (MVP), which allows for future iterations.
This structure ensures that progress is made in incremental steps.
In large-scale software projects, different teams often depend on each other’s. For example, the frontend team may need the backend to complete an API. Any delay can create a cascading effect, slowing down the entire project.
With artificial deadlines, teams can synchronize their work better. This synchronization ensures that all teams are working in parallel, hitting their intermediate milestones.
⚙️Working Backwards Planning as the methodology
Working backwards planning starts with the deadline and works backwards to define key milestones and dependencies.
By doing so, teams can break down large projects into manageable chunks, like sprints, making it easier to track progress.
Working backwards planning also provides clarity on dependencies between tasks and teams.
I’ve written about the project management triangle before, and I keep coming across situations at work where a “working backwards” plan has been helpful.
Recently, I made a forward-looking estimate for a project, taking all dependencies into account. I realized we wouldn’t meet the deadline. This deadline was crucial because other teams were relying on it.
After analyzing the tasks on the critical path, we found a dependency on one of our other projects that was only necessary to meet a P1 (lower-priority) requirement.
Upon reviewing it further, we confirmed this was indeed a P1 requirement, not necessary for the first iteration of the MVP. So, I removed it from the plan and began working backward from the deadline.
By reducing the scope of the MVP, we were able to meet the deadline. Having a clear understanding of which milestones were essential and how tasks were interconnected allowed us to make better, more informed decisions.
🎯Conclusion
First, recognize your enemy: Work tends to expand to fill the time you give it. This is known as Parkinson’s law.
Second, know how to counter it: Artificial deadlines force you to limit the time allocated, ensuring the work fits within that constraint.
Finally, adopt a structured approach: A working backwards plan will enhance your time management, boost productivity, and drive the success of your software projects.
🗞️ Other articles people like
👏 Weekly applause
These are some great reads from my last week:
Leetcode is Unavoidable so Make It Count by
. Rather than complaining about the rules of the game, learn them and use them in your favorMastering Time Management by a Staff SWE at Meta by
and . Productivity sounds like rigid rules. But the most productive people acknowledge the unexpected, and even plan for it. Here’s from the perspective of a Staff engineer.3 tricks to convince people using Data by
and .This article is about the book Making Numbers Count. It’s an interesting one because it’s not about a cold conversation about numbers, but merging numbers with annecdotes.The Simple Trick to Learn From the Leaders You Admire by
You’ll only learn from them by actively engaging with them and the work they are doing.Out With the Old: 3 Steps for a Successful Software Migration Plan by
and . This one really resonated after I finished writing this week’s article. They highlight the importance of creating interim milestones for the project, in this case for a migration.
Thanks for your support growing strategize your career to 12.8k subscribers.
Share the newsletter in your socials to earn for free multiple months of the paid tier
Unsurprisingly, in my freelancing past, the projects and tasks without deadlines were never finished, with an exception or two. :)
Deadlines get a bad reputation in software development but in my experience that originates from setting unreasonable deadlines.
Thanks for mentioning my article! 🙌
Solid advice, Fran and appreciate the mention 🙏