A simple way to "get more people to code"
yosefk.com
yosefk.com
There are a lot of people out there who will never be able to produce anything beyond "Hello World" and some will struggle to get that far.
What if we focused early on identifying kids with good problem solving skill and other aptitudes that might make them good programmers and encouraged them to explore those areas. What if we did that for every discipline?
No, that would mean taking an interest in kids instead of just herding them into classrooms where they can be safely ignored until they're 18. Let's keep doing that.
If you focus early on identifying kids with good skill, you might be pushing kids down the wrong path for them, or you might be excluding a lot of kids who will develop greater skill a little later, or exclude those with great creativity that could be applied to coding with a little tuition.
Creating a group of people who are pre-approved for coding careers seems to me like an awful idea. In fact, I believe that this already exists, and that's where your problem comes from.
Realistically, there is a segment of the population that will never be able to acquire skills that good coders have, or have acquired, regardless of how much you try to teach them. The "Hello World" crowd. I went to university with some of them.
If you stop and REALLY think about it "everyone should learn to code" makes about as much sense as "everyone should learn to repair their own car". Would everyone like to be able to repair their own car? Sure. Would this be a useful skill to have? Sure. Is everyone capable? Absolutely not.
How about this.. go and spend a few hundred hours to acquire a skill you may never use again. It has to be one with which you have had no previous exposure or proficiency. Sounds a bit stupid when it's put that way doesn't it? That's essentially what "everyone should learn to code" really sounds like.
You would have to be more specific about what you are proposing, because it really sounds like testing for career predetermination.
If true, it would explain the apparent contrast between many programmers' attitude of "C'mon, this is easy! I can't believe they pay me to do this." and non-programmers view of coding as abstruse and frustrating.
The 'double hump' he discusses is nonsense. The study evidences it from test results where a group of people scored nearly-full marks and another group of people scored a lot lower, i.e. the inevitable result of any test where each question is testing the same skill.
You cannot test for "problem solving skills". However, you can test for more concrete definitions of intelligence (http://en.wikipedia.org/wiki/Theory_of_multiple_intelligence...). I am a decent programmer and I was never amazing at formal schooling. I always scored really high for visual–spatial intelligence in standardized intelligence while in school. My councilors told me I was good at reading graphs and maps and maybe I should go into geography. Fast-fowrard to today when I am a programmer and I've read that visual-spacial intelligence is one of the most clear predictors of a programmer's ability. Too bad my high school consoler thought I should go into geography and not programming. The real advice he should have given me was skip the whole college thing and learn how to program on your own, but that probably would not have flied with the powers that be.
What I found suggested it predicted computing careers (along with science and engineering, and negatively predicting Law, Social Sciences end Education) not talent at programming (or Law or Engineering etc.).
Also, it correlates with being male (though the researchers claim that female scores can be boosted with some training). It's not clear if that was taken into account when calculating the careers.
Imagine a world where only a few of us knew how to balance an account, or a few of us understood how much will they have left if they spent x amount at the gas station.
Now imagine a world where everybody has a basic ability to develop software.
All the above being said, the beginning is not programming, but learning how to Think, Read, and Write. Not programming language, but human language. When we have learned some basic thinking process (logic), then having the ability to easily program will follow.
You're living in it. Math illiteracy is very common.
Pointless, I think. They'll only be able to make the most basic of software. Existing programmers complain about bad code and naive solutions already. This will only compound the issue.
I'm not sure if programming teaches critical thinking, reading and writing any better than the existing subjects we have.
If every doctor could write their own SQL queries against their own data, if the dentist office manager could pull the list of customers who live within 2 miles, if the marketeer can put his own static site very quickly, if the scientist can write code the parses his text and automatically pull related text from wikipedia and links to relevant papers written between 1738 and 1776. Why must they wait for you and I to do this? Why the wait?
I'm not sure if programming teaches critical thinking, reading and writing any better than the existing subjects we have.
My point is that learning critical thinking, reading, and writing is what we should focus on because it ultimately makes better programmers.
For what is a good program if not a well thought through problem (logic) turned into a few lines of text (writing, reading) that provide the solution.
It sounds a bit stupid when it's put that way doesn't it?
That's essentially what "everyone should learn to code" boils down to.
There just isn't going to be any meaningful return on the mental investment unless coding is going to be your new career.
I feel that I can write as bad code as I want to, and still get away with it (not that I do it), since nobody realizes it is bad until another programmer works on it which might be years later, or even never.
If bad programmers were identified easier, they would be forced to go out of business or start to make better programs! And with more people that can actually code, people wouldn't be forced to choose the bad programmers.
People aren't forced to choose bad programmers, they don't know bad programmers from good ones or even barely competent ones.
What do you have to do to get hired as a coder?
Put a few buzzwords on your resume, spout them back in an interview to someone who has no idea what they mean and frantically google whatever you don't know on the job.
This is why everyone wants you to take a whiteboard test before they'll hire you now. It's all the due diligence they can afford. Sadly, a simple FizzBuzz test would disqualify most "coders".
People are paid in more than just money. There's job security, interesting work, autonomy, and (more motivating than people think) social status. The vast majority of developers don't have anything but money, and frankly a lot of them don't even have money!
There are things more important than writing code (even good, well-engineered code aimed at solving real problems). There's: playing with your dog, going for a run, spending time with your family, and going out for a night with friends. People have chosen all these things over learning to code. Let them.
Is it not a BIG RED FLAG that the prime message is "Everyone should learn to code...well, everyone but me, anyway."?
This doesn't strike me as a particular good argument; for one, it implies that it's OK to not let people chose less important things than writing code (say, watch reality TV).
But besides, who exactly is trying to remove that choice? I don't see any advocate of "learning to code" saying we should force people to code.
Is it not a BIG RED FLAG that the prime message is "Everyone should learn to code...well, everyone but me, anyway."?
Maybe. But then again, many of those pushing the message are programmers themselves.
Perhaps not. But anything a teacher tells a learner to do is basically force. What choice does the learner have? They don't know any better.
This would be fine if what they were teaching were worthwhile. But it won't be: it will be "How to use Rails" (rather than, say, Ruby) or "How to use Bootstrap" rather than actually learning CSS.
Tech companies wish to encourage people into code primarily in order to reduce their wage bill.
Zuckerberg and Gates are not credible authorities here.
With ageism being considered "natural", what about giving incentive for old developers to keep coding instead ?
Or maybe self-serving and naive/idealistic would be better terms. But you get the idea.
Indeed any consistent argument in favor of motivating people to program would at least mention aging programmers and no such mention is to be found, or at least I never noticed it.
When I say "everyone should know how to code" what I mean is that everyone should know how to open a spreadsheet and do calculations, conditionals, iterative calculations, &c. From there I feel it's natural to then teach them a little of something along the lines of Python to do some simple calculations and algorithms.
I mean that people shouldn't be afraid to use a computer to do (gasp) computations. I don't think everyone will be a coder, engineer, or architect. I don't even think most people will enjoy it, per say, but they should know how to do it (just like someone people complain about having to take math, music, or art), using a ubiquitous tool should be part of a basic curriculum.
>Indeed any consistent argument in favor of motivating people to program would at least mention aging programmers and no such mention is to be found, or at least I never noticed it.
I have no idea what you mean
>I have no idea what you mean
Our industry has a fierce bias against older people, and indeed keeping an eye on HN for relevant stories shows that even top talent can be left to hang. If you're around at a company for long enough you'll see how some senior folk are fired and replaced by fresh college grads, sometimes after grooming those newbies for a while.
Also, just because people have shop class doesn't mean that everyone will become a carpenter.
More people coding = more entry level programmers that are cheap (because, ya know, outsourcing overseas is a bit of a hassle, H1B is a mess, etc, etc).
There are probably too many fucking programmers...
Some companies are just not the best use of dev time, and should die if they require it to survive. I feel much better saying that about companies than people.
Plus, pleading about inexperience seems a little late. It's 2014. The Mythical Man Month was written what, 40 years ago? Maybe I'm off and it's 30. Still?
Honestly as I think about it, that is a book everyone should read. Managing software development is a more valuable skill than the actual development.
Let's also consider another industry: cars. Car ownership per capita in the US is greater than the rate of households with Internet access -- 0.769 versus 0.748. [1,2] So professions related to cars have greater impact on people's lives, on average, than professions related to computers.
Furthermore, most car owners would agree that maintenance is expensive, very expensive. Not to mention the fact that most mechanics are men. Nobody has proposed that everyone should be a mechanic, let alone a mechanical engineer. The President has not called for more mechanics, more women mechanics, or for relaxed visa requirements for foreign mechanics. These things would be seen as ridiculous.
Until programmers form a regulated professional body, with its own lobby, they will continue to be singled out by the various lobbies of the IT and social justice industries (strange allies).
[1] 240 million car owners in a population of 312 million, in 2011. http://wardsauto.com/ar/world_vehicle_population_110815
[2] 74.8% in 2012. https://www.census.gov/hhes/computer/publications/2012.html
Also, one has to take into account that most people will just not cut it as programmers, no matter how much time or even practice they may put in.
Most people in high school aren't thinking super-hard about their careers. They're thinking about school and college. Even then, kids learn about "big" achievements - RNA, species classification, electron shells, WW2, White House scandals, etc. You're aspiring to be someone if you're in an area where you have scholastic resources, not just some programmer. You're not looking so hard at money. If you're in an impoverished area where graduation rates are abysmal and you're not even being taught science, the odds of being a professional athlete or pop star look about the same as going to college - a whole different set of challenges. Let's assume we're talking about high schools with resources to even have computer classes.
Paying more money doesn't make it a sexy profession - there are plenty of "famous" programmers that the HN crowd knows about, but none of their achievements are public. Creating a business like Amazon or Facebook doesn't have the same personal allure to most people like inventing a vaccine for polio does. I bet if you asked a classroom of high schoolers who Jeff Bezos is, 85% of the room would have no idea. There's no _personal glory_ to being a programmer.
With law, you can help people's lives directly - same with being a doctor. There's a social value to those professions that seems obvious and immediate (even though it might be far from the truth). Most people want to do good in the world, and being a programmer has no obvious correlation with that. It doesn't entice students because there's no history written about programmers, no scientific experiments you do in classroom, no math taught that correlates with programming. It's in academic isolation until college, and by then, it's too late.
Who says it's a problem?
Anyway, I think the issue of "not enough programers" is different to "not enough people can code." To keep beating the old writing analogy. One is "not enough scribes" and the other is "not enough literacy." At some point in history professional writing and literacy stopped being substitutes for one another.
Normal literate people didn't compete with novelists. Or looking at it another way, printing presses and literate public completely removed the need for scribes and (I think not coincidentally) we got lot more writers shortly after: novelists, pamphleteers and scholars.
So nurses who can code will not replace the programmers who wrote healthcare.gov but they might do different useful things.
The main point is, some people might not be interested in coding just for the sake of it...
Is there such a list? Social hacks? Coding for change? What resources I could show a fellow citizen to get him/her fired up about coding?
I think it's plausible, in the future, we will be paying people to learn.