top | item 11990896

Ask HN: How to reconcile “teach everyone to code” and “only hire the top 1%”?

75 points| ern | 9 years ago

The Brexit crisis has got me thinking about inequality more broadly.Technologists have politicians in their thrall, and are not afraid to throw their weight around promoting curriculum changes in areas like math, and to also push the concept of "every child must code". Yet these same technologists claim that they hire a small percentage of job applicants for their companies.

It's clear that cognitive ability correlates with coding ability, and the idea of the 10X developer is widely accepted in our world. As a broader industry, we practice shameless elitism and seem to be making real-world software development more inaccessible to non-experts (apart from child-level development environments). As professionals. we deride RAD tools and "drag and drop" development, and show geek love for ever-more abstract modes of thinking like Functional Programming that a small percentage of working developers, let alone the general public, will grasp.

What's the end-game? Are we trying to create a new cognitive elite? Is it a labor lottery so that the small percentage of kids who are turn out to be good at coding will become professional programmers? Are we willfully blind to the fact that human talent is not evenly distributed? Or is the lack of accessibility ("easiness") just a blind spot that we have yet to address?

55 comments

order
[+] mancerayder|9 years ago|reply
I don't think those things need to be reconciled.

Not everyone hires the top 1%, only those that can afford it. And how many people consider themselves in the top 1%, anyway? Do you? I don't. The hubris of the idea of the 1%. That's what the hedge funds tell themselves when they put you through an 8 hour-long interview where you're asked to code sorting algorithms on a whiteboard. That they're seeking out that 1%. Larry Wall and Bjarne Stroupstrup? Okay, 1%. 25 year old comp-sci / top of class engineer student? I don't know, possibly? Okay, putting aside the snide remarks: 1% selection is not scientific, as we all know from hiring interview experiences. And moreover, are the people making the most money doing it writing software, or are they somewhere else in the IT company?

But to answer you, why shouldn't kids learn coding, it's one more notch on the belt. Takeaway: people have different interests, inclinations, talents and thoughts. For a young kid, you teach them the basics, you see what sticks. No reason why coding can't be taught young, even if it's part of a math curriculum. To be honest with you, I sucked in math, but perhaps if I had math in the context of a computer program, it wouldn't have been so bad.

Teach people coding. Also teach them to read the classics, do pullups, cook, what happened in the past, how old the rocks in the Earth are, what's in the oceans, what's outside of Earth's atmosphere, and everything else that we feel is important for a human being - not a future worker - to learn.

[+] michaelchisari|9 years ago|reply
It's not about the companies that actually hire the 1%, it's a matter of how many companies claim to hire the 1%.

And more importantly, how come those who claim to hire the 1% never pay anywhere near what might be considered 1% salaries?

I've had small startups talk highly of how they only hire the best, the 1%, the 10xers, etc., then put me through five or six interviews, including the ever-so-common 8 hour white board algorithm test, only to make an offer only marginally higher than I could make as a highly skilled blue collar tradesman.

It's fine if a very select few companies with lots of money decide to have insanely high standards. The problem is when the industry thinks they all deserve to emulate those companies hiring processes.

[+] danso|9 years ago|reply
Why does teaching programming have to result in a programming-only job? That's like saying the end goal of teaching literacy is for students to become professional writers. Or that children should be taught to touch-type so that they are eligible to work as transcribers.
[+] santaclaus|9 years ago|reply
> Why does teaching programming have to result in a programming-only job?

At the last local Python meet up I went to I sat next to a sociologist who writes code for data analysis and visualization and a 3D artist who wanted to script up Blender. If social scientists and artists are programming, I'd say it is a useful skill across a broad range of disciplines.

[+] ern|9 years ago|reply
Because it's marketed to parents and governments as "skills for the future" or "necessary for a modern workforce". Yet the "real-life" programming world in its current form is both elitist in attitude and genuinely difficult, and a miniscule percentage of kids will actually write code for work (barring a genuine effort to make it easier, and for businesses, developers and consultants to change their attitude to "amateur code").

