December 23, 2012

...Learn TDD with Codemanship

Lowering The Bar Is Not The Answer

Just time for a pre-Xmas rant before I am overcome for the holidays by gin and marzipan.

I keep seeing more and more adverts for Learn To Code-style training courses. While I'm delighted at this new found interest among people to learn how to write computer programs - something I wish everyone would have a go at at some point in their lives - I'm also very concerned about some of the unrealistic expectations these courses seem to be setting.

Earlier in the year, for example, tech journalists in the UK were singing the praises of a 1-day course that aimed to "demistify" programming and teach attendees 3 programming languges. yes, you heard me right. THREE programming languages. To complete novices. In a day. Actually, in an afternoon, because the morning was devoted to learning the history of the World Wide Web. (Presumably because, when learning JavaScript, it's vitally important to know when it was invented and by whom. As we all know, JavaScript interpreters throw a runtime error on code written by anyone who doesn't know these facts.)

Putting aside that two of those "programming languages" were HTML and CSS, the implications were that people who attended this course now understood web development. Well, hmmm.

Other courses charging thousands of dollars or pounds claim they can teach you to be a software developer in 10-12 weeks. Again, hmmmm. I haven't met a competent software developer who hasn't at least been programming for a few years.

We've been here before, of course. During the last dotcom boom, employers were desperate to find web programmers so they could cash in on the bubble before it inevitably burst. We'd interview a hundred developers and find maybe one or two who really could wak the walk. If you need 10, then the solution is to interview a thousand. But this takes time; too much time for the "must have it now" dotcom fanatics.

So their solution was to lower the bar. A lot. And so, we found ourselves working with programmers who sometimes couldn't even - well - program. Sure, they could copy some JavaScript or some ASP and noodle with the variables - just like the people on one of these training courses did when they "learned 3 programming languages in a day". But it was sometimes the case that they couldn't manage "Hello, world!" by themselves starting from scratch.

A competent software developer is a million miles from "Hello, world!" More accurately, a competent software developer is several years and a bunch of non-trivial projects beyond "Hello, world!" Taking a cooked meal and adding a bit of salt to it does not make one a chef.

Anyway, the bubble burst, but thousands of these non-competent programmers remained. And remain to this day; clogging up the profession, inundating employers with their CVs and drowning out the competent developers (who are often, sadly, less inclined to make the kinds of naive boasts that win jobs.)

Claiming that you can teach a room full of total newbies to program - even to a basic level - in three languages in a day is also a very naive boast. As is claiming you can turn someone into a software developer - even an entry-level one - in 3 months.

There is no shortage of software developers. Consider that not all developers are equal, and some developers achieve more than others. In reality, 80% of the working code in operation today can probably be attributed to small proportion of us. The rest just get in the way. If anything, if we thinned down the herd to just the stronger programmers, more might get done.

What we need, as a profession and for the sake of our economy, is better software developers, doing better work.

Lowering the bar is likely to be counterproductive.

Bah humbug.

Posted 8 years, 1 month ago on December 23, 2012