185 comments

[ 2.3 ms ] story [ 226 ms ] thread
If you expect to get rich working for someone else, you will be disappointed. Everywhere I've worked, things start out great. You get to work on new and exciting projects.

Then, new management comes in or your boss makes crazy development decisions and your project becomes a sinking ship. I just dropped a contract that was exactly this. I got tired of being forced to make bad decisions, which I know will lead to the failure of the project/company.

This is why I started my own company. There are no limits to my salary.

I also own my company, there is a limit to your salary in one direction, Zero.
I also own my company, zero is not a limit.
Exactly, you can go waaaaay past zero :-)
no, zero is the bottom limit. Unless you do something stupid like personal guarantees on loans or do not incorporate. Thats the point of LLCs. Limit the liability of shareholders.

Edit: I guess I should add, of course legal matters depend on location. AFAIK much of the developed world has legal structures that allow risk to be limited to the "company" and not risk the shareholders' personal assets (ie Your personal assets).

Most people would consider their own investment in their company to be 'negative salary'
no, zero is the bottom limit. Unless you do something stupid like personal guarantees on loans or do not incorporate. Thats the point of LLCs. Limit the liability of shareholders.

I am an owner / co-owner of 3 (US-based) LLCs, and I can tell you from experience that banks will require a personal guarantee, joint and several, of all principal owners, for any non-collateralized loan or line of credit.

The same is generally true of most lessors, as well. Some (most?) tech incubators / hubs / innovation centers are the exception, and I am sure also some smaller 'mom-and-pop' lessors. But once we moved out of those, we had lessors wanting us personally guaranteeing our 3-5 year leases, although we were able to negotiate those terms away with some of them.

We were able to secure net-30 terms from suppliers, however, that did not require a personal guarantee.

Even if you managed to somehow navigate these waters without anyone requiring a personal guarantee, zero is generally not the bottom limit. If you are a founder, or an owner, you most likely have brought assets and/or money into the venture.

great post. i'll add that it's not just term debt or capital leases, but other contracts too - even your first commercial real estate lease can require a large security deposit and personal guarantee. and if you're not careful, this personal guarantee will continue carrying over even as you expand into larger and larger offices...

and of course let's not forget operational credit cards (you are exposing yourself if you don't use an amex to pay for certain things) - that's the owners'/founders' credit on the line (at least at first).

>> Unless you do something stupid like personal guarantees on loans

As a director of a limited company in the UK - it's virtually impossible to get a loan without a personal guarantee by the director, unless your company has as much money as you are trying to borrow - in which case getting a loan is slightly pointless.

"Unless you do something stupid like personal guarantees on loans or do not incorporate."

Entities lending money are not stupid. You can't just start a new business, incorporate, and then go out and have your corporation get a loan. Lenders are obviously aware that the corporation is not credit-worthy, will demand personal liability on the loan, same as they would if your business had no corporate form.

yeah, it's more of a starting point. it can go really quickly in either direction.
I own my own company too...

In fact; at last count I've tried 14 different ventures over the past 20 years.

Many of those had a net loss over the course of their life. As self-funded companies they have brought my income below zero.

As a IT consultant with clients; that is unlikely to happen, though, and I have used such a business to fund a lot of my other ventures.

If you do own your own company, you do wind up being paid exactly what you're worth :-)
"Whatever you do, you have to find a balance between doing what you love and making enough money to live the life you want, or what your family needs. It's not always an easy choice."

If you love to program the choice is easy. It's not like programmer wages are so low you have to live under a bridge.

Personally I'm psyched that people will actually pay me to program, because if they wouldn't, I would still be programming.

It depends on the company. I worked at a large software company and the promotion track for software engineers went all the way up to something like Fellow Engineer or Principal Engineer. Almost no one got to those roles because they were so high up the track. After the several levels of Senior Engineer, they had Expert Engineer. One person I knew made it to that level (after some 20-30 years experience) and still programmed every day.

Edit: that said, I don't consider it a dead end job if you have to switch out of programming to keep advancing because often to become an engineering manager at companies they want you to have programming experience. I think a dead end job is one in which your experience serves no purpose or as no pre-requisite for better paying jobs.

I respond really negatively to the notion of 'dead end.' Programming isn't a dead end job any more than welding is a dead end job or painting. But it is a trade.

What is more, managing is a different job than programming. Not a lot of programmers really internalize that until they try out being a manager. Architecture, and technical leadership in general, is still another job. It takes the ability to internalize massive amounts of detail, organize it into some coherent frame work and then communicate that framework as needed to various levels in the language they understand. So for programmers they need to know how the parts fit together, for managers they need to know how the parts integrate with the business process, for sales they need to know how the parts make them better than the competition (or equivalent to).

From an economic standpoint, being able to generate 1000 lines of syntax error free code per day, is perhaps the best possible programmer you could be, but its never worth more than 10 programmers generating 100 lines of syntax error free code a day.[1] So yes, there is an economic limit on your pay.

The good news is that generally that economic limit is much higher than the cost of living, and you can run at that limit for a decade or more, so you can be reasonably expected to save enough to retire and not have to work any more.

Dead end jobs are jobs that will never pay you enough money to save for retirement. Programming isn't one of those jobs.

[1] Yes the 9 women, one month joke applies for short sprints but in general not for longer coding projects.

