Programming is too easy

Another day, another coding horror. *sigh* not how I wanted to start off this week. At least the problem isn’t technical, but rather an embarrassing misunderstanding of a business rule – and of course the system’s in production. It could be the client’s fault for not being clear in the first place, but that really doesn’t matter. It’s frustrating, a programmers happiness is directly tied to the quality of the code he or she produces – end of story!

Jeffrey Palermo talked about this very same thing not too long ago, and all of his points were bang on. He’s particularly right about how easy tools make it to get something, anything, out the door. There are a lot of parties responsible for the current state we find ourselves in. Schools quickly come to mind: be it I.T. condensed courses or Universities. Joel went on and on and on (and on and on) about how important knowing C is for new grads, and I agree. Of course, individuals are to blame too. How many developers got into it for the money instead of actually loving it? Your misery is well deserved. How many refuse to learn from their mistakes?

As easy as it is to blame schools or even individuals, I put almost all the blame on lazy and underskilled managers and HR departments. Managers (or leads, or whoever does the hiring) need to know what they are looking for as well as how to find it. If you want a junior programmer, make sure you have the right team/person in place to properly mentor him or her. Jeffrey talks about the Apprentice/Journeyman/Master relationship (they are called Artisan’s in WoW) and in my experience it’s a vastly underused concept in software development.

I’m sure money plays a big part in all of this, but I’m reminded of a great book called Peopleware by Tom Demarco and Timothy Lister. There’s pretty strong evidence that the best programmers outperform the worst programmers by a factor of 10. I used to think that there was no way one developer could outperform another one by a factor of 10. I now have no doubt of it when you take into account the total cost of a project. Back to the figures, it means that if you’re starting salary for a new grad is 40K (doesn’t necessarily mean they are the worst), you’ve got a steal on your hands paying 100K for an actual no-BS senior guru. I don’t know about everyone else, but 100K for a non-consultant in Ottawa isn’t going to happen. Instead, what you end up seeing are lazy HR departments flatten out salaries and lump them into a few categories (or maybe just 1: “Programmer”). All this isn’t to say that you shouldn’t hire new grads. You might end up paying a little more for what you get in the short run, but in the long run the investment will be worth it.

I will go off a little and point out that Microsoft doesn’t make it very easy to determine a developer’s skill. I’m specifically talking about their certification program. Maybe it makes sense for I.T. professionals (you know, network people, help desk, cicsco/active directory/novell…), but when it comes to software developers, the MCP/MCAD/MCSD are total failures. Microsoft needs to cancel the MCP/MCAD/MCSD program for developers. I took an MCP test, thinking that I would get my MCSD. It was a joke of jokes – 20 minutes of my time, answering superficial questions. A LOT of the questions actually asked for answers or gave examples that promoted BAD practices. Worse, it’s extremely easy to cheat on these exams. If you see a job description asking for MCAD/MCSD certified people, DON’T APPLY – unless you absolutely have to. It’s a tell-tell sign of a shop that doesn’t know HOW to look for people. Even if you are the right person, you’ll be working with, or replacing someone who isn’t.

Thanks for letting me fume a bit :)

This entry was posted in Grab a coffee before reading. Bookmark the permalink. Follow any comments here with the RSS feed for this post.

