A simple way to "get more people to code"

Disclaimers

  • I'm not a citizen of a country where "getting more people to code" is a widely shared concern. While my proposal seems to me like a simple solution to a simple problem, this is merely an outsider's observation.
  • Recently the tide of calls to "code" seems to have subsided. If it's no longer a pressing social problem, I regret being late with my excellent solution.
  • Like all brilliant ideas, my solution is simple, and I was surprised by not seeing it proposed in the voluminous discussions of the topic. I apologize to those who've proposed the same thing earlier without me noticing for not giving them proper credit.

The problem

For a long time now, people have been voicing a concern about a supposed shortage of computer programmers. Many also express narrower concerns, such as a shortage of children, women or people with a certain skin color in the ranks of computer programmers.

A high-profile example is US President Barack Obama. This US President went further than urging others to "code" and regretted not being able to do so himself: "I wanted to go in and fix <healthcare.gov> myself, but I don't write code."

(I understand President Obama. I once wanted to go in and fix international politics. Then I realized that I don't shoot bullets.)

People from technology companies have also urged others to learn programming – for example, Mark Zuckerberg and Bill Gates.

Finally, individuals such as NBA star Chris Bosh encouraged people to learn to code in their private capacity.

Even this humble blogger was asked to give an interview by someone interested to encourage people in general and women in particular to code! And you know why? Surprisingly, because of a piece I wrote where I told that it was money that attracted me to programming, and it is money that keeps me in programming.

It was then when a solution to the problem at hand popped to my mind.

A possible solution

If there's a shortage of programmers, we could pay programmers more money.

How can this be arranged, and how would it solve the problem? There are several possibilities.

For example, companies such as Google, Apple and Intel could raise wages, causing some people to choose programming over other occupations. Once a sufficient amount of people are attracted to programming, wages would fall.

Alternatively, governments such as that headed by Barack Obama could lower programmers' income tax, or introduce a negative tax for programming. Again rising wages would attract more people to programming. A government convinced that the number of programmers reached a high enough level could then cancel the subsidy.

Finally, concerned individuals such as the wealthy basketball player Chris Bosh could donate money to computer programmers until enough people are attracted to the profession.

Having outlined a solution to the general problem, we now direct our attention to the narrower concerns of representation of particular groups of people in computer programming.

Discrimination affirmative action

Companies could increase the representation of younger people in programming by paying extra money to programmers below a certain age.

Similarly, governments could give tax breaks to younger programmers, or to parents of children who regularly submit their code for review by public officials.

Finally, a trust fund could be set up paying children to learn to program.

A similar approach should in principle be applicable to the problems of increasing the representation of women, people of particular races or other groups.

In some cases, questions of legality arise; for instance, while a trust fund for the benefit of people of one race but not others is probably legal, for-profit companies and governments might not be able to legally discriminate based on race.

However, this problem could be overcome, either by changing the laws or by setting aside a sum of money equal in size to the discriminatory subsidy paid to the members of the group in question. Once enough people from that group enter the programming profession, that sum of money can be divided between working programmers not belonging to the group, in effect undoing the discrimination.

Or something along these lines.

Conclusion

If this strikes you as absurd, does it strike you as even more absurd that people claim something to be a problem when its "solution" is as obvious as it is ridiculous? (Or is it really that ridiculous? Farm subsidies exist. Why not FarmVille subsidies?)

If people don't "learn to code", maybe the option is insufficiently attractive to those who can, given current wages, lifetime employment prospects, and the complete uselessness of the skill outside work.[1]

If companies don't raise wages, maybe they don't feel a very pressing need for more programmers. (Of course they'd still "encourage" people to program – as long as the cost of encouragement is likely to be offset by a fall of wages, once a surplus of programmers results from the encouragement.)

If a situation persists, maybe there's a good reason for it.

[1] It is not completely fair to deny programming its uses outside work. A more fair presentation is an analogy with today's hobbyist 3D printing. An owner of a 3D printer recently told me that "having one really exposes the impotence of… not having one. For instance, I needed this little thingie to hold a shelf. Took 30 minutes to design and print. And where would I get it otherwise?!" The answer, of course, is "at a nearby store" where they have a box full of these thingies at about 20 cents apiece. Of course, in a couple thousand years, his investment in the 3D printer will repay itself though the continuous printing of thingies.

Further reading

Women in Science by Philip Greenspun is a must-read for anyone interested in increasing the representation of group X in occupation Y:

Adjusted for IQ, quantitative skills, and working hours, jobs in science are the lowest paid in the United States.

This article explores this … possible explanation for the dearth of women in science: They found better jobs.

35 comments ↓

#1 Sergey on 03.19.14 at 11:08 am

Amazing =)

#2 sobetroll on 03.20.14 at 5:15 am

I like it, but the thing I would say is not that we need More programmers, but we need Quality programmers. Getting quality programmers requires better wages, and better teaching. Honestly? Coding should literally be a course for children to start when they are learning about reading writing and english. Start them young and they will comprehend way more about programming.

#3 Yossi Kreinin on 03.20.14 at 5:27 am

Well, if "we" need quality programmers, "we" should pay for it, I think, and – amazingly enough – people will then invest the effort needed to acquire the skills they're rewarded for acquiring.

I mean, it makes sense to subsidize basic education where people learn to read, write and some arithmetic because this shit is arguably universally useful. But programming is about as useful for anyone but the working programmer as an ability to operate a machine gun. Should kids learn to operate machine guns because "we need more quality soldiers" (in itself a patriotic and arguably sensible statement for a lot of values of "we")? Should everyone be forced to study human anatomy because we need doctors? Etc. etc.

#4 David on 03.20.14 at 5:38 am

The problem isn't money.

The problem is the learning curve. So many people have this idea that programming is the hardest thing in the world, next to rocket science.

We don't expose people to programming in any capacity, so they think it's all done by autistic whiz kids in their mother's basement.

#5 Yossi Kreinin on 03.20.14 at 5:42 am

How do you know "the problem" even exists? Are wages skyrocketing without an increase in the supply of programmers, hinting that supply is too inelastic relatively to the growing demand?

I, for one, was basically never exposed to programming in any capacity until the University; I chose to study CS because I heard wages were high. Is it really that unusual? I think not. Would I really do that if I thought I could make it as a lawyer or investment banker? No. Maybe this is the source of your problem then – too many options which are better for too many people – or is it a problem?

#6 Luke McCarthy on 03.20.14 at 8:04 am

No, no, no, no. The purpose of getting more people to code is so they can pay them *less* money! This solution circumvents the entire point of these campaigns. There is no shortage or programmers providing you can afford them.

#7 sobetroll on 03.20.14 at 8:21 am

I have to say I disagree that programming isn't useful. Even learning something as simple as html code can help you in all sorts of ways. I don't think its equivalent or as useless as teaching kids how to fire guns, its more akin to teaching them spanish. It may not be something that you keep or use on a daily basis, but its good practice to learn another language. Programming will always be paid well because good programmers are hard to find. Teaching it to kids is something I don't think is a bad idea.

#8 Yossi Kreinin on 03.20.14 at 8:44 am

Let's forget the guns analogy, a sensitive issue in itself, and settle on programming being analogous to working with cement for construction tasks. Spanish, for instance, lets you talk to hundreds of millions of people, write things for them to read and read a ton of things written over the years that you otherwise couldn't (machine translation isn't there yet). Programming isn't anywhere near as useful. HTML for instance – how does it help you to manage your Facebook account, or even run WordPress on a standalone host, the latter being something very few people do? How does it help you to accomplish anything which isn't a waste of your time given the better alternatives available?

#9 Lex Spoon on 03.20.14 at 8:50 am

Attempting to figure out what an economy "needs" has largely not worked out well. It was popular among national governments in the mid-20th century, but the countries that pursued it most enthusiastically found themselves with, for example, lots of steel but not enough bread.

Yossi and Luke have a perspective that looks more likely to work out well. Look at the existing price of labor for programmers. Based on that, I don't think we lack for professional programming.

#10 Caleb Cushing (xenoterracide) on 03.20.14 at 9:47 am

How about more companies offer more junior positions. Seems like every well advertised position is a "Senior" position asking for 3-8 years of professional development. Companies seem to not understand that experienced programmers are not produced from thin air. Sure there are some companies that have junior positions, but they to be on job boards more, and require less experience. More low paying accept right out of college positions. Also large corporations should put more effort into ensuring that people are actually trained. Truly we are in a field where no college training and experience are possible to gain without school or work… but lowering that barrier even more would be good.

#11 Pete on 03.20.14 at 5:23 pm

Agree with the theory that there is no shortage – the panic is an attempt by the corporate employers to keep the supply high so hey do not have to raise salaries. They learned their lesson from the dotcom boom

#12 Anders Hovmöller on 03.21.14 at 12:26 am

Money as incentives gives *negative* results if even a basic level of cognitive skill is required for the task. There's tons and tons of research to back this up. I for one am not comfortable with more programmers with less than "a basic level of cognitive skill" :P

#13 Yossi Kreinin on 03.21.14 at 12:29 am

I'm guessing those researchers then urged whoever funded their research to cut the funds so as to raise their cognitive skill. Maybe they then published something less dumb as a result.

If this is to be taken seriously – sure, maybe when you compensate per task it is so, if you compensate more globally then obviously it is not so.

#14 asdf on 03.21.14 at 1:25 am

The idea that everyone should be taught to code is dubious since more than half of humans cannot understand programming. (You have probably read this already: http://blog.codinghorror.com/separating-programming-sheep-from-non-programming-goats/ ) Nonetheless, this useful skill should be encouraged.
I agree with sobetroll that the problem is more one of quality than of quantity. However I don't believe it is to be solved by better teaching of programming. Rather, software engineering is plagued by cultural problems e.g. “worse is better” mentality a.k.a. complete contempt for the user experience.
Concerning the unbalanced representation of some categories of people in some categories of activity, basic income would make the problem's premises disappear in addition to optimising the hell out of the tax system.

#15 Yossi Kreinin on 03.21.14 at 2:06 am

Why should this useful skill be encouraged any more than a countless number of other narrowly useful skills? That is has no broad applicability has been a fact for many decades and I don't understand why this will change any time soon.

If I was "guaranteed" basic income, especially when I was naive enough to count on such "guarantees" in the long run, I wouldn't work for one hour. I think very few would. Not that the idea is bad in the abstract.

#16 Ivan Tikhonov on 03.22.14 at 6:06 am

You underestimate handiness of programming in a sense of advanced calculator.

For example, accountant of my tenants constantly screw up invoices and program she uses is a total shit.

It will be very easy to hack together a simple ad-hoc command-line accounting tool when you assume your use is actually understands what going on, instead of whole general-purpose GUI thing.

#17 Yossi Kreinin on 03.22.14 at 6:23 am

You overestimate human capacity to produce software which is not total shit. I'm a professional programmer using software produced by by professional programmers for professional programmers and the result is total shit (consider C++ semantics and the various little behaviors of C++-related tools). I kinda doubt that the command line accounting tool would be less of a total shit than the GUI thing. A lot of command line tools are shit.

#18 Ivan Tikhonov on 03.24.14 at 7:40 am

That's the whole point, tools made for internal use can be a total crap and full of rough edges yet outperform more general solutions.

First thing coming to mind is how half of my python scripts don't catch errors but instead simply have bunch of asserts here and there. If i do it proper way it would be much more troublesome.

Or my netboot tool with dumb DHCP 'server' that simply sends pre-backed reply no matter what it got and don't handle more than one TFTP connection at time. Because that's enough for booting linux.

#19 David on 03.27.14 at 10:48 am

I'm surprised that the aesthetic/cultural/general-knowledge argument is missing here: Schools teach kids much more math and sciences than they'll ever "need" (ignoring for a moment the quality of this teaching – which varies a lot). Few people will ever need to compute – or remember – the derivative of aran(x). However, with some luck, they remember that a derivative is a linear approximation to a function, they have some vague sense of what this statement means, they know – in some sense – that it has to do with turning physics into a predictive science, and that the concepts are prevalent in science it today. Moreover people with hi-school education know it (to some degree all over the world). I'm not saying that computer science is as important as calculus, but I think it is rather important. Neither calculus nor CS are spectator sports, and you have to get your hands dirty; in this case: code.

#20 Yossi Kreinin on 03.27.14 at 10:52 am

I think that schooling should stop at say age 13 and you should then choose what you learn, on the grounds that very few people have the vaguest idea about what a derivative is unless they re-learned it later in college or some such. "Coding" would add to the bunch of useless and forgotten shit (I for instance was exposed to Pascal, twice, Logo, once, and a bunch of weird Spreadsheet apps and such; I felt that my intro to CS course was the first time I programmed because all that stuff from school completely faded from memory.)

#21 David on 03.27.14 at 11:12 am

Point by point:
- Stopping the education system at 13 would work fine for self motivated people; less so for other people.
- You may be right about repeating the material in college. American colleges do this. It's rather horrible in the bad ones, and amazing in the good ones (like everything else in the US).
- As I said before, teaching level varies a lot. There are classes I took from which I don't remember anything except that the teacher was bad and I skipped classes. I had two programming teachers in hi school (Israel still had serious professional schools in the 80s). The first sucked, the second taught us analysis of algorithms.

#22 Yossi Kreinin on 03.27.14 at 11:46 am

What does getting stuck at school until 18 gives non-self-motivated people? If someone is going to get higher education they'll do it in 13 as well as 18; if they don't proceed to get higher education, what useful skills did they acquire in the last 5 years at school?

#23 David on 03.27.14 at 12:01 pm

I benefited from some of my hi school (most notably physics, and the CS teacher I already talked about). While I would probably have benefited academically much more from higher education, I would probably suffer socially; I think most 13-15 years old people would have a hard time in a university (I knew a few).
I have a kid at middle school and a kid at hi school these days. Some of the classes suck (the hi schooler tends to skip these), some are OK (surprisingly, hi school CS), and some are good; I don't think they'd fare well on their own, or in higher education – maybe your kids would.

#24 Yossi Kreinin on 03.27.14 at 12:05 pm

I didn't speculate about individual kids dropping out of school at 13 entering universities full of 18 year olds or 22 year olds; I speculated about school ending at age 13 for everyone. Maybe if you reconsider what I said in that light it'll make more sense – or less, but at least you'll see what I meant.

#25 David on 03.27.14 at 12:22 pm

I think I understand what you mean. Higher education is a very demanding system (Israeli students feel it less, because they usually start it older, but American students have a very hard time in their first year). I really don't think it's right for everyone at early age, even if it's "kids only universities". I also believe that broad knowledge is good for individuals, and important for society to function, but I know that not everybody shares this view.

#26 Rob on 04.06.14 at 4:02 am

The reasons behind the 'everyone learn to code' fad (which has now mostly passed by) were not necessarily to bring more professional programmers into the industry, though some people interpreted it that way.

One line of thought is that software is eating the whole world, so it's crazy that so many people don't understand its workings at all.

Another is the idea that programming is a niche that many people never even try, and you might pick up some naturals if everyone is exposed. You can have better programmers in the same prevailing economic conditions – not necessarily at the expense of other professions, just by more efficiently matching people to a job they fit well in.

Still, all in all it was mostly a fashion to do a few tutorials and give up. What really upsets me is, there is massive scope for people to learn to program, and keep programming – but not by building web front ends or running through simple command-line tutorials. People can and should be able to automate parts of their jobs. But normal user software is massively unhelpful for this – you can do plenty in a single program or suite such as MS Office, but there's no clean way for different programs to work together, without the messy glue that is the work of people who program for a living.

#27 Yossi Kreinin on 04.06.14 at 6:22 am

While I'm not a huge fan of MS Office, I am yet to see a better model in terms of automation (and after all MS Office is at least scriptable in a decent language compared to most of Unix's crazy little languages). For instance, Unix, the very well known platform where "programs doing one thing well work together", is… well I lack words to express exactly what it is, but even Rob Pike said the toolkit approach is long dead and the eulogy was delivered by Perl. Somehow things tend to converge to the one big hairy program approach.

So while people automating their lives with code might be a great idea, no evidence accumulated during the many decades that this is any more sensible than everyone tweaking their car's engine.

#28 Wyatt Storch on 05.10.14 at 6:33 am

Thank you for this essay. It points up commonly used mental shortcuts that increase costs without ever being questioned, even when they ought to be blindingly obvious. One of the most prevalent and easiest shortcuts is the idea that the shortest path to some socially desirable goal is "just force them" somehow. You can see the cost of this everywhere, but probably nowhere more profoundly than in the realm of education. The more force is involved, the less anyone gets out of it.

#29 Yossi Kreinin on 05.10.14 at 6:36 am

You're welcome; I wonder how you found it…

#30 Iheanyi Umez-Eronini on 06.09.14 at 1:29 pm

Hmm, unfortunately, I can't just go to a store and buy parts for my 40+ yo car or a home automation system that neatly ties into my disparate electronics and sensors while being extremely cheap.

For those things, my ability to code and or 3D print outside work suddenly become very valuable.

My engineering experience (or rather, the fellow engineers that I've met as a result of acting in a capacity as an engineer) all tend to use our "work" skills for non-work projects. Some people wrote engine/boost controllers, others mechanically rebuilt cars, or created electronics for one-off toys or other things at home.

Pretty much for us, cost = time * money. We strive to minimize cost everywhere. Nobody I know would bother 3D printing something they could walk into a store and buy, unless the part was ridiculously expensive relative to the amount of time/money it would cost them to reproduce it themselves.

Such tools have more utility outside of "work" than you may think. Or at least, within my anecdotal group of friends and colleagues, it does.

#31 Yossi Kreinin on 06.09.14 at 6:48 pm

You seriously think someone who doesn't do this professionally would get a positive ROI for learning this stuff for non-work uses?..

#32 Iheanyi Umez-Eronini on 07.10.14 at 7:59 am

Yes. I don't professionally fix/work on cars. Yet I've more than recouped the cost of an engine hoist (and most other tools) that I purchased.

Some things can be incredibly tine and cost saving, even when only used by a hobbyist. If anything, coding is the example that better exemplifies your point. The ROI counterpoint is much easier to argue against.

#33 Yossi Kreinin on 07.10.14 at 9:33 am

I reserve the right to doubt the ROI of hobbyist engine-fixing, especially if the time spent and the resulting opportunity cost is factored in. Someone enjoying to fiddle with cars is a legitimate hobby; everyone acquiring "engine literacy" as the most efficient way to maintain all the car engines out there doesn't sound sensible to me.

#34 Engineer on 08.04.14 at 10:11 am

Maybe there is a shortage of cheap, young, inexperienced developers. There are plenty of developers over age 45 who would be happy to take these positions that supposedly can't be filled.

A while back I applied to your employer and was asked to take an online technical test and was told they would get back to me shortly afterward no matter what. But they did not get back to me.

Several weeks later they sent me the following email:

Thank you for taking the time of completing the computerized test.
We found you qualified for our ***** team, however, couldn't find a vacancy in that team specifically, therefore the process took longer than usual and we apologize for that.
We might contact you again in the future when a vacancy will occur.

Good Luck!

After checking around a bit, I found out that the opening was in a team whose manager had graduated college 3 years earlier. He had held a summer job writing an emulator for a technology that I had developed myself at a competing company.

Anyway rather than complaining about the lack of cheap young coders who will work for cheap, inexperienced managers these companies could retool to have their work done by smaller teams of experienced professionals (as is done in Apple among other places).

#35 Yossi Kreinin on 08.04.14 at 12:16 pm

Erm… I'm not sure from your reply if you got the point of my article…

Regarding experienced people – we employ quite a few good ones. That said, I'm not thrilled to hire many of the experienced people I see asking for 2-3x the amount asked by college graduates without demonstrating any skills those college graduates lack except for a very high opinion of themselves.

The comment about "an emulator for a technology you developed at a competing company" baffles me as I can't imagine what it could be.

Leave a Comment