Being able to combine programming with communication, sales, and analysis skills can be incredibly valuable, though. That 1000 line/day programmer, if he looks around and observes the functioning of the org, could probably easily find several areas where those 10 programmers are writing 100 lines/day that could easily be automated away. If he can then write a solution that does this and sell it to upper management, he's clearly been more productive than all of them combined. This is where you find the programmers who get paid several million a year.
Agreed, but if she can observe the "functioning of the org" then she probably will try management at some point. There is an old quote my Grandfather had which went something like "soldiers control battlefields, generals control objectives, and kings control countries." The gist of it was that if you could see the path to success you rose to the level where you could use that vision to make that level of change happen.
"she"?
Several tech bloggers/writers (Ben Horowitz of a16z is probably the most prominent) have taken to using female pronouns when referring to unspecified tech leaders (CEOs, founders, high-level engineers). This is a way to combat sexism and unconscious bias in the tech community - by sorta jarring you out of your expectations of what gender a prominent tech person is, you're made to consciously think "Why wouldn't a woman be in this position? Why is my default assumption that a high-performing engineer is male?" Much like your post.

Anyway, I support this trend and I've been known to do it myself sometimes. It's a little disorienting when the hypothetical subject of a thread flips genders halfway through, but the person is only hypothetical anyway, so why not?

If there is an economic cap on the value of a developer, it doesn't derive from how much code they produce.

Value differentials for programmers derive from knowing the right code, not typing up any code that suffices, and I think pay reflects that. 1 KLOC of the right code can easily be better than 10 KLOC of the wrong code, even if the 1 KLOC is buggy and the 10 KLOC has no bugs.

I think programmers are valuable in a power law way, and this can be based on intelligence, domain knowledge, experience, math skills, and other things.

You can command a much larger salary if you either have technical/math abilities that almost no one else has (like a Google search engineer), or you can have an economically valuable product sense (like a proven, high-paid early start-up engineer), or you can know a domain in an economically useful way (many technical founders).

Programming is an army-of-one kind of job, even if you work in a larger team. Insightful programmers are better than dogged ones by orders of magnitude. I look for programmers who are creative, self-driven, and knowledgeable.

EDIT: I ended up editing this for the first 18 minutes it was live. Premise is the same, but I wanted to work on how I said everything.

In my book, edits like this are fine. You turn a draft into a post-revision work and it makes the site better, especially for folks who aren't reading it conversation style.

I agree with this sentiment. It's more effective to find the correct company and correct project within that company to make sure the lines you write are valuable. That's where the money comes from. I know some dudes who are smart and great coders who are making (relatively) little, because they are working on fun things with limited economic value. On the other hand, there are guys who are merely good programmers who are making a lot more, because they sought out projects with very high value and impact and moved those forward. Although it's hard to say how either group can complain too much considering the relative luxury of even entry-level programming jobs in this market.

Part of the reason that startups can be so lucrative is not that a lot of code is being produced, but that code doing something never before done is being produced. The code is not the product, the behavior it's implementing is. It's a subtle distinction, but an important one.

I tend to agree with your basic premise, and I realize that in the general case it is impossible to do analysis. But my fundamental point was that a programmer's salary is limited by that programmers replacement cost. We talk about ageism here now and again, and it is out there, but it is more common in my experience that people who had their salaries ratchet up because their management didn't know what else to do, end up being paid more than their replacement cost. If they try to find a job at a different company, the hiring managers might evaluate their salary requirements as unreasonable. That particular story is way too common in the Bay Area.
You are right. Programming is a blue collar trade.
That is a bit of a reach to call it blue collar.

I have blue collar friends from high school who envy what programmers do and make and I do what I can to try and persuade/teach them to learn to code and make a better life for themselves.

whoosh

Edit: I thought the original "blue collar" remark was sarcastic. Am I wrong?

(comment deleted)
Most everyone has forgotten the 2000 dot com crash, when all the computer jobs disappeared. This "learn to code" is just how it was then.

I would bet money that in less than five years, a lot of software people will be unemployed -- again. (If I win, good. If not, good. :-) )

I'm curious - how much money would you be willing to bet on that? At which odds?

I've been through the dotcom crash and minor disturbances after, and the jobs never "disappeared". Yes, there were layoffs, pay cuts and hiring freezes. But not all jobs disappeared, and most of the people who lost their jobs found new ones after a while. I'm not diminishing the pain and suffering of those who got caught in bad situations there, but it's not like the whole IT disappeared and people went back to abacuses and wired telegraph.

>>But not all jobs disappeared

I wrote "all jobs" in one place and in another "a lot of software people [...] again".

Since you were also there, what I meant should be obvious...?

In my Swedish job market, there was also something similar around a decade earlier. But it was not only for software people.

"This "learn to code" is just how it was then." - really? I don't remember it that way. Sure there was lots of people who wanted to get in, and lots of books printed but nothing like the sustained push that there is now.
Blue collar workers can make a lot of money these days, especially if their trade required significant theoretical learning and practical training.

Electricians, mechanics, heavy machinery operators in Alberta can make $150,000 in the oil sands before overtime, plus fly-in/fly-out costs; in the major urban centers, upwards of $100,000. If you're young, add in overtime and you're looking at $150-200k+. Foremen and supervisors can make up to double.

A programmer in the Bay Area will top out around $200k as a senior member of technical staff.

By the article's definition, neurosurgery is a blue collar trade as well.
If you consider blue collar work as "manual labor" and white collar work as "knowledge work", then there likely is a middle-category that is a mix of both - "knowledge work that require you to use your hands to deliver results".

Peter Drucker called these folks "knowledge technologists": http://www.economist.com/node/770819 ... And believed probably will be the majority of workers in a developed countries over the next century.

A) That's not what the post above says, and b) it's not accurate.

Blue collar refers to jobs that involve physical labor. The term arose when people on the factory floor would wear blue coveralls, and people that worked in the offices off the floor would wear white button down shirts.

Why exactly every job needs to have a clear path to CEO or be considered a dead end or blue collar job is a mystery to me.

because unless you can work 40 hours a week and spend another 20 learning new techs as they come out for the entirety of your life, you will become obsolete unless you can move onto other roles. If management is not an option, then chances are very likely that person will be unemployable somewhere between ages 40-50.

