A Conversation about Craftsmanship
Botch jobs in web development
I’ve read about those internet people and their best practices, but those don’t apply to me.
Those people are the same as you. They spend most of their time quietly building things and making mistakes, except they took a little time to write about it so you don’t have to make the same mistakes.
But I have to finish this thing right now because my manager asked for it.
Your manager won’t ask you to please tidy your code. Your manager doesn’t give a shit about how the code looks. Code maintenance is not a business objective. It’s a responsibility that, if neglected, translates to problems in reliability, performance and productivity, all of which affect business objectives. Your manager probably doesn’t realize you’re letting them down since the ship is cruising along at good-enough speed. You’re letting down the people who have to deal with your mess because they have to finish their thing right now because their manager asked for it. You’re letting down the people who actually use the thing you built.
But doing things properly takes longer and we can still clean it up later.
Doing it right only takes longer if you count the time to get rid of the shitty version first. Think about how long it takes to build something, cut it in half and use that time for thinking instead. Everyone with a hint of organizational awareness knows “cleaning up later” is bullshit. You’re openly admitting that you’re lazy without realizing it.
But it works and it doesn’t crash the server most of the time.
Machines have it easy, they only have to execute what you tell them and they don’t feel pain. Humans have to navigate the incoherent maze that you created. They have to fix a bug, they wonder how something so simple can be so slow, or — gasp — they have to build something on top of it. You have probably never felt that heavy disappointment when opening a file, as if you had just discovered an inch of water on your kitchen floor. That is what everyone else feels when they have to engage with your output. If they’re smart they will just move along and start from scratch. Congratulations, you have created legacy code.
Designers keep telling me about simplicity and other hippie shit, but I’m here to code, not to think.
It doesn’t take arcane ideas like “reducing complexity” to show what’s wrong with your approach. You build things that solve the exact problem, at this exact point in time. There are no useful by-products, no improvement to the broader context, no value beyond the sum of parts. Picking up where you left off sparks disdain instead of delight. And the chance that anyone, including you, will be able to do anything useful with your output three months down the road is zero.
But producing unmaintainable spaghetti code keeps me employed.
Undeniably true.
If you work for an agency, rotating projects and clients every few months, feel free to disregard all this and may your soul find peace eventually. If you work on the same code base every day, there’s no excuse for bad craftsmanship.