Spend any amount of time in this industry and you'll eventually end up playing the hero. Maybe you meet that deadline by pulling a 70-hour week, or you fix that production issue by editing a script or database procedure directly on the server. You shipped the product, you fixed the bug, you "got the job done". You're a hero, right?
The only problem is, heroic behavior is dangerous. I've played the hero enough times to know what happens after the dust settles:
- You pull a 70-hour week and hit the deadline, but the code sucks. It isn't tested, it has bugs, or it just feels like a half-assed feature.
- You hot-fix a file on the web server, but forget to update source control. The next deployment replaces your fix and re-introduces the bug.
- You hot-fix the database server, and the next deployment crashes because a table or column already exists.
- You burn out, lose focus, and make stupid mistakes.
The common pattern here is that you've
achieved a short-term goal at the cost of highly unpredictable future results. Someone, somewhere, will have to clean up the mess when it catches them by surprise.
In other words, you've created
bad technical debt that is unintentional, hard to manage, and hard to quantify.
So what's the solution?
It's certainly easier said than done, but the solution is to stay disciplined and stick to your process.
If that process says you write tests first and get QA feedback before committing to trunk, then that's what you need to do... even if it means missing a deadline.
If that process says you must create a formal release package to modify the production database, then that's what you do... even if it means taking longer to fix the bug.
Discipline yields predictability by forcing you to be proactive. It helps minimize future surprises and prevents you from becoming overly reactive, which can often lead to a cascading series of errors when you start jumping from fire to fire.
When to cheat
There are obviously exceptions. If the server is totally down, and you know of a quick fix to bring it back online, then maybe you should fix it. But if you've internalized these principles then you'll feel real damn uncomfortable doing it, and that discomfort will remind you to take the necessary "after-action" steps to pay back that technical debt immediately after the crisis passes.
Remember kids: avoid heroics. Real, lasting value comes from staying disciplined... especially when you feel pressure not to.