and that's only one problem. you may reach (or ever want to) the top, but if there is a low ceiling that is going to put so many pressures on your career.

"Unemployable beyond 40" has been dead for years in the software industry. Probably for decades. There's nothing in current industry that requires you to be under 30 (actually, there are tons of positions which require extensive experience) and technologies don't die that fast - C programming market is still alive, C++ is over 30 and not going anywhere, Java would be 20 years old next year and not disappearing any time soon. The time where experience from 10 years ago was completely irrelevant is past, now you could have been writing in Java 10 years ago and still be doing it today and continue doing it 10 years from now if you'd like so. Of course, you have to keep current, but any trade has that, especially trade which deals with advanced technologies.
you cherry picked the most successful languages, and also ignored how much they changed. you also doubled the amount of time c++ was actually used. 30 years ago COBOL was all the rage I'm sure. And lets face it, knowing just those is not going to get you very many jobs, maybe for a few hundred people in the entire united states.

and people have to look ahead and see the trend. newer stuff is coming out faster and faster. The 'hard' stuff is paying more and more and requires less and less people to do it, while the easy stuff is consistently either being outsourced or made so easy 'anyone' can do it.

and unemployed beyond 40 dead in the industry? are you kidding me? we have less IT/programming jobs today than we had in the late 1990s. Where do you think those people went, they just up and died? they had to pick a new industry

You quite underestimate the number of COBOL jobs. E.g. simple search [1] reveals thousands of COBOL jobs just on one site, and most of these jobs I imagine would not be even advertised on generic job-search sites since these go through consulting firms which already know who they can hire. Deeper research shows there are millions of COBOL programmers now [2] and massive numbers of COBOL applications still in business. Actually, as traditional COBOL programmers start retiring and banks and hedge funds still being in business, programming COBOL may become very very lucrative market, paying very much better than your average Ruby or Java gig.

>>> newer stuff is coming out faster and faster.

I see no indication of this. Actually, most of the things that were with us 10 years ago are still around, and introduction of paradigm-shifting concepts massively slowed down due to massive size of the market which would not allow quick change and incurs massive legacy costs. You could maybe introduce new HTML version in a year in the 90s, but now you're stuck with HTML 4 for decades because literally millions of applications depend on it and they are not going to change, and HTML 5 is rolling out in baby steps, despite all the cool stuff it proposes. Looks what happens to XP - they have a massive install base and now Microsoft can not get rid of it, however hard it tries. Market size is enormous now, and so the pace of adoption of any paradigm-shifting concepts is much slower than before.

>>> we have less IT/programming jobs today than we had in the late 1990s.

Could you back this up with some data? I haven't found the data that support this conclusion. The programming jobs are shifting around and moving, but I don't see IT being smaller now that it is in the 90s, even accounting for the dotcom bust. Where is that "less programming jobs" coming from?

[1] http://www.indeed.com/q-Cobol-jobs.html

[2] http://cis.hfcc.edu/faq/cobol

Edit: removed wrong data.

yes there are a few COBOL 'jobs' scattered throughout the country, but that really doesnt matter. a person can stick with learning one language and hoping it remains relevant for their 40-50 year career, but outliers do not make a rule. theres lots of people doing really well playing the lottery.

making a web page today in 'html' is NOTHING like it was 5 years ago, let alone 10. you're simplifying it way too much.

if you were a web designer, and just stuck with what you taught yourself back in 2005, you would be out of a job. you constantly have to learn new libraries, new languages because no software operates on an island. yes, every field must adapt and add changes, but none so much as like with tech.

all of this is COMPLETELY irreverent anyways. IF you want to be a programmer, and not look ahead to your future to find out what you will need to grow into, BY ALL MEANS. And if you think people will still find your skills valuable even though you don't plan on updating them constantly, good luck.

the point is, if you read the article and dont want to gamble with your future, a programmer is a dead end job in the sense that if you are not moving into some sort of managerial position, there is no where to go.

Nobody says "don't learn anything for 10 years". That would get you in trouble in almost any profession but maybe burger flipping. What I am saying that what you learned in 2005 about HTML is still useful, you just add stuff to it bit by bit, becoming more experienced - and your value actually raises, not declines. Nobody says "do not update your skills". What I am saying is "don't discount the skills you already have". This is additive, not zero-sum - if you know both COBOL and Ruby, it's better than just one of them, and your expertise should cost more even if you don't write COBOL on current project - because you have wider experience and thus probably can see solutions or aspects somebody with narrower experience can not. That's why I think "unhireable by 40" is a nonsense that is long gone from any shop that is interested in hiring actually good programmers and not cheapest coders to generate KLOCs for some contracts where it won't work anyway but it's OK because it means more contracts.

>>> IF you want to be a programmer, and not look ahead to your future to find out what you will need to grow into, BY ALL MEANS.

This is a false dichotomy. I want to be a programmer AND look into my future, and I do, thankyouverymuch. I do not want to be a CEO, it's not a job for me, I'd suck at it. But I don't suck at programming, and that's what I want to do. And I think there are lots of opportunities around to earn your bread and butter on it.

>>> that if you are not moving into some sort of managerial position, there is no where to go.

That's plain wrong - there's everywhere to go, and you confirm it yourself by noticing new things appearing all the time. That's where you go - doing new things! You don't have to have a 'C' in your title to live a fulfilling professional (or personal) life. Of course, if your goal is to have that 'C', go ahead - but there could be many more goals than that.

we have less IT/programming jobs today than we had in the late 1990s.

This site seems to disagree with you: http://www.bls.gov/opub/btn/volume-2/careers-in-growing-fiel... . I work with numerous people over 40 actually.

