On the Benefits of a Humanities Degree to a Software Engineer
I never wanted to be a software engineer. At least, not consciously. I studied computing at A level (this was 2009-2011), and really enjoyed it. I was lucky to have the opportunity to do so because very few state schools at the time offered the subject. I learned about basic data structures, “Big O” notation and how to write a little HTML, CSS, PHP and Javascript. However, I never considered myself to be enough of a “computer geek” to want to make a career in the field, and to be honest I didn’t know what options were available. Incidentally, I’m still not a computer geek really. I don’t spend my weekends tinkering with my home lab or contributing to open source, and occasionally I feel somewhat guilty about this. Nonetheless, I obtain a deep sense of satisfaction from applying technology to help businesses solve their problems. If you’d told me that was what I’d end up doing when I went to University to study history in 2011, I’d have been pretty surprised. If you’d told me that studying history would prove to be highly advantageous to my future career as a software engineer, I’d have been even more so.
Before I explain why, let’s get one thing straight. I’m not suggesting that those looking for future employment as a software engineer head off to study Romantic literature at 18. Doing that is going to make it extremely tough for you to break into the IT industry. I was lucky to have a friend that knew I’d studied computing at school and who wanted me to help him with some work for his nascent web agency when I finished university. We were not especially good and fairly rapidly went out of business, but it gained me a ‘foot in the door’ and I was able to make my way through a number of small consultancies in the early stage of my career before eventually landing at Thoughtworks. While I know many folks who have made it into the industry after starting their working lives in other fields, either via bootcamps or self-guided learning, it’s a tough path to follow and I suspect many aren’t able to or don’t get the opportunity to make the jump. I have also had to invest a fair bit of time in filling in some of the gaps in my computer science education. Though I will never be a top notch software developer, I’m absolutely good enough to make a solid living and deliver value to my employer - at least until I’m rendered obsolete by AI.
Now that I've got that out of the way, I’d like to expound on the aforementioned benefits of the humanities degree to the professional programmer. Fundamentally, a degree in a subject such as history or geography teaches you how to find, organise and communicate information. These are the ‘transferable skills’ which these degrees putatively offer you in recompense for the lack of an obvious vocational application. Such skills are frequently derided as having a low economic value, not least by the current UK government, but this seems to my mind deeply foolish when one considers how useful they are to engineers of all stripes.
Let’s take research as an example. Almost every day a working software engineer will be confronted with a problem that he or she does not immediately know how to solve. They will turn to an internet search engine, and try their best to formulate a suitable search prompt that will return the information they need to solve their problem. They will then almost certainly need to inspect a number of search results to see if any provide a likely solution. In my experience, this is something that junior developers can really struggle with, because when they were studying they could generally be confident that the solution they needed was contained within the materials provided as part of their course. Being required to articulate one’s own questions in order to reach a goal rather than answering those provided by a course of study can be a daunting prospect, and frequently less experienced researchers find themselves either unable to provide a suitable query to access the information they need, or wading through a glut of only partially relevant results. When I was an undergraduate, the time I needed to find, read, and assess my source material decreased substantially over time. I was able to become increasingly effective at using libraries and cataloguing systems to find relevant sources of information. I became extremely efficient at skim-reading material, to the point where I could usefully skim-read entire books in a couple of hours. I also became much better at asking fruitful questions of my sources, so that a set of texts which at first glance seemed largely unrelated to each other could come together to provide powerful insights. While the research tools I reach for these days are wildly different, I still leverage these skills constantly, and am often called upon for assistance in finding solutions to obscure or thorny problems by my peers. Partly this is just the general growth one experiences as a software developer, but I personally credit my humanities degree with giving me a substantial head-start in this area.
The same is true when it comes to assessing the quality of a solution. In engineering, as we know, there is no such thing as a right answer. Assessing the merits of a solution is a fundamental skill of the software developer, but it isn’t necessarily something that you’re trained to do as part of your education. Even if technical trade-offs such as memory space and processing time are considered during study, other variables such as maintainability and business value are unlikely to be. Typically many courses are exam focused and encourage the idea that there is an answer which is clearly preferable to others, but the real world isn’t like that, which can be a shock. To a humanities student, steeped in the revelations of relativism and postmodernism, it comes as less of a surprise. Navigating a broad range of ideas and selecting the strongest or producing a synthesis of several competing viewpoints is the bread and butter of the geographer or historian, and this is an extremely useful ability to possess for the software engineer as well. Being able to recognise that the top Stack Overflow answer or the highest ranking Medium post is often not the best solution to a problem is one of the key insights that a professional programmer must possess. While of course most are able to recognise eventually that almost all engineering decisions are made within decidedly grey areas, having had training in interrogating information for bias, anachronism and inauthenticity can only assist with growing an engineering sensibility.
The third aspect of a humanities degree which will prove highly beneficial to the professional software engineer that I want to discuss is communication. Communication is a huge part of the job of any engineer, whether in the form of understanding business requirements, collaborating on design decisions, or documenting completed work for future maintainers. As one’s career develops, if anything these areas of the job become more essential than programming. Many a talented computer science graduate has made a fine start to their career only to be frustrated by the amount of meetings they have to attend and the “politics” they are required to indulge in to make further progress. Doubtless, on many occasions these are reasonable complaints, but the fact is that achieving any non-trivial impact on an organisation usually requires at least one team of people, and often more. Without being able to communicate your ideas effectively to your colleagues, both senior and junior, in a persuasive style, you will not be able to solve problems larger than a certain size. As a humanities student, you are assessed entirely on your ability to communicate ideas, usually in the form of writing, but also frequently in the form of presentations or discussions. Whilst many computer science courses will also include longer-form written assignments or presentation-style assessments, the emphasis is likely to be greater on the technical aspects of the work completed. Having a depth of experience in setting out your arguments in a concise manner using appropriate language is a boon when you are asked to produce your first design document or to put a presentation together to get management approval for an initiative.
None of the above is to say that science and engineering courses neglect their students in these areas, or that science graduates aren’t perfectly capable of developing these “soft” skills during their careers. It has, however, been interesting to me that as my career has developed, and from a surprisingly early point, the transferable skills that I gleaned from my history degree have proven crucial to my successes, modest as they are. Whilst I don’t expect Google to suddenly start hiring humanities graduates left, right and centre, I would argue that software developers with a background in the arts can become valuable members of any team as long as they have worked hard on their computer science fundamentals. Yes, there are plenty of bootcamp graduates out there who are a long, long way from becoming effective software engineers, but there are also many that can bring the collaboration and communication skills that are the foundations of successful organisations. If you’re one of the latter group, but are finding the early part of your career in the technology industry tough going, I’d encourage you to stick at it. Once you build your core technical skills, you might well find that you start advancing faster than you expect.
© Ryan Brown.RSS