I hate Josh. No not my little brother, I mean the “quirky” software developer described in Eric Spiegel’s harrowing tale of a borderline autistic douchebag developer that he had the misfortune to happen across.
Let me say right off the bat, that if I write something in five lines of code that is easily understandable and somebody else writes the same piece of code in one line, but it takes half an hour to dissect and understand, then that person is not a coding genius. I do genuinely believe that code can and should be largely self documenting, but just because you say it is, doesn’t make it so. The ability to write (hack together) obfuscated code is not one that I seek, I am after easily understandable, predictable, maintainable code and I would hope that you are too. For me then, the most poignant thing about Eric Spiegel’s article is not the fact that people like Josh exist, but the fact that Josh’s manager (and there are plenty like him) was completely complicit in his behaviour, worse than that, he was encouraging it.
It will always be quicker to have Josh hack up some quick fix solution to a problem then have another member of the team fix and document it properly. This is kind of a self fulfilling prophecy in that as more of Josh’s intractable code enters the code base, it will become less serviceable by the ‘regular’ members of the team, thus requiring more of Josh’s time (and intractable code) to fix it. There are several issues here, not least of which is that having one member of your team holding all of the knowledge in this way is pretty dumb, add to that the fact that the other developers on the team will quickly grow tired of attempting to maintain such a code base and will either up and leave, or worse still, fall into Josh’s bad ways themselves and you can begin to see the snowball forming. Sure it will cost you more in the short term to do things properly and it will look better to your boss/customer if you deliver working solutions in ridiculously short timescales, but ultimately it will cost you far more when you have to tidy up the mess and you *will* have to tidy up the mess.
I’m just saying.