Also, I beg to differ that learning a new programming language is a big deal. We've yet to see a single complete disruption in the way we program... It's still editors, compilers and debuggers in the end.

  From an economic standpoint, being able to generate 1000 lines of syntax error
  free code per day, is perhaps the best possible programmer you could be, but
  its never worth more than 10 programmers generating 100 lines of syntax error
  free code a day.[1] So yes, there is an economic limit on your pay.
If all you ever do is code functionality that other people dream up, in a system design that someone else specifies, then I agree completely. For a lot of engineers, that's how they operate. Maybe that's how they want to operate, maybe that's the best way for them to operate.

For other coders, and this depends as much on the company and corporate structure as it does on the individual, they are the ones dreaming up new products, new approaches to old problems, layout solid foundation that 100s or 1000s of engineers can build upon, or specifying an approach and methodology which ships the product 6 months sooner with twice the functionality or half the bugs. They are the engineers that make your entire organization not only more efficient, but literally capable of things that they weren't capable of before. That's when you start getting into the same type of ROI from that programmer as that SVP is supposed to be providing.

The problem is most organizations simply aren't organized to promote and reward these engineers, and that's the "dead end". The last time I worked for a company I didn't own, literally the only way I could find to make any real money was to do my programming inside the sales organization, so I could be paid on commission for writing code for "major accounts" which would only later be taken up by the core engineering team and become a full-fledged product line.

Being a quota carrying engineer, with variable compensation and benefits like 'Presidents Club' was living in a different world from the engineering org. What I found was that, when working for someone else, in order to justify significantly higher pay, I had to be more directly driving increasing sales. Doing the exact same work inside of the engineering org, even with the same sales impact, would have paid significantly less.

For the big tech companies, this is exactly how they are organized. Software companies that don't have job titles like "principal software engineer" and "distinguished software engineer" which rank at director/VP level are going to have a hard time as software becomes more and more critical.
Principal software engineers, fellows, and most of the related titles don't write code, in my experience.
> So yes, there is an economic limit on your pay.

As a mere programmer, sure, but senior developers get well into the six-figure range, and with some luck, those stock options are worth quite a bit.

Sure, not everyone gets to work at Google at an early stage, but their IPO minted a good number of 'mere' programmer millionaires.

    From an economic standpoint, being able to generate 
    1000 lines of syntax error free code per day, is 
    perhaps the best possible programmer you could be, 
    but its never worth more than 10 programmers 
    generating 100 lines of syntax error free code a day.
This is just plain false.
Yeah, Jeff Dean would probably disagree with this post too.
I think you view (or at least present here) the programming job as pure production measured in KLOCs or something similar, and this is wrong. It is a part of the job, but not the main part. 1 KLOC written by a good programmer may be worth literally orders of magnitude more than 10 KLOC written by 10 poor programmers. The reason is not syntax errors - those are mostly irrelevant as the tools get rid of them pretty quickly. The relevant part is what tools can't do - conceptual build of the code, design, robustness and ability to accommodate change. These terms are very hard to define, especially with rigor that would be convincing to anybody outside of the industry, so there's a lot of hand-waving and "you know what I'm talking about" when we talk about it, but in the essence poor code is poor and great code is great not because the former has tons of obvious errors and the latter does not. It is because you'd spend orders of magnitude more money, time and other efforts supporting and improving poor code than great code. That's where better programmers are providing the edge, not in the KLOC output. If you need KLOC, you don't need great, you don't even need good, you just need "can tie his own shoes" one. But if you need a system that you wouldn't have to throw out and rewrite in 3 years because it became unmaintainable and every fix immediately creates an explosion of new problems - then you need great. That's where 9 women/1 months comes into play.

The problem here is of course as I noted this is very hard to manage and evaluate except way post-factum (and even then there are little of robust tools and methods to do it with any rigor) so it's hard to know for sure. But in many cases, "you know it when you see it".

Why are you assuming that the 10 programmers are less skilled than you are. Take this scenario: You(good programmer) write 1 kloc. 10 other (equally good) programmers write 1/10 kloc but each of them is willing to work for less than 1/10 your pay!* Isn't this a possibility in free market? So may be you dont have any intrinsic value. Your value is a function of how many similarly skilled programmers are out there. Since this applies to all trades, I guess the solution is to move to trades where the supply of "good" labour is less than your current trade. May be that is why the author's friends who moved to management get paid more.

*assume: (communication/coordination overheads) + their pay < your pay

It's a well-written essay (I say this as someone who has been a journalist/editor/manager and is now doing quite a bit of programming again for Recent.io). But really you could say the same thing about many other jobs:

* Do you love to report the news? In most jobs as long as you continue to be a reporter you will likely have a limited set of promotions you can get...

* Do you love woodworking? In most jobs as long as you continue to be a carpenter you will likely have a limited set of promotions you can get...

* Do you love photography? In most jobs as long as you continue to only take photos you will likely have a limited set of promotions you can get...

Even in you look at areas like law, the top 10% of earners in the profession are not the ones who do all of their own legal research and brief writing. They're the GCs at publicly traded companies or equity partners at large law firms, where they're responsible for the work output of tens or hundreds of lawyers. Which means, yikes, they're managers too.

Disagree that its well-written. The rambling feel of it was kind of distracting from the point he was trying to make. The anectodes are kind of generic (sister, hawaii), I felt like they were just thrown in there as some kind of "proof"
A cynical take on your observations sometimes occurs to me, and seems pertinent.

The managers set the wages. Therefore, they will be well-paid, and their contributions will readily recognized.

This is simplistic and does not explain everything, but I think it is a major ingredient.

Like being good with makeup can help you be more attractive, learning how to persuade managers that you are valuable is a skill of its own. You don't have to be a manager to have this skill, although it is a subset of the management skillset.
> The managers set the wages. Therefore, they will be well-paid, and their contributions will readily recognized.

