Ask HN: How to reconcile “teach everyone to code” and “only hire the top 1%”?
75 points| ern | 9 years ago
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?
[+] [-] mancerayder|9 years ago|reply
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
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
[+] [-] santaclaus|9 years ago|reply
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
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
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
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?
[+] [-] 4h53n|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]
[+] [-] reustle|9 years ago|reply
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
[+] [-] corysama|9 years ago|reply
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
[+] [-] cperciva|9 years ago|reply
[+] [-] unknown|9 years ago|reply
[deleted]
[+] [-] lucb1e|9 years ago|reply
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
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
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
Also teaching programming is more about technical skills and literacy than making literally everyone employed as a programmer.
[+] [-] SFJulie|9 years ago|reply
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
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
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
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
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
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
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
[+] [-] andrewfromx|9 years ago|reply
[+] [-] hboon|9 years ago|reply
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.