Numerous studies have placed the typical IQ of software developers to be in the >120 range. That's between 1 and 2 σ , or somewhere around higher than 90% of the population.
http://www.randalolson.com/2014/06/25/average-iq-of-students...
However, where things get complex is when we reach the systems-design level. Doctors need ten years of studying to be qualified. I would claim that you need at least that much of programming to be really qualified for a position where the evolution of an expensive system depends on the intuitive design decisions you perform on the spot.
The cost of unskilled medical practice are localized and can result in large costs and an individual tragedy.
The cost of unskilled systems design practice can be spread temporally over several years, result in large organizational costs in maintenance and small tragedies for the poor bastards who have to maintain the system.
While I do not suggest comparing the economic risks are a good key metric in computing a professionals pay check I think it should be a part of the equation. It's really hard for me to figure out who has more financial risks tied to their profession, the systems designer or the doctor.
If we continue the risks analysis one could say a regular lorry driver can easily cause as much in damages with careless driving. However, in the case of the lorry driver learning to do a proper job does not take ten years.
Edit: Auch, the downvotes, they hurt. I was trivializing a bit with the comparison to arithmetic. What I should have said is 'a fundamental skill applicable to many domains just like arithmetic or writing.
So I would not worry about systems designers being screwed for low pay. Rather I find those situations problematic where employer does not realize they would need systems design nor know what it would look like in the first place.
Having some sort of "guild verified" systems designer licence might alleviate those situations by making the client realize the thingamajic they are ordering might need systems design and would actually require it in the contract. Would it help really? I don't know but it would bring clarity to the profession-client interface by making the client more aware of the skills needed to implement the contract successfully.
Let me rephrase this, anecdotally STEM inclined people can pick up programming at an adult age far easier than they would e.g. reading and writing or playing a musical instrument.
Can everyone do this - I don't know.
I have interviewed many people who claim to know programming, but can't program. These same people I think could read and do simple arithmetic.
Like many things, once you know how to do it, it looks easy. I never understood why people have a hard time with pointers, recursion or dependency injection, but many people do. Programming is not some impossible to learn skill, but it does require dedication, a level of abstract thinking not often found in other disciplines, and logic. Reducing programming to writing or arithmetic is maybe true for simple Excel macros, but not what most people on this site would consider programming.
I claim both can provide value. Even simple programming can be used to automate domain specific tasks that will reduce the amount of manual labour required, freeing the professional to other tasks and thus increase their productivity.
Programming in a professional setting has thus at least two facets - a tool to create new systems and a tool to automate existing ones. I would claim both tasks are programming but with dramatically different mechanisms for adding value.
"Reducing programming to writing or arithmetic is maybe true for simple Excel macros, but not what most people on this site would consider programming."
Yeah, I went overboard with simplification there. The difference I wanted to communicate (but failed) was between the human requirements for entry level scripting and actual systems programming as the post I responded to stated programming did not have the same economies of scarcity as skills in medicine. I would have been more correct to state that programming is more like arithmetic than medicine in the sense that both novice and experts alike can provide added value through the act of programming but in widely different circumstances.
I'm a professional software engineer but my wife with a PhD in physics 'just happens' to write Matlab scripts in her day job as an R&D engineer to chew through terabytes of production data in an indusrial setting so I think I have a pretty good view to these different kinds of domains :)
But do you go to the brain surgeon when you need a band-aide? How often do you visit the brain surgeon?
My point is most programmers are arrogant douches who think that their todo app is the equivalent of brain surgery.
And the people coding robots to do surgery couldn't do it without actual surgeons telling them how to do it.
And I can almost guarantee you that those programmers are getting paid hundreds of thousands if not millions of dollars and are not the ones who are getting screwed by their employers.
The only reason you think brain surgery is so complicated is, again, because doctors have excellent PR.
And you're kind of proving my point about the arrogance of programmers.
I'm sure you'll fix your moms computer before you let just anybody do brain surgery on her. A large project may have many interconnected components, but it's not the only profession that involves such things and the way the human brain works means that given enough time you'll probably be able to understand whatever systems you would like to. I mean, what it basically comes down to is understanding a few programming languages and logic. Maybe chemistry would be a better comparison? I wouldn't say IQ matters as much as dedication.
Bill Joy wasn't at the forefront of computer science at the dawn of the computer age because he was a super genius, he had just logged more than 10,000 hours of programming by that time.
Unfortunately for us programmers we're soon going to find our salaries going down simply because there are inevitably going to be more and more tech savvy people and programmers. It's not a new thing anymore. ANYONE can do it. Literally. Only about 1% of programming being done right now is highly advanced and complicated. The good programmers will continue to create easy to understand abstracts for the not so good programmers until we can ask watson to code what we need on the spot.
And with most software projects, much like real world engineering, it's less about the fundamentals (language, base logic, etc...) and more about managing and working with highly complex systems.