It really depends on the managers. We live in a culture that rewards paying oneself well, even to the detriment of others' pay. Root cause analysis.

The market mostly sets the wages. Pay too low, and you'll be unable to hire anyone. There's also an upper bounds on what one person is worth. It can be a lot, and the difference in productivity between average and superstar programmers is well noted. But even a highly productive programmer has a limited value as an individual member of a team.

Executives get promoted because they've proven to be able to get groups of people to work together to achieve something. Most programmers don't want to or can't do that. Our trade is mostly one of individual contributions, often as part of a team but generally we're not responsible for more than our own tasks, and we're generally not blamed when one of our peers can't keep up.

> The market mostly sets the wages

Unless, you know, several high-ranked managers collude together. Like it happened with Google and Apple.

A less cynical explanation for the same data: a great manager helps many people to be more productive. A great manager of managers help many more people to be more productive. Management scales much more than individual contribution.
There's also a flip side of this: a manager of a team of N is responsible for representing the collective results of a team of N.

If the team is successful and hits a home run, then the manager benefits a lot.

If the team crashes and burns, then the manager is at significant risk of job loss.

(Yes, office politics will come into play and managers will do their best in the latter case to diffuse blame, but the point is, they are the most visible elements of their respective teams.)

> If the team crashes and burns, then the manager is at significant risk of job loss.

I hear this frequently, but I'm not sure it matches my experience well. Among people I've known and worked with, I haven't noticed that managers get fired at any greater rate than non-managers.

I haven't looked at any actual statistics on this; maybe management really is much riskier. But I can't help suspecting that the idea that management (and especially executive) pay is justified by greater career risk may be mostly a story told by managers to make themselves and others feel better about pay differentials.

Perhaps it is more accurate to say: "If the team crashes and burns, then the naive, politically confused, disconnected manager is at significant risk of job loss".

Most people don't like firing people they have worked with for months or years. Most people don't like getting fired. The savvy manager who knows organizational jiu-jitsu and can explain with a great story can often come up smelling like roses after disaster. The naive manager who assumes that everything is the way the mission statement says it is ... will be out on his ass.

See: http://www.ribbonfarm.com/2009/10/07/the-gervais-principle-o...

(I don't particularly agree that it's well written.)

However I entirely agree. By the definition of "who gets to be CEO," every job except senior executive is dead end!

Yes, it's true. My solution was to find a job programming at an excellent place to work, so that I can make sure I do valuable things and still be done with my day around 1-2pm most days. Take my dog for a walk, read, learn, whatever after that.

If they're not gonna pay you in gold get 'em to pay you in some other way. All the prestige stuff ("a seat at the table", job titles, authority, etc) isn't actually worth much anyway.

Seeing promotions as your only form of career advancement is a little misleading. In management the only way you can increase your income/status is directly through your employer (or switching jobs). In programming, you're a builder. You can make templates, assets, etc. to sell. Your income increases can come from applying the skills you honed at work in the world around you
I disagree. In France it's the case, if you want to get a promotion and you're a programmer, you hate to move and become a manager or something else. But don't get it wrong, programming and managing or marketing are very differents positions. You can't be good at programming and bo good at managing. Like any other jobs, programming is a real one. Not just one you start with and then move to management or something else, to get more money.

I am realistic and I know most of company think programmers are replacable. But I think it can change if everybody does.

Programming is not a dead end job, if every company like google, atlassian or github does, I mean paying well their developers and treating this as a real profession.

> You can't be good at programming and bo (sic) good at managing.

I don't think they are mutually exclusive. Sure, being good at programming doesn't imply you'll be good at managing. But there are plenty of great programmers who successfully

> Programming is not a dead end job, if every company like google, atlassian or github does, I mean paying well their developers and treating this as a real profession.

I don't buy this. Even at Google, there is a psychological cap on how much engineers can make—you'll never see a programmer pulling in, say, $10M a year. That's the point: as a programmer, there is a society-wide cap on your pay, some level at which you will eventually plateau. As a manager, there is no such cap: you can eventually be the CEO.

Managers can't change jobs and are under total control of their bosses. Developers can change jobs at any time but won't make as much money as the management cartel (which, suprise, decides that management should get all the comp). Both jobs kind of suck in their own way.
I think "Coding" as a job can be best analogous to an old job called "Samurai".

A good samurai's aim is to be the best at skills. His all work is dedicated towards a "kingdom". Every samurai doesn't wants to become a king. They just want to server their king.

And the King's duty is to take care of its army and people. I think king's jobs is highly overrated. In real life its difficult to be a king. In the end its just a job with lots of responsibilities.

Then the samurai should behead the king and redistribute all of the fine luxuries that the samurai earned for the king to his samurai buddies. Then simply find a clerk to do the king's old job.
No mention of finance? Working for the devil sure, but if you know your stuff they will pay and pay and pay for top class programmers. Also depends on your idea of a dead end salary.

If you enjoy what you do and can make £50k out of it then you should be pretty happy with your life.

Programming is hardly unique in this regard. In fact, I'd wager that the vast majority of professions are like this. There's a simple reality at work: when you are programming code there's only so much effect it will have. That effect is greater when the organisation is small (i.e. a startup) but there's a limit.

Once you become a manager in charge of five developers you're suddenly able to affect 5x (well, not quite, but..) the change within a company. And yes, yes, I know - you're not actually doing the change, but you are responsible for planning, organising and maintaining it, which in many ways can be more valuable to the company.

