— career, learning to code — 4 min read
If you’ve ever wondered how the skills you’ve learned in your “impractical” liberal arts degree could be transferable to a programming career, then this blog post is for you.
I’m a software developer, but I didn’t graduate with a Computer Science (CS) degree. If it makes any history or theater majors out there reading this feel any better, I graduated with a degree in religion.
Yes, having a CS degree would probably give you a leg up in the job market. However, a humanities background can also be beneficial to a software development career in many ways.
The humanities train students to rationalize, formulate and express their ideas orally and in writing.
As a software developer, your communication skills are as important as your coding and technical skills. To build a product, an engineer typically works closely with other designers, project managers, product managers, and clients.
You will have to communicate your technical ideas in a way that non-programmers can understand, explain the scope and feasibility of certain features, set expectations with project stakeholders, and negotiate with your team to prioritize features. You might also be asked to give technical presentations about projects you worked on recently.
An engineer writes a lot. You’re writing to benefit other engineers. Writing a research paper is actually not so different from writing code; just like writing a research paper involves organizing written thoughts in a coherent manner, writing code involves structuring code in a logical manner so that other developers can understand it.
Additionally, writing technical documentation is an important part of the job, since any software that’s poorly documented is rarely useful. For example, you may be asked to describe how to consume an application programming interface (API) that you built, including use cases and examples for each endpoint, so that other developers can easily adopt your API.
Other kinds of writing an engineer might do include emails, code comments and reviews, bug reports, postmortem reports, and technical design documents which evaluate the pros and cons of various approaches for solving a problem.
Humanities students spend a lot of time connecting different theories and texts and synthesizing their research into cohesive arguments, which require big picture thinking. These arguments then have to be painstakingly constructed using the right vocabulary, and the final product also has to be free of grammatical errors. These tasks require a high level of detail orientation.
As a software developer, the ability to make connections between different concepts is an important skill. A key part of the job involves evaluating various frameworks and libraries and incorporating them into a practical solution for your codebase. Additionally, since you’re often working within a large codebase, you’ll have to make connections between different parts of the codebase and ensure that your new code integrates harmoniously into the codebase.
At the same time, you’ll be spending a lot of time in the weeds, for example, ensuring that your code adheres to a specific set of conventions that your team agreed upon. You’ll also be debating syntax with your co-workers regularly (e.g., should we use semicolons or not?)
Humanities students are trained to ask questions and find answers to those questions via research. Writing a research paper often begins with formulating a series of questions about a topic, followed by literature research. The research process typically involves reading books and journal articles to analyze various sources of evidence and counter-evidence for an argument.
As an engineer, you’re not expected to know all the answers off the top of your head. Learning new technologies or even using ones you’re already familiar with more effectively will involve a significant amount of research. Knowing how to ask the right questions, and letting those questions guide you to a solution, is an important skill. You’ll be spending a lot of time consulting software engineering books and blog posts, technical forums (e.g., Stack Overflow), tutorials, software documentation, design documents, etc.
My major exposed me to a variety of religious faiths and traditions, and I gained an appreciation for a broad range of perspectives through the study of sacred texts and historical records. My liberal arts education forced me to see the world from other people’s perspectives, which is a goal of the study of the humanities.
Empathy, or being able to put oneself in other people’s shoes, is an important trait for many reasons. Empathy allows engineers to better understand their users’ pain points so they can build software products that more precisely address that pain. On a more philosophical level, empathy invites engineers to question the ethical implications of what they build - for example, do they want to use their programming skills to create a product that intentionally spreads false news? This ability for self-reflection and examination is something that tech could use more of.
Empathetic engineers are an asset to any team. They relate well to the emotions, challenges, and motivations of their co-workers. As a result, they strive to write clean, maintainable, well-tested, and well-documented code, as they know that these practices will help future engineers (including themselves) work more effectively within the codebase. They also strive to understand both sides of a technical debate, so they are less likely to be tied to their own rigid ways of thinking and doing things.
If you hail from the humanities and are considering a career in tech, then I hope this post convinced you that your skill sets and perspectives are indeed valuable and that you have much to contribute to the tech industry.
In fact, some of the most impressive engineers I’ve worked with were English and History majors, while some of my strongest students were opera singers and actors as well as college dropouts. They all have one trait in common. And if you’re currently studying Computer Science, then I hope you’d consider adding a few humanities courses to your course mix to round out your education.
What did you like or didn't like about this post? Let me know what worked well and what can be improved. Your feedback is much appreciated!