Original question from Quora:

What skills do self-taught programmers commonly lack?

Or, to put it another way: what should a self-taught programmer study to get up to speed with his/her formally-educated peers?

My Answer:

If I had to pick one skill self-taught programmers lack, it would be a skill that nearly all programmers lack, and over the course of their career it costs most developers somewhere in the range of $2.1 million dollars (excluding interest) over a 30 year period.

Allow me to explain…

Programmers and tech people seem to hate the idea of making money and selling things commercially. Yet, ironically they like getting paid large salaries to write code.

Most programmers haven’t figured out that if a business doesn’t sell things for lots of money, nobody will pay them to write code.

This disconnect is the beginning of a cascade of problems that ends up going from a tiny problem to a seven figure failure and most programmers I interact with are completely blind to it.

First of all, making money is not evil. Selling is not evil. Without the ability to sell, you don’t have a business and people don’t have jobs.

Commerce, in general, is a good thing.

Imagine knowing that, just how ridiculous it is when technical people openly sabotage various features, product designs, and various other efforts to bring in more revenue for the sake of their own hangups about making money and selling things.

I’ve seen developers trash perfectly good, high converting designs on the altar of “web standards”, their own personal feelings, or so called “best practices” that were made up by a random blog post on the internet.

I’ve seen high value features customers wanted get pushed back and trampled down so that developers can work on their own pet projects or supposedly most important refactoring change.

Those things cost the companies technologists work for millions of dollars, but what’s worse is what programmers do to themselves which costs ridiculous amounts of money over their career…

Imagine for a moment that there is a sliding scale of wages. On one end a software developer can make $25,000 per year, and on the other end a software developer can make $250,000 per year.

There is only one thing that truly makes the difference between the low end and the high end is a simple thought, a bizarre understanding that is easily overlooked by millions of people working in the software field.

In Silicon Valley, the base pay starts near to $100,000 and can get over $250,000, especially when you get into management, have good benefits, and so on.

In the midwest, the base pay starts near $35,000 and can get to $90,000 or possibly higher.

Elsewhere in the United States, there are similar ranges adjusting for demand and location.

You might think based on what I just said location makes the biggest difference in what people get paid, and you’d be wrong.

You might think based on what you already believe that skill makes the biggest difference in what people get paid, and you’d be wrong.

You might think based on the stories people tell that gender, ethnicity, or sexual orientation makes the biggest difference in what people get paid, and you’d be wrong.

There is one thing that makes a difference…

What determines your pay is what you believe you are worth and if you are willing to convince other people you are right.

That’s it.

And that is the key to the biggest mistake or the biggest missing skill programmers suffer from. They don’t know what they are worth and even if they do, they are afraid to ask.

Consider this…

If you and a friend both start a minimum wage type job at McDonald’s and you get $7.50 an hour, you will assume your friend is making the same money. Now, picture this…

What happens when you find out your friend is making $15.00 an hour while you are making half that?

If you’re smart, you’ll ask yourself why he’s making more. It’s not location, it’s not skill, it’s not gender or ethnicity, it’s because they asked/persuaded/convinced your boss to pay them more.

Now, here’s the key point. Once you know he’s worth $15/hr, you start believing you are worth $15/hr and that gives you license to renegotiate your deal or go find a $15/hr deal of your own.

In case it isn’t obvious, let me be clear. Whether you are talking about minimum wage or maximum wage, it’s always a negotiation. Most developers are poor negotiators. Someone offers X job for Y dollars and they take it.

If you are unfortunate enough to live in the midwest, surrounded by peers maxing out at say $50,000, the idea of asking for $100,000 is obscene. If you live in Silicon Valley, $100,000 might put you in the poor house (figuratively speaking).

A lot of people in both places sell themselves short to the tune of $50,000–70,000 per year by the time they are 10–15 years into the field. That means over the last 30 years of their working career, they can get paid as much as $2,100,000 less than they could if they knew how to negotiate better.

If you figure in compound interest, it’s a truly absurd number.

That is to me the biggest mistake that self-taught and school taught programmers make. They don’t understand money or business enough on average to make very good deals for themselves. As a result, it costs them millions of dollars in lost earnings.

Given that most of us work to make money, pay the bills, and live our lives, losing out on giant sums of money due to financial and business ignorance seems crazy to me. Yet, it happens every day.


P.S. I unpack more ideas in Creative Genius.