On the other hand, without all of the actual programmers you would have no product and no profits at all. Neither group can function without the other, and pay should reflect that rather than the ridiculously unequal spread we just automatically accept as normal.
Yes and no. It might be an unpopular opinion (and I'm a programmer myself) but 80% of programmers are relatively easily replaceable, particularly in large organisations. There are indispensable unique unicorns out there, but they tend to be well compensated.

When a project is managed by one manager and coded by five developers, you could easily lose replace two of those developers with little impact. If you lost the manager (who is calculating deadlines, coordinating with other departments, pitching for funding, as well as managing the individual developers) the project could run into problems quickly.

On the face of it, it seems unfair - the developers are the ones actually writing the code after all. But the HN trope that managers are useless and feckless isn't correct.

>If you lost the manager (who is calculating deadlines, coordinating with other departments, pitching for funding, as well as managing the individual developers) the project could run into problems quickly.

Really? In my experience managers can be replaced rather easily, or at least more easily than it is to a replace a single engineer. It always takes some time for the new software engineer to learn the specifics of the project, and even more time to really grasp the business domain. The new manager has stuff to learn too, of course, but in my opinion it's less than what a new engineer needs to learn.

In addition, if you replace two software engineers, you pretty much lose two man-months of work, but replacing a manager shouldn't cause much problems in the first month.

> Really? In my experience managers can be replaced rather easily, or at least more easily than it is to a replace a single engineer.

Possibly true. But think about how most engineering managers attained that role...it was because companies thought they were good engineers, despite little if any evidence that they'd ever make good managers. Throw in a dash of, "we don't really have a training budget" for this new profession (which it is...management is an entirely different profession from engineering), and you have a recipe for disappointing, easily replaceable parts.

If you're a manager your biggest asset is relationships with developers and with peers across the organization. Those assets can't be replaced at all - it takes time to build trust, and trust is completely non-fungible between people. I've seen departments just decimated (worse, actually...decimate means "to kill 10%", and in this case over 50% of leads & senior engineers left) because a well-respected manager left.
It seems you're both right - but that good managers and good engineers are both rather difficult to replace.

The problem being that replacement "good" managers and engineers aren't just sitting around waiting for you to hire them - they're already in good jobs - see also: http://www.joelonsoftware.com/items/2005/01/27.html

Additionally, for managers, you can't promote from your summer interns.

Managers aren't useless. They are just a sub-specie of human beings who happen to have the audacity and lack of moral fiber to exploit other people. I for one, upvote them in the name of genetic diversity!

Developers on the other hand are the worker-bees/ants. Individually replaceable but as a collective, the backbone of an colony/swarm! A queen bee cannot survive without its attendants.

Marx got it all wrong, the owners who provides the means of productions and the proletariat who provides the labor are partners in hand.

Why are some people so individualistic to nitpick on why they make $80K yr and drive a Prius vs. someone else who makes $250K and drives a E-class, when we are all together in this together for the same goal for the greater good of the same collective, for the investors and maximizing the shareholder value???

Not useless, just not deserving of more pay than the engineers. Same goes for the executives.
I don't think they are useless, but I also do not think that the majority are particularly skilled. In many cases, it seems like teams succeed despite their managers interference. A lot of managers are more like secretaries and I think they should be compensated as such.

There are exceptions of course, but the unequal pay has nothing to do with skill as far as I'm concerned.

A lot of managers are more like secretaries and I think they should be compensated as such.

Which is where I fundamentally disagree with you. Optimised database indexes (for example) can be valuable to a company. But if the company lacked a developer who could optimise them, they could get by - they'd just have to get more/faster servers.

You can't throw money at organisational and communication skills in the same way. In fact, doing so usually makes it worse. If you don't have managers that know the company, can interact with other stakeholders and otherwise just manage people, you're screwed.

If you think that kind of stuff is secretarial work then I could just as easily counter by saying that development is basically just glorified word processing. And should be compensated as such.

Frequently, especially in smaller (<500 staff) organisations, the communication and organisation is better handled by developers and, as projects get bigger, supplemented by project managers.

Every communication layer you add to this mix has an enourmous cost. It is a bit like playing Chinese Whispers.

I think the first level of important management is managing teams of teams or portfolios of projects

It's true. Once an email hits a certain point where managers get CC'd--that's usually the point where creativity shuts down.
>Which is where I fundamentally disagree with you. Optimised database indexes (for example) can be valuable to a company. But if the company lacked a developer who could optimise them, they could get by - they'd just have to get more/faster servers.

Look up complexity theory. There are plenty of cases where hardware will not make up for a poorly written sql query. If the people giving direction don't understand the technology, they will make stupid decisions like thinking that they can fix a bad query by throwing hardware at it.

>You can't throw money at organisational and communication skills in the same way. In fact, doing so usually makes it worse. If you don't have managers that know the company, can interact with other stakeholders and otherwise just manage people, you're screwed.

This statement has done nothing to convince me that managers have skill that is so hard to find as to justify their high wages.

You certainly need managers, but I think it best if you pick a suitable engineer for this role precisely to avoid the database example you just provided. An engineering manager should get a higher pay than their peers, because they are not only experts in the domain but also have some people skills.

But a non-expert manager? Their only skill is communicating and giving orders? This is role that should ideally go away.

Pretty much every role in a company these days is essential, thanks to economic rationalism. Fire the janitors, see how much people like working in your offices in a month or two.
Anyone who has transitioned from programming job to a managerial role, how did you do it? Do you recommend going back to school for an MBA? Would love to hear suggestions.
I ran my own company for 12 years which probably helped. Took a contracting role at a Fortune 500. Took extra time to come up with suggestions to managers on how to improve the overall development team. Left when the contract was over. 3 months later a management position opened up and the development manager asked me to interview for it.

One of the best ways to get a new position is to start performing the work of that position before you have it. If you're already doing to the work you can remove the risk in figuring out if you'll be capable in the new position.

If you enjoy programming then going into management or becoming an architect is really a demotion to something less interesting and which likely requires much less skill. Becoming an n-th level uber-engineer really only makes sense if you believe that top down hierarchical systems of organisation are effective or worthwhile.
There is also a third option: freelancing. This way you can keep programming, with only a moderate amount of "management" (finding new projects to work on/dealing with clients).
I would put it this way. Some positions affect the money-making capabilities of a company more than the others. Senior management has more control over the business-aspect of a company and hence this situation.

In an ideal world for programmers, the only thing a company would be bothered about is the cleverness and the programming complexity of the product and would reward its programmers more. Such a company is bound to fail in the real world.

I like very much my dead end, and hope to stay in this dead end, until the end of my career (pun intended).

No need to go to boring management positions.

Doesn't this describe almost every profession?
I'm about to stop programming at my company because I have too much to manage as a founder. It makes me really sad and also pretty scared. Anyone else experience this?
New Relic's CEO has some tips on how to keep coding: http://blog.newrelic.com/2014/03/11/sxsw-coding-ceo-recap/

  1. Surround yourself with amazing people.
  2. Carve out specific times for development work.
  3. Focus on high-value projects.
  4. Make it clear why a coding CEO is good for the company.
Good advice! I still code at night, picking up some visible UX stuff that wouldn't make it on the road map otherwise. That way, we never have a week where it doesn't APPEAR that the product has gotten better just because whatever was on the road map wasn't visible or is taking more than a week. Seems to help relations with customers/investors/non-technical parts of the team and I enjoy it.
About everyone who founds a company and it starts to become successful.
You don't get to be 4bln $ companys CEO doing management job 9 to 5 any more that you are going to be Marcus Persson or John Carmack doing programming job 9-5.

Sky is the limit only for people who have right combination of skill and luck.

> Sky is the limit only for people who have right combination of skill and luck.

Don't forget hard work and persistence! :)

I sort of treat ability and propensity to work hard and persistence to be skills. Ones I almost completely lack.
Click bait. You're saying if I'm a programmer I might not be a millionaire someday? Oh no! That's the only reason I wanted to be a programmer in the first place. Better reevaluate my life decisions. /s
No offense to the author, but what a terribly written article full of logic holes. For example:

'Our parent company's former CEO started off as a programmer 25 years ago, switched to manager; in 15 years he went all the way to being CEO of a $4B company. After 10 years he retired recently with mansions and cars and no worries. Meanwhile I work with people who started around the same time and who are still senior software engineers.'

So the author just picks one person that happens to be the CEO evetually? What about the rest majority of managerial forks? They probably are stuck in corporate ladder and even may be fired already. The chance of a person working on a corporate managerial job evetually becomes a CEO is likely no higher than a tech person eventually becomes a CTO. So why just pick one CEO person to illustrate managerial role is more promosing than tech role? Comparing the max value of a group to the average of another group is unfair.

Also, I program because I love programming. Even if you gave me one billion dollar making me manage people for the rest of my life instead of writing code, I would still turn it down. If doing the thing I love is dead end, then I beg a different definition of dead end. Okay, just use author's definition of dead end as slight chance of moving up, but I just don't care as long as I love the job I am doing.

__

An interesting side note is programming as a hobby. But I would still rather programming both at work and a spare time, as long as the day job I do making me happy.

> The chance of a person working on a corporate managerial job evetually becomes a CEO

Simple mathematics shows it is very unlikely for any random person to become a CEO. After all, if everyone is a CEO, who is being managed?

> Do you love to program? Don't expect to ever become CEO

Why the hell would I want THAT? Are you crazy?

This is silly.

First, very few people become millionaire CEOs. If thats your standard for success, then every path likely leads to failure because no path reliably leads to that kind of success. Some paths are more likely than others, but none are very likely for the average person.

Part of the reason for flat-ish career trajectory is that programmers earn more at the start than most. Some professions have more of a premium on seniority and experience than others. Senior doctors and lawyers for a combination of the above 2 reasons probably have steeper salary growth than programmers. That said, good 10+ yrs programmers do earn pretty damn well. 10 years as a doctor or lawyer and you're still considered a youngin.

Anyway, if you're the CEO, you aren't a programmer. If he's claiming that being a programmer is not a good starting point for becoming a CEO, I think he's wrong. Look at all the over 40s who were coders at some point, many transitioned into management or something else. Programming actually offers a lot more of that kind of opportunity than anything else.

Totally agreed. In the Bay Area, there are many companies where the most junior engineering tier earns more than $100k a year, only including cash compensation. To expect to grow by 20% per year on average for a decade given this starting condition is just not realistic.

Honestly, to be in the top 95% of incomes at the entry level and then to complain that you're in a dead-end job . . . it just smacks of a lack of awareness about what a real dead end is like.

>> "In the Bay Area, there are many companies where the most junior engineering tier earns more than $100k a year"

It's important not to forget cost of living in that area is abnormally high.

How could we forget, every time someone mentions a salary in the bay area people leap to mention how expensive it is there.
Watch out, you might lose all your karma for interrupting the Bay Area self flagellation. Honestly, it is expensive, but not enough to offset the insane salaries, at least for devs. If you're going to feel sorry for someone, feel sorry for everyone else who lives here.
The high dev salaries there make the Bay Area even more of a dead end than it would otherwise be for the people who are stuck in service jobs for life, such as making food when the devs eat out.
Honestly, it is expensive, but not enough to offset the insane salaries, at least for devs. If you're going to feel sorry for someone, feel sorry for everyone else who lives here.

Programmer salaries are not "insane". A half-decent programmer is worth $500,000 to the business and costs about $100,000. A good one is worth over $3 million, and only costs about $150,000.

Programmers are actually incredibly fucking cheap right now, if you know what to do with the talent.

If that were true, why wouldn't some startup pay the best programmers it could find $2,000,000 a year and put everyone else out of business?
If you look at it funny, YC itself is doing this. Funding isn't salary, but if you look at it in terms of expected value they're pretty much handing gobs of money to those they think can do the right kind things with computers.
Because nobody yet has figured out how to turn programmers into simple machines where you shove money from one end and get even more money from the other end. You need to actually give those programmers something to do and sell the results and make profit on it. Programmers don't do that, that's a different profession. One that can be extremely lucrative if done right, but so far has not submitted to any automation.
Assessing the talent is hard. People who have the ability to assess that talent (which is different from the talent itself, also uncommon) are rare, people who have the money or organizational position necessary to pay significant numbers of programmer salaries are rare, and the intersection of those two sets, even in a world with almost 7 billion people, is vanishingly small.

The talent is rarer than the capital, and the capital often isn't owned by the decision-makers (VC) but the people who control the capital are the ones who get more arrogant. Why? Because capital is easy to demonstrate, and talent is hard to prove. It's especially hard to prove talent without breaking social protocol, which is the real advantage of pedigree. Everyone knows that there are plenty of sharp people without pedigree, but proving you're one of them requires being extremely assertive. Professionally, it's often better to be presumed intelligent and thereby be able to optimize for social polish alone.

Startups tend not to have that kind of money. Big companies do, but how can they be sure who's the best?

One answer: http://en.wikipedia.org/wiki/Acqui-hiring

Acqui-hiring: buying mediocre talent at a panic price because your middle management filter is so broken that you can't spot talent at the bottom. (Granted, after a long enough spell of dysfunction, you won't have much talent at the bottom either.)
This is basically the startup business model - get a bunch of guys together, split equity, write something cool, get aquihired for a few million apiece.

