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...
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).
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.
Intern/Freelancer: ~80k p/ year --> Engineer/Consultant: ~150k p/year --> CTO/CEO: ~250k p/year --> post-acquisition or (better yet) profitable founder: $500k-$10M+ p/year.
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.