I see it all the time, silly kids who think there is something pure and noble about giving themselves carpal tunnel, sacrificing their 20s when they should be having fun and forming relationships, sleep deprivation and associated psychological problems, stress, getting burnt out for 0.001% of a company and their boss buying a Porsche and propping up his "habits". Lawyers and doctors are far savvier.
The amount of money we collectively leave on the table is staggering.
Right if your goal is to make truckloads of money sure. Not all software professionals ascribe a great deal of value to this end. Many major advances in bringing high-end operating and distributed systems to the masses have come from "Open Source" movements. Is is that hard to imagine a more protectionist, profit-driven software industry where these technologies are shelved in favor of propping up current money makers? In effect denying cheap, high quality solutions to a generation of innovators and start up companies?
As a side note I found your call for unionization to be a flawed comparison. The organizations you've alluded to (AMA and ABA) deal in inelastic goods that enjoy popular legal protections. This is for good reason, no one wants brain surgery from an amateur, but I might give one a shot at standing up my wordpress site.
Sometimes the only way to jump over the heads of the paymasters is to do something for free.
Wrong browser window maybe? :)
To see the other side of that, you can always work as an independent consultant. You'll probably make more money if you do it well, but you'll have a lot more risk and variability in your income. Can't find a client this month? Tough luck, hope you've got savings. That's what you're giving up money for protection from.
There's also usually a bunch of other stuff provided, which may include sales, advertising, market analysis, customer relations, infrastructure management, etc.
The advantage to this attitude is that it appeals to HR and Technical interviewers. You're an upstart with some introductory skills and you probably have the competency to learn on the job and become productive within a decent time frame. It's better than working retail or fast food.
If we move towards an environment more like doctors and lawyers, we'll lose some of the self-taught crowd and probably rely more on paper credentials. I'm sort of talking out of my ass at this point because I've never seen or heard a doctor/lawyer interview for a job, but I imagine it's a little more involved and cautious than our industry's technical tests, puzzles, and quizzes. Our education is also far less involved. Our industry doesn't seem to want to move towards more in-depth technical interviews to establish competency, so unless some heavy regulation comes down the pipe, I really doubt the industry will become professional like the industries of doctors and lawyers
(And besides, why would we? Not every position in the industry will require extensive skills and education. We don't need BAR examines or peer interviews or board examinations or state licenses to build websites)
Another facet of this is that doctors/lawyers are somewhat gated by the time and money costs of education. In 6 months you can crank out one unit of basic programmer through bootcamps or whatever for a fraction of the cost that it takes to produce one unit of doctor or lawyer.
I don't know why it happens to be like that and if such people tend to become programmers or programming makes people to believe such things (although I have some guesses and the former seems more plausible, but that's another topic). But because of that striving to "make the world a better place" it would be much better if it would be natural for us (us people, not us programmers) to describe current behavior of doctors and lawyers as "evil" rather than describing behavior of software engineers as "foolish", even though both are completely valid. After all, the technical progress over last few centuries clearly shows that the world isn't zero-sum game, not yet.
Yeah, I know, it sounds like advocating communism. But what can I do if it so much naturally better in it's essence! And we would be pretty close to making it almost possible already, if not for that "pragmatic" ideology some people are spreading.
IIRC, deflation would be caused by a very fearful and therefore finacially conservative population.
^ What a crap culture that perpetuates this kind of thinking.
I'd rather have 100 doctors earn 500k/year than one insurance admin earning $50M.
In the meantime, programmers aren't even paid overtime. Because...?
There'd be more open source if programmers were paid more, not bullied into working free overtime on a salary and pressured by companies into vastly expansive, potentially illegal (but what individual has the resources to find out?) contracts that curtail their copyright to even products they develop in their free time. These cases exist.
Someone can simultaneously work on side projects for the greater benefit of the community around them, and make sure their employer is aware that working on stuff because they're interested in their spare time does not mean they can be underpaid.
It's up to those that are considered the best by their peer group to lead the way on this. In fact, it's precisely the same mindset that has us contribute to open source for free, with a vision to expanding our collective knowledge base and propel software development as a whole forward, that should push us to demand better treatment and pay of the other developers around us, commensurate with their abilities.
There are often two or three lynchpins at smaller companies who can easily ask for more for themselves, because they are invaluable to the organization. Those same lynchpins can also keep an eye on the other folks at the company and make sure they aren't being treated or paid like dirt. It's possible to do this while keeping the organization's own concerns in mind. Arguably this is the kind of thing that ultimately may lead to some sort of union, guild, or association structure, as the people working at one organization start going to work at other ones, and ask their original champions for help on how to be treated well at their new jobs.
I for one will have my foolishness, which I truly feel is a great contributor to how fast our industry is able to move, and eat it, too, by looking out for the folks around me at work and doing what I can to make sure they're paid as they deserve, within the confines of what is possible without bankrupting my company. I'm sure it won't always be easy, but I suppose we wouldn't be talking about this if it were.
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.
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 :)
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.
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.
I think this works both ways. When I was in high school, it actually seemed like everyone could be a programmer. My mom was teaching programming at a state university extension campus. Her students were getting jobs after one year of school. I was already programming at the same level. Neither my parents nor I could see any reason to spend four years in college learning a skill that anybody could do, and we expected the market to saturate.
So I majored in something else, and learned programming on my own.
You can try to elevate it by calling it engineering, but it's not. Most programming (truth be told, most product design, not just programming) is done by trial and error. Of course there may be a level of computer related activity above programming, that deserves to be called engineering, that is vital for critical tasks. This is not to denigrate the market value of content knowledge, such as knowing a complicated API inside and out, or the different processes for making things out of metal, that allow a good designer to come up with better designs.
I think there is a kind of a institutional schizophreny on the role of the modern programmer since the first programmers were mostly a mechanical part of the machine translation process, punching cards for programs written by someone else. I believe this historical trait has skewed the perception of the requirements for the profession.
While I understand the desire to improve the quality of programming, I don't think what you're proposing would do that. I think all it would do is encourage horrible enterprise practices to spread and create vendor lock-in as smaller companies become less able to compete.
I suppose it depends on whether the seed population in this parallel universe were composed of lisp hackers or architecture astronauts :)
Maybe it's about more you know about stuff the more you know how little you actually know, if that makes any sense at all...
These organisations have been around for decades and have been pushing the professional-body wheelbarrow for the whole time.
Try practicing medicine without a medical license.
Which, frankly, would be approximately ridiculous. Even shitty code creates enormous value, and the industries where it matters have already extended their regulations to cover software development.
(not rhetorical) In situations where you need a job and don't have the cachet to dictate contract terms, what choice do you have?
Such terms (and some equally egregious) are very common in some places. All companies know the value of it (but play dumb) and won't budge an inch.
If I'm going to give something I produced away under a permissive license, I'd rather not be harassed to sign an actual, physical contract with some company as well, let alone one that places additional obligations on me while offering nothing in return.
People, in general, don't want to be rich. They want to be happy. Programmers are a happy bunch, when you look at them in aggregate, and compare with other categories of professionals. They are happy to give away enormous quantities of their labour. They spread "egalitarian myths" because they are happy with their lifestyle, and want others to join in. Because they are so confident, that they don't feel they need monopolies to protect or improve their lifestyle.
You are making a fundamentally flawed assumption that programmers are not "smart enough to unionise". What if they are smart enough NOT TO unionise? What if they actually know better than you think they do?
Never assume you know better how one should live his/her life.
First, seeing "programming" as a generalised activity is barely more accurate than bundling "doing stuff in front of a screen and keyboard" together. You wouldn't bundle together writing a novel and doing mechanical simulations on Mapple, would you? Same for programming. More specifically, the intersection between fun+unpaid open-source programming and corporate programming is tiny. Nobody's going to write an open-source SAP module for fun. As for big, strategic open-source projects, they have their many unfunny parts done by employees, who typically work for companies who want to commoditize something on their vertical market, by enabling an open-source product.
I do hack some stuff for fun, some others for money. I reasonably often manage to write fun stuff for money, and sometimes I even get to open-source it. But my open-source programming? I do that because it's more fun than _World of Warcraft_ or TV watching in my twisted mind; it has little to do with my job (most of the time, and unfortunately).
The "I'm no Senior Software Architect I'm just a coder" thing: OK I'm guilty of that one, but it's no modesty, it's just instinctive rejection towards a corporate system we often despise. We have a urge to reject the Dilbert ladder, the way you might reject a medal proposal from a country / organization whose ethics you condemn. Think of the people who declined the Nobel prize, nobody ever believe anyone did that out of modesty. An important point of yours still stands though: not playing along with the corporate charade is going to hurt most of those who indulge in it, in the long term.
About ageism, and as a not-so-young person anymore: when you age, you get a broader picture of what you work on, and why, while you lose some sharpness, most notably in speed of learning. This broader view has some value for the company, but only as long as it comes with some managerial skills: your better synthetic view is of no value, if you can't effectively share it with others. Your caricatural Aspergerish programmer doesn't have the interpersonal skills required to transform the insights of maturity into value for a company, and that kind of person is over-represented among the people who still call themselves "coders" when they hit 40. Successful mature hackers hide under other titles, in companies.
As for the "everyone can be a programmer", I don't remember having ever witnessed that, quite the opposite. Actually, I'm here because a decade ago, I enjoyed reading some smug essays, from some openly elitist guy who was trying to figure out what made hackers such special bunch ;-)
About the dangers of boot camps: if you need to teach someone how to program, he won't be serious competition for any hacker. You'd have to teach a hacker how _not_ to program. Cue that famous story about Mozart [http://betweenletters.quora.com/Mozart-How-Do-You-Write-a-Sy...]. OTOH, H1B might be more of an issue, I don't know. Sure it's cheaper competition; but what makes the Silicon Valley such a wealth generator is a critical mass of smart people. It might well be that allowing a thousand super-smart foreigners creates interesting jobs for hundreds of thousands of merely-smart Americans?
About programmers being typically unsavvy with politics and human relationships, there sure is a strong correlation here. Not being American, I don't understand why you typically despise unions more than the other lobbies which serve wealthier interests, but I can see the savviness in avoiding a name that triggers knee-jerk reactions in many voters.
So, back to the core argument: why don't we organize into unions, optionally under a less unamerican name? An issue is that many of the smarter programmers already have a fun job at a decent pay. In Europe, they also typically enjoy a healthy life/work balance, but the American relationship with "work ethics" is yet another thing I won't pretend to understand. Anyway, when you have fun doing something you're good at, you aren't tempted to enter a field you neither like nor master, such as politics, be it the genuine or the corporate kind.
And why aren't we typically good at it? Well, we typically enjoy deterministic things with explicit rules, like computers and unlike politics. We also typically can and love to fit complex models in our minds all at once, to design and debug them; I guess it often comes with a solipsist / introvert character.
Would I want a programmers' union? I'm not sure. I fear that it would favor a bureaucratized view of development, and suck the fun out of the job. I navigate the anarchic development job market just fine the current way, favoring what I personally care about (lots of from-scratch / exploratory developments, moderate workload, mutual trust with my hierarchy). I don't want to think of my job as a permanent struggle against my nasty overlords, the way automobile workers seem to experience their workday. But sure, there needs to be someone to kick the companies' asses when they implement no-poaching cartels.
They give away enormous quantities of their labor for free through open source (some even going so far as to sign one-sided contracts granting the copyright to for-profit corporations without compensation). They openly denigrate their own skills by spreading egalitarian myths like "everyone can be a programmer" (whereas I doubt many doctors or lawyers would make similar declarations concerning the practice law or medicine) and by preferring the title "coder" over its considerably more prestigious alternatives like "programmer" or "software engineer." They promote bootcamp-style vocational schools to flood the market with cheap labor to compete with them and to further bolster the perception that programming is an easy, low-skill trade, perhaps a rung or two above mere clerical work.
And then when it becomes apparent that they are getting screwed by their employers who collude with one another to drive down wages with no-poaching agreements, H-1B visas, and by firing senior devs in favor of 20-somethings, the long-ignored subject of unionization is revived.
And of course, being programmers and therefore unsavvy, the model proposed is invariably that of a blue-collar trade union like the United Auto Workers Union and never an innocuous-sounding, white-collar "professional association" like the American Bar Association, American Medical Association, or American Dental Association. These outfits are so successful in both their lobbying and PR that they've made their members among of the highest paid practitioners in the world (particularly doctors), and the gullible masses remain wholly ignorant of their true nature and consequently spare them from the condemnation usually heaped upon unions, both public- and private-sector alike.
In fact, their PR has been so successful that I wouldn't be surprised if someone responded to this very post contesting my characterization of them as unions, despite evidence of their anti-competitive practices being trivial to come by: http://www.usdoj.gov/atr/public/press_releases/2006/216804.h...