The reason it has to be done with equity instead of salary is because there's a principal-agent problem with salary. People collect their salary regardless of whether their contributions actually are worth a few million. And so they have every incentive to sit on their butt - or at least, not take any risks and just do what got them the initial salary grant - in the meantime.

(comment deleted)
If you know what to do is key. Unfortunately, most businesses cannot properly utilize a decent programmer, never mind a good one.

The average mid-size company is a monument to bureaucracy, ruled by mediocrity and incompetence.

If you don't want to be in commuting hell, then it costs about $4k+/month for a house to raise a family in. To buy a house close to your work will also cost over $1.3 million.

If you willing to go over the bridge, then your paying $2k/month

It depends on where you live in the Bay Area. If you avoid San Francisco and the peninsula then housing I'd about the same as the rest of California.
You can become a millionaire CEO if you are intelligent with at least a 10-20% success rate. Get 5 years work experience, ace the GMAT, go to a top 5 MBA, do consulting at 250-500k/year for 10 years for a company like Bain or McKinsey, then get hired as CFO of one of the companies you work for, 5 years later get promoted to CEO.

Even if you don't make CEO, you can get to several multiples of an engineer's salary with a 100% success rate with this plan. Let's face it, a software engineer is far from a top tier occupation, and for good reason. You can hire very high quality people with 10 years of experience in eastern Europe for $30/hour.

