My background—and one of my passions—is computer programming. I’ve been programming computers since my early teens. I can code in all the major languages for all kinds of platforms such as web, desktop, and mobile. I’ve worked for some of the largest companies in Silicon Valley, including Yahoo! and Facebook. I’ve also worked in a good number of small startups. Software development is one of my solid skills even though it’s been some time since I did it for a living.
Having said all that, quitting my lucrative job and leaving the world of programming behind was one of the best decisions I’ve ever made.
If I could do it all over, here’s why I would never become a programmer:
You don’t develop crucial social skills
Instead of interacting with real living and breathing human beings, programmers interact with machines made of glass, plastic, and metal. It’s a surreal way of looking at it, but that’s exactly the way it is. The more you program, the better you get with communicating with machines. You learn to type code, test it out, expect a certain response, fix what doesn’t work and try again. Do it long enough and you’ll be more comfortable dealing with machines that with real humans.
You can only do one thing at a time, so if you’re sitting and building an app, you’re not at a bar, a party, a gathering where you’re mingling with new people. If you’re already introverted, then you become even more introverted. If you have decent social skills, those skills quickly atrophy. That’s even more so if you code at work and then play video games at home.
I cannot underscore the importance of social interaction. It’s pretty much the core of any male self-improvement. Do you want to have better friends? Learn how to meet people. Do you want meet new women? Learn how to meet people. Do you want to get a job or upgrade from the shitty one you have now? Learn how to meet people.
It’s ironic that something as natural as meeting other people is now in the realm of an actual skill that can be taught and improved. That wouldn’t have been the case if you were dealing with people all day, every day. For instance, I don’t think a salesperson who makes cold calls all day and deals with endless rejections has any approach anxiety at a bar—he approaches for a living. Same goes for an aggressive real estate agent, lawyer, or advertising executive.
You don’t develop emotional intelligence
Programming is a very logical process. Computers don’t have emotions. At the core, all computer code is made up of zeros or ones. All control statements are evaluated to true or false. A computer can’t cry, get angry or feel empathy for someone else. A computer only understands zeros or ones.
That’s what happens to your brain, too. A human mind is very elastic and can adapt to pretty much any kind of work. When you spend most of your time dealing with rational problems, your mind becomes more rigid and logical instead of more flexible and emotional.
You start seeing the world as a collection of zeros and ones; colors compress to black and white instead of beautiful shades of gray. You lose that emotional/irrational “scent” that enables you to feel a person instead of asking them a logical question and expecting a logical answer. That’s called emotional intelligence. And you lose the ability to reason emotionally when you write intricate “if” and “else” statements all day.
It’s only after I stopped communicating with a monitor and a keyboard and started dealing more with people, that I finally started building this crucial emotional intelligence. Life is much richer and more rewarding when you’re not always being introspective and breaking everything down to its logical components.
You’re giving away your best value
You know the saying that, “you’ll never get rich working for someone else?” I’m pretty sure a programmer invented it.
We’re living in a capitalistic society where people with money (capital) hire workers to do stuff for them (labor). Programming is a form of labor. When you program for a salary, you’re giving away your time and expertise in exchange for money. You’re helping to create value for the company, and all you’re getting in return is money that’s eroded by inflation and the rest eaten by taxes.
That’s not an ideal situation to be in. Capitalists get richer by hiring labor because they know that after paying their wages, they’ll still come out much more ahead.
Tech companies perfectly understand this, so they provide all kinds of perks and financial incentives (stock grants, options). Nonetheless, don’t be fooled: unless you’re one of the founders (or one of the first ten employees), the amount of value you’ll give away will be always greater than the value you’ll receive. That’s just how capitalism works.
Generally speaking, it’s a good rule to avoid situations where you’re trading your time for money. I know many guys who used to make a killing in freelancing, but have moved on and started their own companies that make money even while they’re sleeping. That’s the beauty of letting capital work for you.
Programming is not an “empire” skill
People understand the above point (that you cannot get rich while working for someone else), but they still believe that being able to code is somehow different. They think they can build an app in their basement, launch it to the world and have a $25 billion valuation tomorrow.
Well, I’m going to tell you a little secret that took me some time to figure out. You will never become rich or successful because you happen to know how to code. Unless you’re one of the best programmers in the world and Microsoft or Google are luring you with a $2M signing bonus, you’ll never really strike it big. That may sound obvious, but that’s not what I thought for a long time. I thought that because I knew how to code and build the next Facebook or Google or WhatsApp and immediately strike it big.
It doesn’t work that way. Yes, I can easily build a Facebook app. Yes, many of the founders of tech companies are engineers with tech backgrounds: Bill Gates is an engineer; Larry Page and Sergey Brin (Google) studied engineering in school. The founders of WhatsApp have an engineering background. Even Mark Zuckerberg (Facebook) is a computer nerd.
But that’s not why those companies became so successful. They became successful because the founders created a great product that was in high demand. Any programmer can build a Facebook clone (it’s actually really easy), but it takes special talent and skills—and, of course, timing—for it to be a blockbuster success. It’s no surprise that many of the founders went on to more executive and strategy roles at their own companies; they have skills that are way beyond sitting at the keyboard and writing classes and functions.
A good example of an “empire” profession is marketing and sales. Another great skill is knowing how to hustle. Figuring out what customers want and being able to deliver that to them is golden. Besides, you can always hire (cheap) programmers to build your app if you have a great idea that you think will be successful.
It’s a low barrier-to-entry job that’s rapidly becoming commoditized
Someone once said that programmers are nothing but modern day mechanics. When I heard it for the first time, it didn’t click: I’m getting paid lots of money for doing something that I enjoy, so how could I be like one of those mechanics that just changed oil in my car? I have absolutely nothing in common with a mechanic at a body shop down the street. Or do I?
Now it makes sense. Perhaps I was in denial all long. The thing about programming is that absolutely anyone can be a programmer. And I mean just about anyone. Programming is now less of a science that requires a creative and imaginative mind, but something that one can learn via a book and apply the next day. One of the reasons is because lots of new tools have been created that simplified building an app by the order of magnitude.
Nowadays, pretty much anyone can find a tutorial (there’re millions of them), learn one of the web languages like PHP, Python or Ruby and build an app. It’s one thing to learn a very simple language like PHP, but it’s another thing to master an entire framework and build a Facebook clone in an hour. That process was a lot more involved just five years ago. Not anymore.
Instead of being a niche profession for a select people who are gifted with an engineering mind, coding is now a mass-market phenomenon. There are lots of boot camps and classes for pretty much anyone and their mom that guarantee that you’ll build a “complex” app in an hour or so. And it’s not even a hyperbole. I wouldn’t even be surprised if you can build a Facebook clone in an hour or two (or much less).
That leads to commoditization of the profession. There are so many people in the world who know how to build a Facebook clone, that anyone can jump on one of the freelancer sites and hire a cheap programmer from India, Russia or China, and pay him a fraction of the money that a Western engineer would get.
It’s a poor long-term career choice
If you browse any of the development or startups forums, you’ll notice that many programmers begin to question the meaning of life (and their career choice) once they get closer to 30, 35, or older. That’s because programming is mostly a young man’s game. Kind of like being an athlete but without all the money, fame and women.
It’s not surprising that software companies love to hire people straight out of college. They send their best recruiters to the top-tier universities to pimp their companies to prospective employees. Then once they hire them, they pamper these new recruits with generous perks and amenities: campuses with full-size gyms, free food, on-site massages, and pretty much anything else you can imagine. They do that so that you don’t have any reason (and why would you?) to make the trek home.
When I was in my teens and my twenties, I loved programming. I was surrounded by other ambitious guys who thought they would build some amazing operating system. Guys that lived on pizza and noodles while coding for—what seemed like—entire weeks straight without sleeping.
But once you hit the age of 30, or even the age of 35 or get a serious girlfriend or even a wife, your output will decrease compared to some new kid out of college. You’ll no longer be able to put in all-nighters at the office before a new release because you’ll have someone waiting for you at home. There will be pressure for you to move to a higher “management” position or change career paths.
This means that a programmer’s career is comparably short. I’m not saying that you would be treated any differently if you’re, say, 40+, and are looking for a job (although it’s a dirty secret in Silicon Valley that most companies only hire young whippersnappers). But even if you did get hired, you’ll probably feel strange taking orders from some pimpled-kid who’s half your age while being surrounded by a bunch of other kids who look like they’re going through puberty.
Think bigger and wider
Most guys who get into programming but later find it unsatisfying don’t realize that programming is only a tiny fraction of endeavors they can embark on. There’s a whole plethora of other problems and challenges that’s perfectly suitable for their creative and analytical minds. The key is to think bigger and wider. Start thinking in terms of people problems instead of software problems. What kind of problems are some the people might be facing that you can help solve for them?
Starting a software company that builds and distributes software services is one. Building a freelancing business that solves specific challenges for your clients is another. What else? You decide.
Think of programming as a specific tool in your toolbox that’s designed for very specific problems. For instance, I’m very fortunate that I can easily pull up a WordPress theme and implement a new feature, or quickly customize a signup form without asking anyone for help.