This is an unashamedly one-sided post. Enough people have glamorized computer programmers that I don’t feel the need to talk about the upsides.
Instead, I’m going to list the seldom described aspects of being a full-time programmer. If you want to pursue a career as a programmer, this article would be valuable insight. Otherwise, it’s nothing but yet another rant on the internet.
To be clear, I’m not claiming that some other choice of career is superior. I’m merely stating why a career in programming is not a good choice. There is no comparison here.
So, at the risk of attracting a fair amount of hatred, let’s begin.
1. You are nothing but a tool
You may have heard of the criticism that college doesn’t reflect the real world. When it comes to computer science, that’s an understatement.
In college, programming is introduced as a really cool subject with a lot of hands-on projects. The experience of creating something from scratch, however simple it may be, is truly fun. Students compete to make the fastest robots, smartest autonomous vehicles and most ingenious machine learning applications.
Note that these projects are fully created by the students themselves. Students plan their projects, decide how to execute them and implement them from start to finish. There is no one ordering you here.
In contrast, in the professional world, what you are going to do is dictated by your manager down to the last line of code. The feature and testing requirements would be specific enough to get rid of all creative freedom.
Unless you are working in a really small company, you don’t get to question what you are supposed to do. The feature would have been decided by someone you don’t even know using processes that are totally hidden from you. Your job is not to question, discuss or innovate. Your job is to code as dictated.
Soon, you’ll realize that the very reason you were attracted to programming is gone. You are just there to translate someone’s ideas into code. Rarely would you be treated as a being with your own opinions and ideas.
2. You are a burden
Every company has its primary purpose. News corporations gather and disseminate information. Banks manage funds and loans. Supermarkets procure and sell essential goods.
And all these companies have existed long before computers were invented. Computer programmers were never essential to these businesses.
Yes, technology has fundamentally altered the ways in which banks, news media and every other company conduct their business. But ironically, it’s not programmers who brought the change.
The management of more innovative companies would have seen the potential of technology to revolutionize their business. So, those managers hired programmers to realize their vision.
On the other hand, managers in other companies would sooner or later come to the conclusion that they too need to hire programmers to survive.
Since programmers were never essential to the business to begin with, they are referred to as cost centers. They don’t directly contribute to the company’s profits and are therefore considered to be an operating cost.
Admittedly, this argument doesn’t apply for big tech companies where programmers are more than essential. But big tech jobs are far and few between and concentrated in just a few places in the world.
Also, you can argue that there are engineers in non-tech firms who propose and bring technological change to the company. However, such engineers would usually turn out to be more managers than engineers who hires programmers to do the job. I define programmer as someone who writes a good amount of code every day.
And even if there are such innovative engineers, they must be pretty rare as I have not seen any.
3. You are replaceable
Imagine you are the CEO and you see a large operating cost in your company’s balance sheet. You ask around and it turns out to be the tech department.
What do you do? Obviously, you can’t fire the entire department or even downsize it. It’s impossible to operate a business without a tech department.
You look at history for inspiration and observe that companies like Ford managed to lower their operating cost by shifting their manufacturing plants to countries with lower labour cost.
Voila! The entire tech department, complete with the call center, is outsourced.
Programmers can be easily replaced because the knowledge they’ve acquired is not special by any definition.
Programmers don’t have business contacts, they don’t know how the industry functions and most probably, don’t even know how the business operates.
I can’t think of a ‘highly-skilled’ job that’s more replaceable than that of a programmer.
4. You are obsolete
Ever bought a phone and felt sad a few months later because a newer model was released? You’re not alone.
The tools programmers use to create products, be it websites, apps or games, change as fast as the newest and greatest phone.
And you have to keep learning the new tools to stay relevant in the industry. I won’t call this lifelong learning because you’re learning different ways of doing the same thing, becoming only marginally more productive each time.
This is made worse by the specificity of job requirements. Companies don’t ask for programmers with X years of experience who can create apps. They demand programmers with X years of experience in tool Y who create apps where Y changes every few years.
Sometimes, the results have been comical.
Why do companies do this? Because they can. With throngs of younger, ignorant and ever more competitive programmers dying to prove themselves, companies can easily replace most older programmers with newer ones.
Unlike a doctor whose experience enhances her value, your experience makes you irrelevant.
5. You are inferior
Like it or not, the world favours people in command. Those who simply serve are under-appreciated, forgotten and buried in history.
And this is why CEOs of tech companies are earning a few orders of magnitude more than their employees in retail stores. You can’t possibly argue that the CEO is a thousand times more productive than the employee.
Unfortunately, programmers are not leaders by a long shot. We’ve already established that you’re nothing but a tool.
This is made more obvious to programmers in promotions and business meetings.
If you’re a programmer, your career progression is limited to your department unless you make a huge leap to become a manager.
Similarly the role of the programmer in a business meeting is to convey if a particular feature is possible and the expected deadline if so. Not to question business decisions.
As long as you remain a programmer, you’ll stay at the bottom of the career ladder.
It is easy to criticize this article by claiming that it’s just my experience, or worse, it’s just me. However, it is impossible to deny that software engineering centralizes work like no other invention in human history.
Take an application that you use every day, such as YouTube. Very likely, it is mainly written and maintained in a single country, the United States. Engineers not part of YouTube and engineers elsewhere in the world are just tasked with creating and maintaining mundane business applications.
The amount of innovation, incremental or disruptive, that can go into such applications is severely limited. Necessarily, then, the programmers working on these applications are subject to the experiences I’ve shared here.
This is the reality for most programmers. I daresay that my claims about programming are the rule, not the exception.
You can view a translation of this article in Russian here.