Blog
Blog
Bloody work
Bloody work
end

Here’s an entry that’s gonna stay private for a while, maybe forever. [added later: not as long as I thought - I wrote this entry at the beginning of the month but I've now quit that job, so I'm free to write whatever I like]

I’ve basically got myself into the position where I’m working as a software developer for a fairly large company who run their entire operations from a single piece of bespoke software written in PHP. The company, like many, has undergone a rapid period of expansion and the system has had to grow with them. A single developer has been there since the beginning and was responsible for most of the early groundwork that makes the system what it is today.

The problem is, while the programming techniques that were being used at the beginning of the system’s design may have been just about acceptable for a small business, there are mistakes being made that will turn a large system like this into a complete nightmare to work with, develop for or maintain. The longer it goes on, the worse it gets, and eventually the day will come when the system can’t cope anymore, either because it’s so bug ridden it’s virtually unfixable, or because simply keeping it all working takes so much time that no new development ever happens.

When the system gets to this stage, there’s really no choice but to rip it out and start again. By this time it’s normally too late to built a completely new system right from the ground up – too costly, but what tends to end up happening is that the company will replace it all with something like SAP – an off-the-shelf solution which does most of what’s needed, then the specific requirements of the company are bolted on via various APIs. Companies like SAP and Oracle make their money from coming into companies that have messy broken systems and replacing them with a generic product tailored to their specific needs.

The problem is – the generic solution is never as good as an entirely custom one can potentially be. If you can keep all development work in-house it’s a Good Thing, because it gives the business more flexibility to adapt to changing requirements. Moving to SAP is a last resort – SAP has its own set of problems and the task of installing it can be pretty immense – companies only do this when their own system has got so fucked that they basically can’t work with it anymore. That’s what’s going to happen to this company if nothing changes.

In an ideal world, it would be a simple matter of just pointing out the things that were being done wrong and putting them right. It’s never feasible to go back and change all the existing code, but you can at least make sure you’re doing things right in future and that any code that’s changed is updated to do things properly. Gradually you can eventually transform a very messy system into something that’s much more manageable.

However, it’s not as simple as that. I’ve been hired as a developer, not a team leader, not head developer, not a manager, just a developer. The guy who is leading the development team, the one who is responsible for the awful state of the code, is obviously not going to respond well to being told that he’s doing everything wrong. There’s really no nice way to put it – the code is badly designed, badly structured, badly laid out, badly organised. There’s bascially nothing good about it.

The thing is, I’m sure the developers in the team are perfectly capable and they’d produce good code if they were being guided by an experienced developer who knew what he was doing. Because they’ve got someone who’s basically made it up as he went along they haven’t got that guiding influence to lead them in the right direction, in fact they’re being lead in the wrong direction.

After trying gently to get some relatively small issues fixed and encountering fierce resistance from the lead developer, this morning I was in a crap mood and got another e-mail from him placing more obstacles in my way I basically flipped. I had been planning on sitting down with the guys I share an office with (this doesn’t include the lead developer, he’s in Australia) and talking it out with them. But yeah, my annoyance got the better of me and I decided to take him head-on.

Since starting a little over a month ago it’s become increasingly apparent to me that nothing is ever going to get sorted out in this company whilst the current lead developer is still in charge, unless he has a serious change in attitude which I’m guessing is unlikely. The only real option for me is to attempt to expose his failings and essentially try to de-throne him. This is a pretty big undertaking and quite stressful for me, but I don’t see that I have any other choice, I can’t just pretend there’s nothing wrong because that goes against my professional standards.

Worst case scenario I have to leave the company, but I’m not really too worried about that. I haven’t been there that long and I had more than one job offer before I started. I actually chose this company because I liked the atmosphere. I still like the atmosphere, but if I’m gonna have to put up with working for someone who just doesn’t get it, that kinda kills it. That’s kinda why I figured I’d skip everyone else and go straight to the source of the problem – I’ve got a lot less to lose from confronting him than everyone else, they’re more heavily invested in the company than me.

What I did was send an e-mail to the entire team basically laying into the terrible quality of the code. I tried the softly softly approach, now I’m trying the “this shit is terrible, you need to fix it else you risk losing big amounts of money for the company” approach. I explained some of the absolutely fundamental mistakes that were being made and gave suggestions on changes that can be implemented. I didn’t pull any punches either – I had to emphasize how shockingly bad the code really is. This code introduces an extra 7 dimensions into the scale of how bad code can get. Those weren’t the words I used, but I might as well have.

I didn’t target much of the critisizm directly at the team leader but it’s clear that it was mainly aimed at him, the e-mail I sent was in a reply to an e-mail from him to me, but I sent it to the whole team. I know he’s not going to like the fact that I sent it out as a group e-mail to everyone, but the point is that it’s not really him that I’m trying to convince, I’ve given up on him and I’m just trying to convince everyone else that the lead doesn’t know what he’s doing.

I’m quite surprised that he seems to have managed to obscure the fact that the code’s so bad from the people in charge. He must’ve done some serious pulling of wool over eyes to get away with it for so long. I just hope his bullshit isn’t so deeply set in that nobody’s willing to listen to reason

Leave a comment
Your Name:
Textbox
(Required)
Your E-mail Address:
Textbox
(Required - Will not be published)
Your Website URL:
Textbox
Comments:
Textarea
(Required)
 
Fight SpamCaptcha
Refresh Icon

Enter the word
Textbox
(Required)
Send Button