6 ms·
First, I doubt that programming skill exactly follows a bell curve. Most people can't begin to program; conversely, most people can begin to run. There's a barr
by learnstats2 11y ago
First, I doubt that programming skill exactly follows a bell curve. Most people can't begin to program; conversely, most people can begin to run. There's a barrier to entry in programming that gives the distribution much positive skew.
Second, the criticised idea that "everyone is either an amazing programmer or a worthless use of a seat" is probably true in capitalism. Either you have skill enough for an organisation to employ you profitably, or you don't.
That difference might be a hairline's breadth. But it acts as a significant tipping point. It doesn't necessarily indicate anything about the true distribution of programming skill. It's just a cut-off point.
"Annual income twenty pounds, annual expenditure nineteen pounds nineteen and six, result happiness. Annual income twenty pounds, annual expenditure twenty pounds nought and six, result misery."
- jasonwocky 11y ago> Most people can't begin to program; conversely, most people can begin to run. This is based on what? You really think that most people can't be taught the basics of "Hello World", or a function that multiplies two numbers? Plenty of people write Excel formulas when faced with the need to. That's "beginning to program".
- learnstats2 11y agoYes, I agree with you, Excel formulas are absolutely programming. And yes, I agree, these are skills that can be taught. But not that many people write Excel formulas. Up to 50% of people in the West don't have basic numeracy skills enough to do what you describe.
- kazinator 11y agoI would say that you're beginning to program when you write something that iterates or recurses. With a clear terminating condition: not merely spreadsheet formulas that contain a cyclic reference whereby you iterate until some numbers appear to stabilize. In my mind, the recognition of repeated structures in a spreadsheet count as beginning of programming. This sort of thing: "if I create this pattern of cell references and then repeat it across the grid arbitrarily far, such and such a result/behavior will emerge". It is like recursion unfolded, and on the verge of being codified compactly.
- benedikt 11y agoNot only that, but Excel is the worlds most popular functional programming language.
- mauricemir 11y agoAnd back in the day in the UK our CSE class at 13/14 had no difficulty learning programming and that was an assembly language with only Add sub and some jump instructions For context the UK used to have CSE and O Level Exams at 16 the CSE ones where for the vocational track kids who would leave school at 16.
- tedmiston 11y agoIn the context of 10x, I think we are talking about programmers that can begin to program _professionally_ vs. bike riding as a hobby.
- jghn 11y agoI have as much data to back up my point as you do yours but IMO for basic CRUD app type stuff (ie a large bulk of programming jobs) most people could be trained up to be relatively competent. Note that these are jobs I wouldn't want but they are legion and they're not intellectually challenging.
- marktangotango 11y agoOnce upon a time, I inherited some code from a colleague who left for another gig. This particular fellow was well seasoned, had been in the industry for 20 years. The purpose of this particular code was something similar to parsing json (not really, but close). This particular json always came from the same source and almost always had the same format. My prdecessor, not having an understanding of recursive descent parsing, wrote the parsing impl by counting parentheses at the ends of lines, which worked for the fixed input we typically recieved. As time went on, we started to receive the same input from other sources, who of course had different layouts for the their json. Of course the code broke horribly. Myself being well practiced in recursive descent parsing, rewrote his parsing code in a few days, the original had taken him many months. I was perceived to be a miracle worker, because my implementation fixed the problems, and worked mostly error free from then on. Was my predecessor a mediocre developer? Not at all, he was actually quiet accomplished in his area of interest, he simply wasn't proficient with this one area (parsing). I'd like to see these discussions of 'rock stars' and '10x' evolve to recognize that perceived talent is really just experience in certain areas, wether that experience comes from personal interest, or job function is immaterial.
- kabouseng 11y agoI understand the point you are making, but would like to add one more discussion point (which detracts a bit from your point but I think is still valid). Sometimes a developer implements the bare necessary required solution to the problem, i.e. not an over engineered expensive solution. We'll then state that his solution was poorly engineered and he wasn't a good developer, but it's not fair to look at his solution in hindsight and judge it by the amount of scope creep it could handle(which it obviously had to handle in hindsight). Your succesor might write here in some time that your solution, while being appropriate for json, didn't use x technique and so couldn't handle XML input, and had you only known about x... (This isn't critique of your comment, which I found insightful and positive, just one more factor to consider)
- peterfirefly 11y ago> (This isn't critique of your comment, which I found insightful and positive, just one more factor to consider) It /is/ actually a critique. It isn't negative, but it is a critique.
- robinrob 11y agoThe bell curve is not a curve of programming ability of ALL people - for any given skill that would obviously be massively skewed to zero skill, since most people wouldn't be participating. The curve is for people who HAVE programmed. It is irrelevant what the barrier is - the curve is only describing people who have crossed that barrier and written some code. You wouldn't include dogs in a bell curve of human height - the thing being measured first has to be a member of the group that is being described.
- thomasahle 11y agoWhat about this model: Say programming skill is more or less proportional to the time spent programming. Further say that at any moment a person has a certain probability of leaving the industry. In that case the skill curve over the population should be a geometric, hockeystick like curve. It wouldn't make sense that the majority of people had experience in the 5-8 years interval say.
- peterfirefly 11y agoIt is still not likely to be bell shaped. Of course there is a /distribution/ and of course it is not shaped like a vertical line -- but it is very unlikely to be a normal distribution.
- CPLX 11y agoWhy? In general one would assume that a distribution of this type would be normal absent evidence to the contrary right? What is that evidence to the contrary?
- learnstats2 11y agoIf we take robinrob's point, and measure only "people who have programmed", then I would still expect a very positively skewed distribution. There are really a lot of people in the "I tried it and didn't like it" category. For almost any boundary you choose, a majority of people will sneak in just over that boundary, leaving a long one-sided tail. This skewed distribution would appear even if you cut a Normal distribution. A Normal distribution occurs when everyone is expected to be at the same average level but could move up and down equally due to many random factors. When learning skills, people generally start at a 0 level and generally move up. That won't be Normal. If you take a cohort of programmers with exactly the same experiences, that could plausibly follow a Normal distribution of skill. If you take e.g. all professional programmers, that won't.
- intortus 11y ago> Most people can't begin to program Where did you pull this assertion from? There are a wide range of skills and behaviors that go into programming, and I see those attributes in people from all walks of life. Programmers are just the ones who've sat in front of a computer long enough to apply them in the same context.