Uphill Battle
Time: 21:20
Place: kitchen table
Mood: dull
I hate my job. When I see parts of the code of our current project, I want to puke my guts out. It doesn't help that one of the people who wrote it used to be my boss. Don't get me wrong, some of the more disgusting bits of code I have even written myself, but not all of it by far. It didn't help to start without having a clear idea of what you want the software to become.
"We want to use large amounts of data, so better use a database."
"There will be a lot of users at the same time, so make sure that's not a problem."
"Make the front end look good."
Okay, err... well, if that's what you want, that's what you get. Now, where are the specifications?
"What do you mean, specifications? Just write the damn thing, it can't be so difficult!"
And so we wrote, implemented and hacked. Everybody in their own way. Oh, there were pretty harsh restrictions in the so-called style guide in order to make sure the code was consistent and standardized. Too bad this guide only referred to the layout. Make a space between the parenthesis and the parameters. Yeah, right.
"Woah, waitaminute! That's not how we wanted it!"
Oh, okay. What do you want to be changed?
"Pretty much everything! Make it better, faster and more robust! And while you're at it, could you please add this and that feature? We already promised it to our potential customers, you know."
And so we hacked, hacked and hacked some more.
"Testing? What is testing? If you want tests, you should meet once a week for a few hours and use the software the way a customer would. Sorry, but we really cannot hire a tester at this point. Do it thoroughly, though. We don't want any complaints, do we?"
***
I could have gone on for quite a while, but I reckon you have a pretty good idea by now. There's no doubt that the software is working (kind of stable, even), but there is no maintainability whatsoever. In order to add even a very simple feature, it's necessary to take apart big parts, rewrite them and put them back together.
When I started, I neither had experience with the programming language nor with large projects in general. That's fine and I am grateful for the chance they offered me. However, nobody had any such experience, we just learned it as we went along. And now we pay the price. And that's where this post started: code-induced desire to puke.
Here's how Jim Blinn once put it: There's never enough time to do it right; there's always enough time to do it over. True that.

No comments:
Post a Comment