August 18, 2011

...Learn TDD with Codemanship

Apprenticeships - Employers Must Get Past Degree Snobbery

Today UK students get their A-Level exam results. if you're not familiar with our education system, A-Levels (or "Advanced Levels") are the exams that decide what university course you can get accepted on. Students usually take them aged 18, and they're the bridge between secondary and higher or further education.

They used to also be a bridge to getting a job at 18. But these days most employers insist that people applying for any job more serious than waiting tables or stacking shelves must have a college degree in something. Anything.

According to today's newspapers, A-Level exam pass rates have improved for the 29th year in a row. Yep, you heard that right. Those kids who display the lowest levels of literacy and numeracy for several generations are actually the smartest 18-year-olds for several generations, too. It may seem difficult to reconcile the general level of ignorance among today's young with their astonishing exam results. Best not to think about it, I suggest.

We've also seen continuous rises in university students during that same period. These days, almost half of young people aged 18-21 go to university. Many study subjects that may once have been seen as vocational, like Nursing, Hotel & Catering Management and Music Production. That is to say, large numbers of students these days go to university to learn how to do a job.

Many would argue that this is not what university is for. Universities are places of learning, not places of training, they might say.

And while university attendance has been rising year on year, the personal cost of taking a degree has also been rising. When I started university, the government had just introduced student top-up loans. Tuition was still free, and the bulk of our living costs were covered by student grants. With each passing year, though, the proportion of loan vs. grant has increased, to the point today where it's pretty much all loans for most students. And in the same time, students have been asked to make increasing contributions to tuition costs, which are also covered by loans.

Someone graduating in the early nineties may have left with relatively small debts of maybe a couple a few thousand pounds - perhaps a bank overdraft and a small student loan. Students graduating in 2009 may have left with £20,000-worth of debts.

In 2010, the gloves came off and the new coalition government decided to raise the cap on tution fees up to a maximum of £9,000 a year. This, they claimed, would only be charged by a few exceptional universities. As it turned out, most universities have asked to be allowed to charge the maximum, or very near to it. Uncapping tuition fees could mean a massive hike in student debt, with many leaving college owing the equivalent of a small mortgage.

Now is surely the time to examine this whole picture again. Spending 3-4 years and racking up debts of £50,000+ to learn how to change a dressing, EQ a bass track or design a menu is madness, surely? And on top of the personal cost, there's the inescapable fact that the best way to learn how to do a job is on the job. That's how it used to be done, at least.

Apprenticeships, though, seem to carry a stigma. Many employers will not hire professionals who lack degree qualifications. We've seen an inflation in entry requirements for many vocations, coupled to a deflation in the standard of the qualifications themselves. It's now easier than ever to get accepted on to a degree course, and easier than ever to complete a degree. So much so that, for some subjects, employers now require at least a Master's degree.

I happen to think that software development is a vocation. I happen to be a self-taught programmer who has learned largely on the job and in my spare time. I do not have a Computer Science or Software Engineering degree or post-graduate qualification, although I have been approached on several occasions to advise on their design.

Knowing what I know now, I would not seek one, either. At the risk of blowing my own trumpet, I think CS and SE lecturers could learn a thing or two from me about writing good software. And I'm by no means alone in that. Many of the best developers I know are largely self-taught and have learned their chops from other skilled developers on real projects. Many of the CS graduates I know suck as software developers, too.

When I read a CV, I don't bother to look for a CS or SE degree. It's not important. And can it get more damning than that?

Hiring a computer science graduate for a programming role is, to me at least, like hiring a theoretical physicist to fix your car. When I want my car mended, I want an experience mechanic. Mechanics don't study at university. (Well, actually, these days some of them do...) Most mechanics learn on the job. because that's the best way to learn how to service and fix cars. By servicing and fixing lots of them.

Yes, there is some useful theory that might make one a better mechanic. Just like there is for carpentry, plumbing and dressmaking. But the emphasis has to be on the doing, and the theory can come as and when it adds value to the doing.

An apprentice programmer, for example, may well find data structures and algorithms useful from time to time. But rather than sit in a classroom looking at pseudocode, perhaps they could get a practical appreciation by implementing commonly-used algorithms using Test-driven Development? I suspect there are countless CS graduates who can describe Binary Search theoretically but couldn't hand-roll a binary search implementation to save their lives. Just as there are countless CS graduates who have a theoretical grasp of compiler design but have never design a language or implemented a compiler.

Over the course of, say, a 5-6 year apprenticeship, a programmer could get practical experience of a core subset of computer science (the 20% that you need for 95% of problems), and become self-sufficient in learning more about CS as and when they need it. Let's face it, the best experts aren't the ones who knows all the answers, but the ones who know where to look for the answers.

And software development, most of the time, is to computer science what servicing the brakes on an Audi Quattro is to fluid dynamics, or what landing a passenger jet is to aerodynamics.

I'm not saying that a theoretical computing degree has no use. Any more than I'd argue that a theoretical physics degree has no use. But I suspect the bulk of CS students would actually be better off spending that time doing an apprenticeship as a programmer - both financially better off, and vocationally, since they're likely to end up as much better programmers.

If only employers could get past this stigma for vocational training and apprenticeships. It really would be in everyone's best interests.

Posted 9 years, 6 months ago on August 18, 2011