This is a pretty distant perspective. It's like saying 'you can become a millionaire startup founder if you are intelligent. Go to MIT, Get a job at a young tech company. Get Funded by YC. Sell the company to your former employer.'

Obviously, it's not impossible to become a millionaire CEO. People do it. There The requisite work, skill, risk, talent and luck just isn't comparable to 'become a programmer.'

Becoming a programmer requires one to learn to program, at university or some other way and get a job programming which isn't to hard if you can program. At neither step are you competing to get through gatekeepers and bottlenecks in a most-will-fail situation.

You easy steps to becoming a CEO require you to go through several of these competitive bottlenecks. In any case my point was just to point out how silly it is to say 'most programmers don't become millionaire CEOs, it's a dead end job.'

Too bad the work is the polar opposite of a programmer so it's kind of a pointless thing to say in the article that programmers rarely become CEOs. Most people don't want to become CEO's, they're programmers because they love what they do.
As one of those people - you can live like a king on that kind of money in eastern Europe. As a freelance programmer I can afford to pay rent for a flat in Ljubljana that puts most SF apartments to shame both in size, comfort, and location.

What's better, I can do that _while_ actually living in the Bay Area. Just because I can and I like moving back and forth between here and home.

Kings tend to buy houses not rent flats. Ljubljana seems nice though.
Eh, I'd much rather live in a nice flat than a house. And I guess it might be nice to actually own one eventually, I actually prefer renting. Much less of a hassle.
Wait till you get a family, your ideas on merits of moving around may change drastically.
Are you a us citizen or on a work visa? Genuinely curious?
Programming wasn't very well paid even when there was no competition from abroad.
High finance (banking, PE, hedge funds) are basically the only career I know of where you begin at a relatively high salary, and have potentially unlimited career growth (in terms of salary and earning power), where at the highest end, you aren't doing substantially different work than you did at the beginning (this is simplistic, obviously. You work at a higher level, and begin to employ people to do the work you did previously. My point is that the career progression doesn't require a change to realize the highest earnings).

Am I wrong? To become a "millionaire" (using it as a synonym for wildly financially successful) doctor or lawyer, you generally make the majority of your money through either an invention or marketing skills. What career isn't a "dead end" applying this logic? Real estate, maybe?

To be a doctor you need to study for like 10 years as well.
I'm pretty much just addressing career progression after you enter the profession, not barriers to entry (since the author seems to be addressing those who have cleared whatever entry barrier there is).
When you asked "Am I wrong?", I nodded in agreement, until I read the next sentence. Successful doctors and lawyer are usually people that proved a better track record, usually both in their relation to their client (so important for those jobs) and their factual successes and special skills. Additionally, they usually also succeed at leading teams of talented younger people that help them succeed at a bigger scale.
What's the problem making a good living doing what you like?

Here's a spoiler - most people will not be rich.