10 Responses to Programming is too easy

  1. Samualx says:

    I have both Sun and Microsoft certifications and I only did them to force me to study the technologies in depth. I choose the programmers I hire purely on their ability to express programming concepts and methodologies. I interview a lot of developers and I have found, since the late nineties, that even most university CS major grads don’t have a clue about real-world software development. I’m more likely to hire an eager teenager who’s built his own shareware products out of passion, than a fresh CS grad. Though I have found EE grads to be better programmers than CS grads. I think our universities are screwing up worse than Microsoft or Sun is with their cert programs.

    BTW-It would be very *hard* to cheat on the Sun Certified Java Developer exam. That exam requires that you write a client/server database application from scratch (implement your own low-level IO, row-level locking, threading, etc…) which is reveiwed by a Sun developer, then you have to submit an essay describing exactly why you made the choices you made. Because the specs change often and you are being reviewed by a human, they have made it easier to do the assignment than it would be to cheat. I have passed many university-level CS courses and none were as comprehensive as the Sun exam assignment.

  2. jasony says:

    I’m actually a recruiter and this exact issue frustrates me deeply. I’ve been coding for 12 years and have won many programming contests at the university level. So when I screen someone and they pass: dammit they’re good. However the decision makers are inadequately informed on what it takes to be a good programmer and we suffer as an industry. Any and all business justifications for why it is actually valuable to be a good programmer could make the difference in a lot of careers. Currently I’ve been unable to do it myself. They screen on keywords (MCSD) with no idea at all of what that means or the quality (or lack) of that test.

    Please help us all… what’s so great (to business) about being great? It’s self-evident to us. I need 2 sentences that would convince someone who literally has no idea about what it is programmers do

  3. Adam says:

    Another good book that goes along with what Karl is talking about is called Software Craftsmenship by Pete McBreen. It goes into the idea of small software teams vs. large engineering teams.

  4. Ian Ringrose says:

    I think the Microsoft certifications are VERY useful when looking for staff, but ONLY when the person has LOTS of experience on another platform. E.g. if you are looking for someone to write C# code, and you see a CV from someone that has been doing Java/C++ for years but will no C# experience, then the fact that they have MCAD/MCSD is of value.

    MCAD/MCSD without experience should == no job!

    You can only tell someone programming skills after they have been working for you for a few weeks, you may get some ideal from the interview. Looking at a CV is just a way to save your the time of interviewing lots of no hope cases.

  5. Matt says:

    I disagree that that Microsoft doesn’t make it very easy to determine a developer’s skill. I interview a lot of candidates and one certainty is that if a CV has a Microsoft certification on it the candidate is completely awful. For a CV to avoid getting chucked in the bin immediately we see a certification on it it has to show very impressive experience and include certifications from other vendors.

  6. karl says:

    Eric/Greg, I didn’t know about partner points – I think that’s a real shame. I guess it’s good to have your cake and eat it too – without knowing anything about the partner program, I wouldn’t sell out on quality though.

    On a side note, MVPs don’t give you partner points…odd.

    My broad statement about avoid jobs that ask for MCP/MCAD/MCSD is probably wrong. Originally I had planned to say something along the lines of “if it’s a short job posting with that listed as one of few competencies…” but I decided to be more glamorous than that (sensationalize first, apologies later?)

  7. Greg says:

    beat me to it eric :)

  8. Greg says:

    “If you see a job description asking for MCAD/MCSD certified people, DON’T APPLY – unless you absolutely have to. It’s a tell-tell sign of a shop that doesn’t know HOW to look for people. Even if you are the right person, you’ll be working with, or replacing someone who isn’t. ”

    I think this is actually Microsoft pushing even harder on the industry to promote these as you state “worthless” certifications. In order to be a MS partner you need to have certain levels of partner points Organizations that are MS partners will look at people coming in with a certification as a benefit because it will help them get more partner points.

  9. ewise says:

    What about shops that want mcad/mcsd people because they want the partner program points?

  10. Thanks for the link. I think one of the reasons the average Java programmer is better than the average .Net programmer is that there is a higher bar to entry. In .Net, you just drag and drop, and that’s it. Declare success!

    A lot of people criticize the MCSD program. I earned my MCSD for .Net because it couldn’t hurt, and studying for it gave me a broad understanding about .Net. The certification proves that there is an understanding of the technology, but it says nothing about the knowledge of software.

    I’m currently looking for a programmer, and certification is a plus because it shows passion, but lack of it is not a negative. I have to evaluate the whole package, and my verbal, written, and code tests weed out the non-starters.

    I have a lot of applicants, but I haven’t found a great one yet.