A non-specialist physician apparently makes, on average, $195k/year total compensation [1]. This is, as you say, much higher than what the compensation of the vast majority of programmers. While salaries in the Bay Area can be comparable, a doctor's compensation of $195k in Ohio or North Carolina or is equivalent to about $350k the Bay Area.
Specialists earn $284k according to a national average, with some specialties earning far more.
There's really no comparison in what the typical programmer makes versus a doctor, corporate lawyer, investment banker, etc. But those fields are generally much harder to break into, and working conditions can be much worse early on in one's career.
Just met a doctor who owns three planes all worth more than $200k, one was $500k. My wife used to audit doctors in NC and some of them pulled $1 million a year net. The plane guy is not a specialist and one of the NC doctors was a podiatrist.
They have lots of opportunities for outside income on top of the peasant level $200k. Speaking and consulting and taking bribes from pharma.
Attorney pay and software engineer pay seem remarkably similar. Physicians earn, on average, double what attorneys and software engineers make. But there's a lot of ways to cut that: engineers can start earning much earlier than physicians can. There is also a much wider gamut in quality, in that some working software engineers are quite bad, but doctors that are quite bad are rightly forced to leave the profession. This arguably skews the average up. Also less ultimate downside risk in software: nobody can take away your right to practice software engineering.
If the question is: "Where can I maximize my earning potential: law, medicine, or tech?" I still say tech. I'd also argue all 3 of these jobs are "middle class professions", but tech has the highest upside for anyone branching out on their own (IE, fortune 500 is not filled with practicing doctors and lawyers).
While the average attorney makes a comparable amount to a programmer, the ceiling on attorney pay is much higher. If you work for a reputable law firm in a large city, you can expect to make $150,000 base, with significant raises annually until the eighth year when it levels out, usually around $250k+ base. If you then make partner, you can of course make much more, e.g. 600k+. Or you can become corporate counsel, and seven figure compensation is not unheard of.
This might not represent the "average" attorney, but there really isn't a comparable track to take as programmer while maintaining the title "programmer."
Regarding physician pay, you cited the average salary of an internist. There are many specialties (orthopedic surgery, cardiology, urology, dermatology, radiology, etc.) that earn far more on average.
Sample sizes get smaller and smaller as you go up the scale. To be fair, you're no longer "programmer", but "attorney" can mean so many things at this point, it's almost more like saying "working in tech industry".
Yes, that's my point. To travel your "software engineer track," you need to stop being a software engineer and climb the management ladder or become an entrepreneur to get the big salary bump.
> but "attorney" can mean so many things at this point
I don't know what you mean by this. I referred to attorneys at law firms, who can make $250k+/year for life as attorneys. Or doctors in well-paid specialties, who can typically and reliably make $350k+/year for life as doctors.
What's more, in these fields a person's perceived value actually increases with time and experience, whereas a software engineer's perceived value more resembles that of a linebacker.
Even in the Bay Area, I think this track would be an extreme exception rather than the rule. And the Bay area itself is somewhat of an exception. Vast majority of programmers in this country live outside the Bay Area. Another consideration is that 150K in the Bay Area hardly goes as far as 150K in other locations.
I don't know, I think it's far easier to get into the 300k range as a doctor than as a software engineer. There are 300k doctors in every city in the country, whereas there's probably only a handful of companies where you can make that much as an engineer.
Specialists earn $284k according to a national average, with some specialties earning far more.
There's really no comparison in what the typical programmer makes versus a doctor, corporate lawyer, investment banker, etc. But those fields are generally much harder to break into, and working conditions can be much worse early on in one's career.
[1] http://www.medscape.com/features/slideshow/compensation/2015...