In the programming world, there are two tiers of people: rookies, who don’t know any better and senior programmers who do know better. Those who [should know better] are really the same as those who don’t know better. Years of experience does not always turn a person into a senior programmer. I have met people who have been programming for 25 years and still make messes and don’t seem to care. I’d rather have a RCG.
In another posting, I talked about “both sides of Craftsmanship”: and how some programs don’t really need to be superlative to be correct and provide value. However, that is no excuse for making a program that is un-maintainable.
So how is it, that [making maintainable code] matters so much to some people and so-little to others? My simple answer: Maintenance programming.
Anyone who has done maintenance programming can identify which characteristics increase/decrease the maintainability of a program. If you have done some maintenance programming, you have probably taken a solemn vow to never make messes for the next person, ever again, because you have walked a mile in those shoes and your feet will never be the same. It started out so simple when they handed you someone else’s program and said, “fix it”. Oh yes. You did manage to fix that rat hive, but now you wouldn’t wish it on your worst enemy. Not anymore. Because you have seen the evil that men do when they don’t know about maintenance programming.
To be honest, I get creeped-out when I meet a developer who has never had to do maintenance programming. This means he has never had to learn from anyone’s mistakes other than his own. Worse still, maybe he hasn’t even learned from his own mistakes. Imagine for a moment, that you are a rookie a programmer, and you are not accountable for your messes. Why would you ever want to do any better? If you are never expected to maintain your code, then your only motivation is to crank-out screens and DB calls, and never look back.
If you are only accountable to a timeline (and you will never maintain your code) then why bother doing it well? Just get it done (and someday, someone else might make it better). No blood, no foul. Honestly, when you look at it that way, you can almost sympathize with these mess-makers. That is unless, you have ever been handed their code.
When I add a person to my team, at some point during the interview, I will ask about maintenance programming. The people who try to BS me will say frivolous stuff like “yeah, it was okay” or “it goes with the job”. The ones who have actually done real maintenance programming get that 100 meter stare in their eyes and swallow the knot in their throats. At that point, they don’t need to say a thing. You just know. The room is quiet for a minute, and then you both snap out of it and continue the interview, never mentioning maintenance programming again.
Maintentance programmers understand the pain of being an elitist.