A professional software developer needs to balance quality and deadlines.
That shouldn’t be a controversial statement, but these days, it seems to be one.
Whenever I discuss this topic, I’m always met by developers who vehemently disagree.
The consensus seems to be that deadlines lead to bad code. Developers are forced to churn out feature after feature against the clock and that invariably ends up in an unmaintainable system.
I’m not completely unsympathetic to that argument. Most of us have worked in a Deadline-Driven Development team at a certain point. It’s not that great.
A system where management (or sales) comes up with the deadline and where developers just need to make it happen, will lead to disaster without a doubt.
The opposite of such a system is not “it’s done when it’s done”. It’s not #nodeadlines.
It’s a system where the deadlines are negotiated between all parties involved in building the product.
That means software developers have a say, but also a stake in the planning.
How easy life would be if developers could just tinker until they feel the thing is done?
How stress-free would it be if we could always deliver “a slice of functionality” without thinking about the bigger picture?
That’s not how commercial software development works at all. We need to be mindful of planning, budget, quality, design, …
It takes a village to build a product. We need salespeople to sell. We need designers, a few managers, testers, … It’s not just about software developers, right?
So, if we are building a product together, we need to support each other.
A sales guy who promises the moon and then throws it over the wall is not a team player.
Neither is a “deadlines are not my problem” developer.
Readable, maintainable code is important. Code rot is a real issue. Developers need to guard that. They are the only ones who can.
But they have to make trade-offs to support the budget, the sales process, the stakeholders.
If you’re a senior developer, that’s an unnegotiable part of your job.
So, instead of complaining about deadlines or pretending they don’t matter: take them into your own hands.
Negotiate, push back where you need to, compromise where you can.
If you won’t set the deadline, others will have to.