Literacy is not vocational: it can be applied in many contexts-everyone uses reading all the time. Arithmetic is also plenty useful.

Or that children should be taught to touch-type so that they are eligible to work as transcribers.

Touch-typing isn't widely taught anymore, is it?

[+] z1mm32m4n|9 years ago|reply
Indeed at the school I attend, over half the students taking classes in the Computer Science program are non-CS majors. This includes a lot of math, science, and engineering majors, but there are a fair deal of humanities and arts students as well.

Studying programming and computer science is valuable for more than just programming; it teaches a useful way to problem solve and structure your thoughts.

[+] Animats|9 years ago|reply
As a broader industry, we practice shameless elitism and seem to be making real-world software development more inaccessible to non-experts. As professionals. we deride RAD tools and "drag and drop" development, and show geek love for ever-more abstract modes of thinking like Functional Programming that a small percentage of working developers, let alone the general public, will grasp.

Yes. Look at what happened to HTML, which was supposed to be simple. Up to HTML 3.2, there were good WYSIWYG programs such as Dreamweaver which could do a good job of page layout. Then came CSS, div/clear/float layout, vast amounts of Javascript, and a mess so complex that HTML became only an output language for content management systems. Yet most of the pages look about the same.

The complexity of simple business applications has increased substantially since Visual Basic, yet most of them aren't doing anything that profound. (I occasionally point a finger at Soylent, which built an elaborate IT infrastructure for a site that averages about two sales a minute.)

The annual web infrastructure fads aren't helping. Some of the biggest sites run on rather vanilla infrastructure. Instagram runs on Postgres. Wikipedia runs on MySQL with Ngnix caches. Do you really need NoSQL?

[+] reustle|9 years ago|reply
> became only an output language for content management systems

Sure, if you want a complex website and crm. HTML is just as easy as it ever was, if not easier with some of the cleaner html5 tags

> I occasionally point a finger at Soylent, which built an elaborate IT infrastructure for a site that averages about two sales a minute

Average isn't necessarily what matters, but peak. Do you think Amazon.c om needs to design their systems around avg load, or potential load a few weeks before Christmas?

Your complaints don't really hold water.

[+] devastator38|9 years ago|reply
I think the end goal is to get more programmers out there so they can bring hiring costs down. That's what happened to other well paid professions (ie law and pharmacy). The other strategy is to bring in more immigrants.
[+] corysama|9 years ago|reply
It's easy to get cynical about business and politics. But, sometimes people push for ideas not only because they can exploit the results, but also because they might be good ideas for lots of people in general.

1) It is generally expected that the skills involved in software development will be increasingly important for high paying employment and the general advancement of the state of the world. That's not a claim that being specifically a "Software Engineer" is important. But, that already "Nearly half (49%) of all jobs that pay more than $58,000 require some coding skills" [1] The kid might grow up to have a job that involves analyzing a lot of data, or running a lot of simulations, or designing something that requires more aid than a pen and paper can provide (ex: synthetic biology). Either way, that kid is going to end up doing a lot of work that looks a lot like software engineering in practice --even if it doesn't say "That Kid - Software Engineer" on that kid's business card.

Even beyond "some coding skills", it is recognized that the systems thinking, systems design and systems architecture that is inherent in software engineering is increasingly important for highly-paid technical work moving forward.

2) Very few actually "hire only the top 1%". If that actually was the case, 99% of software engineers would already be unemployed. The "hire only the top!" meme is more of a reminder that it's not often a good idea to go cheap and hire lots of low-cost warm bodies to fill out your project. Hiring cheap is the natural tendency of all management. So, they need a catch phrase to knock themselves out of that norm.

[1] http://www.content-loop.com/why-coding-is-still-the-most-imp...

[+] fapjacks|9 years ago|reply
Huh, that's an interesting way to look at it. You've convinced me not to deride people saying that.
[+] cperciva|9 years ago|reply
The larger the number of programmers in the world, the larger the number of programmers in the top 1%.
[+] lucb1e|9 years ago|reply
I'm just a student but as I see it, two things: enough companies don't hire only the top of the top; and most people fit in the top 10% for one company or another. One might not be a good fit in one place, but in another fit really well and coincidentally have the right technology stack background.

