February 7, 2014

...Learn TDD with Codemanship

Year Of Code & The Myth Of The Programmer Shortage

2014 is the UK government's Year Of Code.

With a stated aim to get millions of people "coding" (whatever that is) this year, it's an initiative being championed by the Chancellor of the Exchequer, George Osborne.

Behind all this is the belief that Britain and the British economy suffers from a growing shortage of programmers.

But this simply isn't true.

Britain actually has far more programmers than it needs. Don't believe me? Place an ad on Jobserve, the UK's leading source of IT vacancies, and - if it's reasonably well-paid - see how many responses you get.

I help clients to recruit software developers, and I know that for every role that involves programming, you may get hundreds of applicants.

Of those hundreds of applicants, perhaps a dozen will be worth interviewing. Of those dozen, perhaps just one or two will actually be what enlightened employers consider to be good enough to let loose on their critical business systems and software products.

While there may not be a shortage of programmers, there's most definitely a chronic shortage of good software developers. That's something that didn't seem to cross anyone's mind - that there's much more to it than just programming, for a start, and that it takes years to develop the skills and knowledge needed to build good, valuable, reliable, maintanable, secure, scalable software.

From what I've observed, what holds businesses back is not the availability of developers to write new software, but the ability of developers to evolve and adapt existing software to keep pace with the competition. Hiring shitty programmers is a false economy. Most developers are working on legacy code that was - in many cases - written badly by bad programmers. I've watched £billion businesses sunk by their inability to maintain the pace of IT innovation.

And I've also observed that most development team are overstaffed, and that a majority of software projects fail to deliver any real value at all. Hiring smaller teams of more skilled people to focus on projects and products that have a real point to them - you know, proper actual business goals - who write code that is easier to change and costs less to support and maintain, would quite probably lead to a smaller, leaner profession that makes a more positive impact on UK plc.

Gold rushes, like the dotcom boom of the late 1990's, tend to flood the market with average or below-average programmers. And, since the bar is set dangerously low in our profession, "average" really means "not competent".

When the market is flooded with not-competent programmers, and recruitment is handled by people who can't tell the difference (and, let's face it, simply don't care in many cases, just as long as the price is right), it gets even harder to find the good ones.

Year of Code smacks of another gold rush, built on the myth that Britain needs millions of programmers, and promoted by people who evidently haven't the faintest idea what a software developer does.

Check out this interview with the executive director of Year Of Code on BBC's Newsnight. It starts badly (with Jeremy Paxman referring to programming as "keyboard skills"), and goes downhill from there. "This gobbledygook..." etc etc.

Underlying Year Of Code is another, much more dangerous myth: that "coding" can be learned in a day - or even an hour.

I really struggle with this. Non-technical folk going on these "Learn To Code In A Day" courses think I'm making it up when I tell them that you really can't learn to program to any level of proficiency in just a few hours.

Programming - let alone software development - is being devalued as a skill by this repeated mantra that it's that easy to master. It creates very unrealistic expectations among the learners, who either become crushingly disappointed that they're not grokking it by tea time and lose patience (and learning to program takles a lot of patience), or walk away with a highly inflated sense of their achievement on the day and simply will not be told otherwise.

I've already locked horns with two non-technical managers who went on a one-day course and subsequently started interfering in technical decisions they simply weren't qualified to make because "they know all about coding now".

I've also seen at least 40 examples of people walking away from learning to program when it became apparant that it was going to take many hours over weeks and months to get to a working knowledge of just one programming language.

I view the unconscious incompetents as the most dangerous. Indeed, they now appear to be in charge.

By the bye, with so little money being invested (£500,000 to train thousands of teachers?!) and with the whole thing being underpinned by dangerous myths, Year Of Code has already attracted skepticism and some derision from that now quite marginalised group of people who actually know what they're talking about.

No doubt, there is money to made by people willing to play up to the myths and offer quick fixes, and that's in no small part what it's all really about. Politicians and business leaders don't want to hear about long-term solutions. They need good PR today and something to crow about in time for the next election. Who cares if it makes a real difference?

Now, don't get me wrong. I'm all for kids learning to program, and Mr Osborne should be commended for being on board with that. But after the very, very basics have been taught, where do they go next? how will barely competent teachers provide support to the few kids who really get it? What happens to all that potential if everyone they look to for guidance is stuck at "hello, world!"?

And programming should be FUN! I believe it's a very grave mistake to introduce programming and computer science as academic subjects to children as young as five. Let the kids play and explore. If they discover they enjoy it, and have an aptitude for it, there'll be plenty of time for Big O notation later in their education when they've been given the choice to dig deeper. Speaking for myself, CS lessons at age 5 might have put me off programming for life. I learned to program by myself in my own time because I wanted to.

Between me as a software professional today and my first ever "Hello, world!" 30+ years ago has been a long, long journey of everyday practice, reading, conferences, more reading, experimentation and yet more reading - thousands upon thousands of hours to get me to the point where I'm just beginning to feel like I'm getting the hang of it.

If we're to succeed at growing a new generation of good software developers who create real value, then how we set our expectations will be crucial. It does not serve us well to treat this is a problem that can be solved with half a million quid (that works out at about £3 per teacher, by the way) and one day's training.

Imagine we had a shortage of pianists, and Year Of Piano was the proposed solution: £500,000 to train 100,000+ piano teachers - people would naturally call it absurd. You can't learn the piano in a day, certainly not well enough to teach it. Why on earth would anyone believe programming is orders of magnitude easier?

But at the end of it, will our chronic shortage of good software developers be solved? My fear is that, as with previous gold rushes, it will just make them even harder to find.

It's my firm belief that, instead of focusing all our energies on bringing more warm bodies into software development, the government would make a much bigger impact by focusing on raising standards in the profession and improving the signal-to-noise ratio.

Bah humbug.

Posted 8 years, 3 months ago on February 7, 2014