As the software industry continues its massive growth, we are witnessing an increasing number of graduate roles available, with positions such as “software engineer”, “application developer”, “<insert language here> developer” being a common sight on careers websites. Indeed, it’s the natural course of progression for most higher education graduates to head into a job, with around 91% obtaining employment within 6 months of graduation.
However, computer science graduates have among the lowest employment rates of any higher education subject area, which is entirely at odds with this expanding ‘IT’ industry. The reason? Employers don’t care for your first-class BSc Computer Science degree, nor your student BCS membership, or even that Natural Language Processing class you did on Coursera last summer.
The unfortunate reality is that simply holding a higher education does not qualify you for a job in large-scale development. In fact, structured education during employment – all those cutting-edge certifications you’ve achieved, or that professional accreditation hanging on your wall – aren’t what’s required. What it really takes is experience. And you can’t study that.
This article will examine the inadequacy (and unsuitability) of ‘recognisable’ education in the software industry, with a brief discussion of the use(lessness) of professional accreditation.
“Required: BSc Computer Science (or equivalent) at 2:1 or above”
More and more employers are requiring a minimum of a 2:1 degree from their candidates. Why? Because it’s become the de facto standard. A candidate who holds a degree is not necessarily any better for a position than one without; they’re simply educated to a higher level. And employers know this: they’ve learned the hard way, but continue to ask for it nonetheless.
The reason a 2:1 isn’t enough is because of the shortcomings of a computer science-related degree. Great, you understand Gröbner bases of ideals of polynomials – but do you know how to deal with a colleague who’s insisting you’re wrong, against your better judgement? Oh, you can prove under what circumstances a binary relation is an observable bisimulation? Fantastic – but how would you go about developing a rapport with clients? Oh, you know Scala? Cool. We don’t use that here.
Whilst there’s something of a misalignment between the expectations of academics and employers, there’s also a problem of unclear degree titles. For example, I’m studying for a BSc in “Computer Science”, but my combination of course choices is entirely compatible with a “Software Engineering” degree. A vague notion exists that a Computer Science degree is more technical, mathematical, or even ‘harder’, but this needn’t be true.
And so with such uncertainties, employers are forced to look for other indicators of ability. I recently had a series of interviews with a large financial institution for a software developer position. They weren’t interested in hearing about my degree. They were interested in hearing about my work experience and, more importantly, my people experience. They were more enthusiastic about my part-time catering and retail jobs than they were about my studies. Technical competency was assessed, but I got the distinct impression that they weren’t worried about my (many) technical skills gaps: those will quickly be filled within a few weeks of working.
To be fair, some of the skills required of a competent software engineer are fundamentally unteachable – and it’s certainly not the responsibility of a lecturer to attempt to. But having completed nearly four years of a degree, I must confess that, personally, I don’t feel well-equipped to enter the world of development. At least, not from a technical perspective. It’s all very well teaching the theory and advantages of various practical systems, but failing to provide a platform to try them out makes that knowledge pretty useless.
What compounds the problem, of course, is that the academics who are designing and delivering these courses often haven’t worked in industry for some time. They have grown in their own community, with its own set of (ahem, abstract) expectations. These expectations don’t exactly intersect with the needs of modern software houses, and instead of encouraging group projects and collaborative work between students, it’s a constant barrage of exercises for exercises’ sake.
And so employers are having to take their own measures to fill those skills gaps in their newfound employees.
Education continues into employment
One such measure is the use of accreditation. At the individual level, accreditation is “a form of qualified status … awarded by a professional or regulatory body that confirms an individual as fit to practise”. Before you can be awarded an accredited title, you must have gained a minimum number of years’ relevant experience, as well as pass several exams. Unlike degrees, however, software houses seem to love accredited individuals: the ‘Chartered’ label is something of a status symbol, which they can use to lure new clients. In an earlier blog post, I wrote about how organisations often misuse such information to their advantage – this is a classic case here.
Interestingly, however, software developers seem to love it too: it affords them the opportunity of fast career progression. Often developers will be proactive about seeking out accreditation for themselves, since it will open the door to promotions and, ergo, pay rises. The ironic thing, however, is that the natural course of a software developer’s career in large organisations is the move from being a developer, through to making long-term design and architectural decisions, before finding yourself plonked in the management seat, directing a team and its budget, and not doing any implementation work yourself. This makes it harder for you to remain ‘current’, especially in such a fast-paced industry. The use of accreditation, then, serves only to push a developer into a particular career track, and not to benefit the software projects they’re working on.
Accreditation in an immature discipline is fundamentally valueless
Let’s take a moment to look further into accreditation in the software industry. Some careers require registration and accreditation from a professional body – for example, an architect operating in the UK must be registered with the Architects Registration Board, and only a Chartered Accountant is allowed to audit the accounts of public companies . But this isn’t the case for a software engineer. In fact, receiving accreditation from, say, the British Computer Society (“The Chartered Institute for IT”), doesn’t qualify one to do anything more than they could have done previously.
This prompts us to think, why? Architects have to design a safe and structurally sound building. Chartered Accountants are reporting on the finances (read: honesty) of companies in which a huge number of people have a financial stake. Other registered professions – doctors, dentists, lawyers, for example – all have a duty to the public. And we might argue that software engineers should, too. A flight control system, or the software backing a nuclear reactor, or your electronic summary care record – these systems are all ‘critical’, but don’t (legally) require a professional graded ‘engineer’ to develop them. This, I propose, comes down to the fact that software engineering is far too immature a discipline to support professional body accreditation.
Perhaps this problem is rooted in the idea that, despite unrelenting advancements in the software industry, it’s rare to find a universally-agreed “best approach” to a given problem. All we can do is depend upon the experience of long-term developers, and hope that the knowledge they’ve gained over the years is enough to get us through. No amount of PhDs or MInfs will save you now.
Do we need formal education at all?
Oh, yes. When else in your lifetime will you get 5-month-long summer holidays?
Ultimately, it boils down to this: university education doesn’t make you a better programmer; it doesn’t make you a better team player; and it doesn’t teach you the core skills you need to nail that job. What really matters is experience: the longer you work, the wiser you’ll become.
And no matter how hard you try, you can’t study ‘work experience’. You actually have to experience it for yourself.