And besides, someone who can code is (in my programmer's opinion) more self-reliant than someone who can't. You can start your own company doing something small that still helps a bunch of people.

[+] escap|9 years ago|reply
Do you reconcile “Teach everyone to read and write English” and “Only hire the best writers”?

No because you write: >Literacy is not vocational: it can be applied in many contexts-everyone uses reading all the time. Arithmetic is also plenty useful.

So the question is more: "is coding vocational" ?

[+] schlumpf|9 years ago|reply
Rephrase that juxtaposition as "teach everyone to read" and "only admit the top 1% [to elite universities]". Now you have gone from potentially contradictory normative statements to an uncontroversial description of the educational systems in most countries today.

Public education was a bastion of American liberal democracy [0]. But adult literacy is not merely an egalitarian project. It was and is an important source of average labor productivity gains. At the same time businesses practice elitism where it, too, is consistent with the profit motive.

I'm not sure what's to be gained from hiring C+ English graduates to staff the New York Times, nor from hiring 55th percentile CS grads to bootstrap your next startup. Let a business hire the best employees for the job to maximize marginal productivity, and by all means keep teaching people to code where it can raise average productivity.

[0](http://tjrs.monticello.org/letter/334)

[+] imsofuture|9 years ago|reply
There is no objective top 1%. 99th percentile for one job might be 9th percentile for another.

Also teaching programming is more about technical skills and literacy than making literally everyone employed as a programmer.

[+] SFJulie|9 years ago|reply
I can teach someone litterate in math and one language how to code, but I cannot do the opposite.

Coding out of industry is less a usable skill than knowing how to make bread, alcohol, building, mechanic, filling your taxes, reading the laws for an individual.

Sacrificing generic skills that makes citizens more independent compared to «ready to use» skills for the industry is a sacrifice the nations are doing I don't grok.

[+] dunkelheit|9 years ago|reply
What I see discussed much less than inequality is social mobility. Why precisely is inequality bad? I'd argue that it is bad in large part because it implies lack of social mobility - when top 1% consists of the children of the top 1% of the previous generation while everybody else is stuck trying to make rent, something is wrong with the society.

In this light more equal access to knowledge and education is a step in the right direction. And elitism, impenetrable jargon, arbitrary barriers to entry etc. are not. But, you imply that who gets past the barriers is determined only by "cognitive ability". What if it is not the case and the structure of society is responsible too? When your "cognitive elite" consists mostly of white males with specific backgrounds who went to specific colleges that's suspicious.

Now when someone with a lot of money is out of investment opportunities with acceptable ROI and seeks for someone to create these opportunities for them, that kind of promotes social mobility but only up to a certain level.

[+] sokoloff|9 years ago|reply
Others have commented that basic coding education is akin to literacy or mathematical literacy. I agree, but also observe:

Coding teaches structured thinking. Basic coding (like lightbot-level or the Frozen/Minecraft hour of code exercises, which is where my 5 & 7 year old are) teaches skills every bit as valuable as thinking board games. We don't play Rat-a-tat-cat, Monopoly, checkers, chess, and go with our kids in hopes that they'll become grandmasters or even employable in the field. We do it because the elements of strategy, planning, adaptation, hard work, and overcoming initial obstacles are valuable thinking skills. As my kids get older, they'll progress into "harder" coding exercises, still not with a vocational angle. Even if they end up in a non-programmer job, "programming" is going to become an ever-increasing important part of most white-collar jobs in the future. VBA is programming. Excel macros is programming. Writing rules to filter your email is programming. I'd rather that not be mysterious to future generations, and I'll see to it that it's not to my kids.

"Only Hire the Top 1%" is something that I'd love to do, having seen the results possible when you get a dozen or so of the actual top 1% together. As it's practiced, most companies that think they are hiring the top 1% are probably hiring the top 3-5% and are hiring that not from the overall pool, but from the pool of people that walk through their door. That can quickly get you to "we're hiring from the top half of the pool, but we say we hire from the top 1%".

Imagine a pool of 1000 candidates and 26 companies with a divinely perfect interview system and rigorous "top 1%" standards. 10 will be hired by company A. 990 will be joined by 10 more applicants who left their job for whatever reason and apply to company B. 10 will be hired by company B. Lather, rinse, and repeat, and the top 250 (or ~25%) will have been culled from the pool before company Z even starts their process, yet company Z will still hire "the top 1 percent [of people they see]" The example is simplistic, but company A will get a much higher caliber workforce than company Z.

That's why retention of strong employees (with financial and work/colleague means) is so critical, IMO. If you can keep your top employees from leaving and have a decent interview process, you'll end up with a good team. If you have constant churn, you'll have an awful team almost regardless of anything else you do.

[+] zAy0LfpBZLC8mAC|9 years ago|reply
How to reconcile "teach everyone to write" and "only give the top 1% a book deal"?

Just as everything in the school curriculum, everyone should learn it because it is a useful way of thinking and a useful tool to know, and an important perspective if you want to understand the modern world, and to give everyone a chance to discover their talent at it/their particular interest in it in case they have it, in which case it might then lead some to choose it as a career.

Just because your todo list is not world literature, doesn't mean that your ability to write is useless, and just because your little VBA script (or whatever) is not a distributed fault-tolerant system that can process billions of transactions a second, doesn't mean that your ability to write programs is useless.

[+] MrManatee|9 years ago|reply
One aspect of teaching everyone to code is what Seymour Papert talked about in Mindstorms: it can be used as a medium for carrying ideas. For example, I think Mindstorms had this anecdote about a child who previously had trouble grasping the idea of classifying parts of speech (nouns, verbs, etc.). Later, she was writing a program for creating random nonsensical sentences, when suddenly it clicked, and it all made sense to her.

The point of this anecdote is not that every child should write such a program to understand parts of speech. It's about something much more general, but I have no idea how to express it briefly. I'm not even sure if I fully understand it. So, unfortunately, this idea might just be too subtle to be properly executed on a national scale.

[+] fsloth|9 years ago|reply
Personally, I don't think those two statements are linked. The first is about education on general.

Yes, it's nice to have a one more tool in ones cognitive toolbox. Like, it's nice to know some maths despite not using it professionally.

The second is just about hiring publicity. Given free choice, the top professionals often seek the hardest challenge in town. It's just a recruitment honeypot. There is no hiring methodology to actually figure out the productivity of a hire - but, you can affect the population of hires. 8 hours at a whiteboard in itself is not that necessary except to maintain the image of a worthy challenge, thus calling in a population with it's siren song. It's not personal, it's just statistics.

[+] lacker|9 years ago|reply
We are not remotely close to teaching everyone to code. Only about 5% of high schools teach AP computer science.

http://www.exploringcs.org/resources/cs-statistics

20 times as many students take the US History exam. And you probably have to be even better than top-1-percent to get a job as a historian.

I'm not saying that everyone should turn into a software engineer, I just think programming is a very relevant subject to the modern world, and a curriculum in which everyone took computer science classes would be superior to the status quo curriculum.

[+] SerLava|9 years ago|reply
I don't know that it can be reconciled, at least not without roughly defining a boundary between what "everyone coders" are supposed to do, versus what "real programmers" do.
[+] andrewfromx|9 years ago|reply
Learning to code is all about picking up a shovel and help your tribe accomplish something. What else are you going to do? Your tribe needs you to be 21st century literate. Learning the basics of shoveling is not hard. But if you refuse to even pick up a shovel there will be a problem. Not everyone that picks up a shovel will go on to become master coders. But the ones that don't even try? There are no jobs left for non-technical people. It's the shovel or... what?
[+] hboon|9 years ago|reply
It expands their horizon.

Think of it like children learning a musical instrument (or taking up ballet lessons). Not every one of them would turn out to be musicians.

Hopefully, they grow up to have an appreciation for programming and things/fields related to it, as well as develop an additional perspective. They don't need to become programmers, or even continue to program as a hobby.

This is why I believe programming should be taught in school, early, much like art and music.