With the public opinion of post-secondary education coming to more highly value employment skills than liberal education, let me throw a wrench in the debate: liberal arts classes make you a better software engineer.

Granted, the best preparation for an IT career is some sort of technical major: computer science, information systems, data analytics, software engineering, computer engineering, etc. However, all tech and no humanities makes Johnny a dull engineer. Let me share with you a few of the liberal arts classes I took as an undergrad that, nearly 20 years later, continue to make me a better IT professional:

Introduction to Anthropology

Whenever I'm asked what the single most useful course in my undergraduate program was, it's Anthropology 101. And people think I'm lying to them.

However, any business professional who has had to work with software engineers knows that we live in our own world, and they in theirs. There are truly distinct subcultures in the workplace. For that matter, the sales folks seem to have their own subculture. As do the finance folks. As do the maintenance folks. As do the customer support folks. All of these areas have their own jargon, their own expectations, their own perspective on what the organization does and what their part in that operation is.

Anthropology is the study of man. More specifically, it's a set of tools for understanding that different groups have different perspectives on the same thing. Anthropology gives you an opportunity to understand the power of symbols. It gives you the opportunity to understand why different value systems emerge. It inculcates you with an understanding that there is no fundamentally right way to understand the world, and that to judge your own perspective as superior is at best foolhardy.

From a practical perspective, anthropology gives a software engineer the tools necessary to understand the subcultures of the clients she serves. It even provides a means of assimilating into that culture, even if only on a temporary basis. How anthropologists study foreign (to them) cultures is a great example for software engineers who need to study their clients' cultures.

Phenomenology of Religion

Tucked away in the 200-level of the religious studies department's course catalog is a greatly underappreciated course called Phenomenology.

The main lesson I remember from my phenomenology course is how to objectively observe, record, and analyze the events, circumstances, and experiences -- that is, the phenomena -- of rituals without judging the value of those rituals. You learn to observe who is involved in the ritual, what are the activities that take place, what is the place and time and space in which these activities take place, what are the experiences of the individuals taking part in the ritual, and how does the ritual seem to impact the participants.

Give me a "like" if you're a professional who has heard a software engineer or programmer tell you how "stupid" one of your processes is. Give me a "like" if you've had to battle tooth and nail to get the IT department to understand that just because the software is built to execute a business process one way doesn't mean it's the right way for your organization. Give me a "like" if you've wanted to just kick IT out of the room and do it all yourself for these very reasons.

And for those very reasons, a software engineer who is able to observe and understand a business process without judging it instantly stands out among his peers, is able to design and implement far superior solutions, and becomes the hero of his clients.

Micro and Macro Economics

When we think of economics, it's easy to immediately think of supply and demand. You can get bound up with the concepts of elasticity and market equilibrium and marginal cost and benefit. Ultimately, though, economics is a perspective on how decisions get made.

Perhaps the most valuable lesson I carry from my economics classes is the concept of opportunity cost. When an accountant talks about the cost of a project, the accountant is likely talking about the pecuniary cost -- how much money must be spent. When an economist talks about the cost of a project, the economist is talking about what they call the "real cost" -- how much money must be spent, how much time must be invested, how much capital must be utilized, and what other opportunities must be given up in order to pursue this project. That last one is opportunity cost.

When you start thinking about choices in terms of what options you must give up in order to make a selection, your design and planning behavior changes. Humans have a tendency to make decisions that foreclose the fewest future opportunities. Unfortunately, if you're not thinking about current or future opportunities, your decision making process is myopic, and you're likely to make choices with which you are dissatisfied down the road.

For the software engineer, opportunity cost is a great way to explain to business clients why it is in their benefit to invest more time in a more general solution. Sure, the requirements in front of us at the moment don't strictly require a persistence framework and relational database for storage -- we could get by with a faster and easier flat file approach. However, you know instinctively that if you don't make the choice now to start with a persistence framework, you're going to regret it later when new requirements come. When you tell the client that making this very technical and difficult to understand and more time/money intensive approach gives them more flexibility later, then you have a chance at getting them on board.

Frames

There are tens, maybe hundreds, of liberal arts courses that have these sorts of direct benefit to software engineers. What they all have in common is that they provide a techie with multiple perspectives for viewing a single problem; in some academic fields, we call these multiple perspectives frames. The more frames you have access to, the more ways that you can frame an argument. The more ways that you can frame a design.

The more ways you'll be valuable to your organization.

And that, perhaps even more than your mad coding skillz, is what will drive your professional success and guarantee your future employability.