Slashdot Mirror


The Programming Talent Myth

HughPickens.com writes: Jake Edge writes at LWN.net that there is a myth that programming skill is somehow distributed on a U-shaped curve and that people either "suck at programming" or that they "rock at programming", without leaving any room for those in between. Everyone is either an amazing programmer or "a worthless use of a seat" which doesn't make much sense. If you could measure programming ability somehow, its curve would look like the normal distribution. According to Edge this belief that programming ability fits into a bi-modal distribution is both "dangerous and a myth". "This myth sets up a world where you can only program if you are a rock star or a ninja. It is actively harmful in that is keeping people from learning programming, driving people out of programming, and it is preventing most of the growth and the improvement we'd like to see." If the only options are to be amazing or terrible, it leads people to believe they must be passionate about their career, that they must think about programming every waking moment of their life. If they take their eye off the ball even for a minute, they will slide right from amazing to terrible again leading people to be working crazy hours at work, to be constantly studying programming topics on their own time, and so on.

The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned. Programming isn't even one thing, though people talk about it as if it were; it requires all sorts of skills and coding is just a small part of that. Things like design, communication, writing, and debugging are needed. If we embrace this idea that "it's cool to be okay at these skills"—that being average is fine—it will make programming less intimidating for newcomers. If the bar for success is set "at okay, rather than exceptional", the bar seems a lot easier to clear for those new to the community. According to Edge the tech industry is rife with sexism, racism, homophobia, and discrimination and although it is a multi-faceted problem, the talent myth is part of the problem. "In our industry, we recast the talent myth as "the myth of the brilliant asshole", says Jacob Kaplan-Moss. "This is the "10x programmer" who is so good at his job that people have to work with him even though his behavior is toxic. In reality, given the normal distribution, it's likely that these people aren't actually exceptional, but even if you grant that they are, how many developers does a 10x programmer have to drive away before it is a wash?"

33 of 425 comments (clear)

  1. Depends how you evaluate the curve by xtal · · Score: 4, Insightful

    If you're looking for people who generate a profit from their time, the curve is almost certainly U-shaped based on my now not-so-light 30+ years in the trenches.

    Why is this any different than the population of other skilled professionals? You will see the same curve for musicians, for example; it's not necessarily about being able to eventually get the skill, but it's about doing so in a reasonable efficient amount of time proportional to the effort expended.

    In terms of actually learning, the guy probably has a point - eventually, I could learn to play the violin - but having tried, I'm never going to do it professionally.

    Ask me to develop OMAP firmware or drivers, otoh..

    --
    ..don't panic
    1. Re:Depends how you evaluate the curve by Sique · · Score: 5, Informative

      Actually, you don't have this U-curve with musicians. But many people just see the low end (the child of the neighbours screeching away on the violin when you want to take a nap), and the top end (the star violinist in the news). This creates the false impression of an U-curve. But there are hundreds and thousands of violinists you usually don't see, because they play in some university orchester in a small town you've never visited, or they play at marriages and 50th birthday parties, or they earn their money as bar violinists. And most of them are average.

      --
      .sig: Sique *sigh*
    2. Re:Depends how you evaluate the curve by CastrTroy · · Score: 5, Informative

      I agree that many people can play instruments if they work hard enough at it, but I don't think that you can draw a direct comparison between something like playing violin and programming.

      I think that the music equivalent of programming would be something like song writing or composing. With playing a song, your are really just following the instructions that somebody else gave you, like following a recipe in a cook book. Most people can learn to do this well. However, composing an original piece of music is more like making up a recipe of your own from scratch and having it turn out well. I know people who are very good at following recipes and make amazing food, but who are unable to figure out which spice to substitute for another when they are out of an ingredient. Or are unable to take a random bunch of stuff they have left over in their cupboard and turn it into something good.

      Relating this back to programming, I think that programming is quite hard to grasp for a lot of people. It's easy enough for them to grasp the basics. Tell them the exact specifications of small function, such as "write a function that removes all the vowels from a string", and they could probably do a pretty good job of it. However, give them a larger problem without a direct answer, like for instance, "write an application that allows 2 users to send messages to eachother" and they are completely lost. They have no idea how to plan out the application and will probably take 10 times longer to complete the project than a good programmer would.

      There's a huge problem, even with people already working in the field, who can't do something as complicated as Fizz Buzz. That should be a simple function, and yet a lot of people fail even this simple test.

      --

      Anthropic principle: We see the universe the way it is because if it were different we would not be here to see it.
    3. Re:Depends how you evaluate the curve by Minwee · · Score: 5, Funny

      Now, what's a hyperbola?

      It's something that people on the other end of that U-curve of math knowledge from you all know about.

    4. Re:Depends how you evaluate the curve by radtea · · Score: 4, Insightful

      If you're looking for people who generate a profit from their time, the curve is almost certainly U-shaped based on my now not-so-light 30+ years in the trenches.

      The skill distribution doesn't have to be U-shaped to produce a U-shaped distribution. All there has to be is a threshold of skill that must be reached to perform effectively: http://www.tjradcliffe.com/?p=...

      I liken this to a wall-climbing task in an obstacle course: some combination of height/weight/strength is necessary to get over the wall. If you measure them individually you'll see broad distributions with soft correlations with ability to get over the wall (because short/strong/light people will be able to do it and tall/strong/heavy people will be able to do it, but short/strong/heavy people won't and tall/weak/light people won't, etc). The wall-climbing task requires the right combination of a small number of such skills to be over some threshold. This trivially (as the simple model in the link shows) generates the observed U-shaped distribution in programming outcomes.

      People who claim that anyone can be taught to code well enough to pass a first year computer science course have the opportunity to make a very simple, compelling argument in favour of their thesis: tell us how to teach people to program! If you can do that--if you can get rid of the U-shaped mark distribution that has been documented in first year computing for decades despite all kinds of efforts to understand and deal with it, your argument will be made. Everything else is just hot air: ideological and unconvincing.

      There are certain things we know do not cause the bimodal mark distribution in first year computing:

      1) Bad teaching (because the issue has been researched and any number of caring, intelligent teachers have thrown themselves at it, and anyone's sucky first year computing prof does not disprove this)

      2) Language (because the bimodal mark distribution persists in all languages)

      3) Years of coding experience of incoming students (because if that were the case it would have been identified as the differentiator in the decades of research that have gone into this: someone with no coding experience can do as well as someone with years... if they are over some threshold of skill.)

      So while it's fun to watch equalitarian ideologues tub-thump this issue, they unfortunately bring nothing to the discussion but ideological blather. The U-shaped, bimodal, mark distribution in first-year computing is robust evidence of a threshold of some kind that people have to be over to code well. There may be other thresholds higher up the scale (I've seen estimates that 25% of coders will never get OO... god knows what the figure is for FP, which I'm still struggling with myself.) But the claim "It would be dreadful if everyone can't code!" is not an argument, it's an emotional outburst, and we need to focus on the data, not the way we wish the world is.

      Personally, I would love it if we could figure out how to teach coding better. I see journalists, economists, politicians, business-people, all sorts who are dependent on coders to help them out on the most rudimentary questions. If we could teach everyone to code the level of data-driven discourse would go through the roof. But I'm not counting on that happening any time soon.

      --
      Blasphemy is a human right. Blasphemophobia kills.
    5. Re:Depends how you evaluate the curve by narcc · · Score: 4, Funny

      I tuned the radio to the local top-40 station. It would appear that the worst musicians do indeed make money.

    6. Re:Depends how you evaluate the curve by AthanasiusKircher · · Score: 4, Insightful
      I agree with you that the analogy with music and programming is not exact. HOWEVER...

      I think that the music equivalent of programming would be something like song writing or composing. With playing a song, your are really just following the instructions that somebody else gave you, like following a recipe in a cook book.

      I think that's a bit of a misunderstanding of how one gets to the "top tier" of musicians, and for that matter, how one becomes a great chef.

      It what you say were true, no violinist would ever bother recording another version of some piece of music. In fact, nobody would ever bother even going to see a concert of a standard piece, since there would be nothing new -- it would just be the same "script" or "recipe," and most well-known pieces already have arguably a number of "perfect" recordings (at least in terms of "playing all the notes in the right rhythm and in tune" or whatever your standard is).

      No pop star would ever bother recording a cover of an older song. After all, a great singer already did it.

      But of course that isn't true. Composers don't generally write every single detail of interpretation in a score, just like there's a lot of "unwritten knowledge" in most recipes about how to actually produce good results. Beyond that, music is a process that happens in real-time. A skilled performer will be sensitive to everything from how their instrument sounds that day to the quality of acoustics in the playing environment to the fact that today they just happened to play the high note in that first theme a little stronger, and maybe they'll bring that note out again a little later because it creates a cool connection (which listeners may not consciously be aware of, but it suddenly brings out an emotion or creates a feeling of continuity which changes the piece).

      Performance is an artform at the highest levels. You may not be interested in such nuances, and that's fine. But people who spend hours and hours every day of their lives practicing instruments aren't just "learning notes." They are developing techniques, learning ways to produce better interpretations of music (beyond the basic blueprint in the score), gaining a facility to make real-time adjustments that will create a better experience for listeners at a live event, etc. Similarly, a skilled chef may follow the same instructions you do from a cookbook, but the result in quality may be vastly different. The execution often makes the difference between mediocre and truly great.

      I've had people tell me that a particular piece of music was worthless, even when played by top performers who can do flawless execution of the notes. I've then played them a recording of the exact same piece (with all the same notes, played from the same score) played by another performer -- and I've had people say they suddenly thought the piece was amazing... they heard things they never did before, or it had a kind of "energy" that made it enjoyable or whatever.

      Anyhow -- this isn't just about music. It's recognizing the value of performance in all walks of life. It's also about recognizing how great artists, whether they generate a product or whether they perform on a stage, are able to tap into dynamic and creative processes to produce effects that are much better than others. You may have been given the greatest set of Powerpoint slides in the world, and you may basically follow a script for a presentation -- but there can still be a huge difference between a completely engaging live presentation and a crappy one that "just follows the instructions that somebody else gave you."

      I know you probably didn't mean to denigrate performers, but I think we often tend to think of what's written down as the "primary stuff," no matter what line of work you're in. But there is a lot of knowledge and skill that's passed down orally and learned verbally or through tactile/kinesthetic engagement which makes the difference between following a rec

  2. The Curve on Academic Courses by Anonymous Coward · · Score: 5, Informative

    On academic programming courses - of which I've taught on many - the grade distribution is definitely bimodal and there is a clear gap between those who can and those who can't. Of course, there is variance among those who can but the difference is largely that those who can largely get better whilst those who can't never get even get it.

    1. Re:The Curve on Academic Courses by Bongo · · Score: 4, Interesting

      Maybe then there is something about how to really teach programming that everyone is missing. With drawing, people are either good at drawing or awful at it, regardless of classes, until teachers figure out what drawing really is and what the mind is doing when it is drawing. The people who have been seen to do well "in class" are just the ones who happen to have already got that mind skill. So I would wonder whether education has this figured out with programming, and that you'll see bimodal until it does.

    2. Re:The Curve on Academic Courses by jythie · · Score: 4, Insightful

      I think it is less a problem with how programming is taught, and more one with how programming is evaluated. Programmers, as a subculture, have serious issues separating stylistic from functional differences, with people looking for things that scan the way they write, with tests for readability and correctness really coming down to 'did the person do it the way I would?'.

    3. Re:The Curve on Academic Courses by pla · · Score: 4, Interesting

      I can appreciate the difference between "I don't like this code because it looks different than how I would have written it", and "I don't like this code because the author clearly has no clue how to accomplish the required task and only barely managed to cobble together enough crap to get the desired outputs on a handful of test cases".

      The former, I can work with (and sometimes learn from). The latter, I know that I will eventually need to waste more time "helping" the author repair it when it breaks, than I would have just doing it correctly the first time myself.

      The real problem here comes not from professional programmers, for the most part (though yes, truly awful "professionals" do exist). The problem comes from having most of the people "programming" in a modern office environment not actually programmers. You have accountants writing god-awful VBA, you have help deskers writing crappy web forms to automate part of their work, you have business analysts who know juuust enough SQL to get an answer, albeit a completely wrong answer, from the data.

      This has nothing to do with style, and everything to do with "programming" as an increasingly required bullet point on the average office worker's resume. Yeah, you know some VBA, good for you - Now learn when you can accomplish the same thing with normal Excel formulas, and quit turning every spreadsheet you touch into a smouldering heap of unmaintainable side effects.

  3. Measurements by phantomfive · · Score: 4, Insightful

    If you could measure programming ability somehow, its curve would look like the normal distribution.

    This guy doesn't know how to measure programming ability, but somehow manages to spend 3000 words writing about it.

    So he doesn't know......programmer ability might actually be a bi-modal distribution. If he had collected data to support his hypothesis, then that would have been an interesting article.

    --
    "First they came for the slanderers and i said nothing."
    1. Re:Measurements by Registered+Coward+v2 · · Score: 4, Insightful

      If you could measure programming ability somehow, its curve would look like the normal distribution.

      This guy doesn't know how to measure programming ability, but somehow manages to spend 3000 words writing about it.

      Defining programming ability is a real challenge and the definition probably varies based on what is being programmed. I had a teacher who defined it as being able to complete a task in as few lines of code as possible. OTOH, is it worth spending 2x the hours to get rid of 2 lines of code when a quicker solution works just fine? Maybe ability is being able to produce working code that meets the design specifications. Ability, IMHO, depends on the capability to complete the tasks at hand; and thus what constitutes ability will vary. I guess instead of being a 2D U curve or some such thing it is really a 3 D space with peaks and valleys.And thus I reveal my true ability: To change the parameters and drive a discussion to the end I want; which is why I am a consultant.

      --
      I'm a consultant - I convert gibberish into cash-flow.
    2. Re:Measurements by tompaulco · · Score: 4, Insightful

      Essentially there are two types of companies: * Startups (etc) who want the best programmers and are willing to pay. * Others who want to pay as little as possible to get the job done.

      In my experience the two types of companies are:
      * Startups (etc) who want the best programmers and want to pay as little as possible to get the job done.
      * Others who want to pay as little as possible to get the job done.

      --
      If you are not allowed to question your government then the government has answered your question.
  4. Not Mutually Exclusive by ohnocitizen · · Score: 4, Interesting

    The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned.

    Lost me here. Programming can definitely be a passion, and it can also be a talent. One might have a natural aptitude at programming. That doesn't mean one cannot learn the skill of programming, or that someone who finds it difficult in the beginning will not become an expert.

    In my career I've noticed that there are developers who are brilliant, and developers who struggle. The ones who struggle can succeed through mentoring and training.

    There are also developers who are kind and have great social skills, as well as those who do not. This is true of any employee at a company, including managers. Social skills can also be a passion, a talent, and a skill. That is also something that can be improved through mentoring and training.

    The primary reasons we don't see this happen for social skills are office politics and the false view that personalities and behaviors are fixed.

    If you are reading this and your programming skills or social skills are lacking - invest in yourself and work on them. It will pay off handsomely.

  5. You still need creativity. by ThePhilips · · Score: 4, Insightful

    The truth is that programming isn't a passion or a talent, says Edge, it is just a bunch of skills that can be learned.

    Why people forget the creative side of programming?

    The programming is indeed bunch of skills. But if you do not have right mind set - inquisitive and creative - your career in programming would be full of frustration.

    The only software where one doesn't really need any creativity - is already written and there is literally no work there.

    P.S. Of course there is the "flip side" to the creative side of the programming - "monkey" coding and testing. But for most of this work you do not even need to have any deep programming skills. Reading and comprehending documentation fully (an ability which is again easily forgotten by the sensational headline writers) is more useful and also much under-appreciated. And then there is also the writing of tech documentation...

    --
    All hope abandon ye who enter here.
  6. Hmmm ... by gstoddart · · Score: 4, Insightful

    Now, I don't have stats to back this up ... but many moons ago I was told by numerous profs that programming/CS had pretty much always been the bi-modal distribution, and one of them even showed me the graphs of previous years of first year programming courses to back it up.

    I have seen an academic paper discussing the bi-modal distribution.

    So, is he saying "among people who are programmers there isn't a bi-modal distribution", or is he saying "among people learning to program there isn't a bi-modal distribution"?

    Essentially he has no statistics to back his claims, and seems to be saying that "among people who are already programmers there's all kinds" -- which is FAR different from refuting the observation in academia that people learning programming are most definitely showing a bi-modal distribution.

    This sounds like he's talking from his 'feels' instead of from his 'facts'.

    --
    Lost at C:>. Found at C.
  7. Re:News? by BarbaraHudson · · Score: 4, Informative

    "there is a myth that programming skill is somehow distributed on a U-shaped curve"

    Never heard of this "myth." I always thought it was a slope - a lot of bad ones, a fair amount of decent ones, and some really good ones - and that it was in many ways dependent upon experience - the more experience you have, the better you get - or you go into something else after a few years.

    --
    "Transparent" is a shit show that trades on every stereotype going. A man in drag is NOT a transsexual.
  8. Programmer worth/productivity vary a lot. by CraigCruden · · Score: 4, Insightful

    When you work in a manufacturing plant making cars (for example), a productive worker if allowed to produce is about twice that of a poor producer.... When it comes to programmers/coders the quality and productivity of your upper end programmer can easily be 12 or more times as productive as your weak programmers. In worst case examples some programmers are actually a net negative when it comes to defects etc. The wages however tend to vary between 2 and 3 times your junior programmer (who could be a star or not himself). Some programmers are overpaid at the bottom pay scale, and some are underpaid at the top end. I have worked at some of the top companies, and some that are far far from it so I have been able to see both ends of it.

    Programming is a natural skill which can be enhanced greatly when you work in an environment that values talent and you have people that are better than you or at least near the top of their game if you are one of the gifted. I have seen University graduates that are at best average, and I have seen self taught programmers that are among the best......

    In short it is not a myth.

  9. Re:Rock Star = by eulernet · · Score: 4, Interesting

    While you are partly true (in France, we use the term "savoir faire" -expertise- opposed to "faire savoir" -publicize-), I think another factor is more meaningful: intrinsic interest.

    If you let me program something interesting, I'll be the best programmer in the world, following the strictest guidelines without complaining.

    But if you let me program some boring shit, I'll be as useless as any lazy guy.

    In your case, this can be expressed as: the rockstar does all the interesting work, and delegates all the menial tasks to other people.
    When you are a beginner, everything is interesting.
    As you grow older, a lot of things become boring.

  10. Re:No one wants this by SQLGuru · · Score: 4, Interesting

    I think anyone who is a 10x programmer (which I consider myself to be) should be interested in bringing as many people as possible up to their level. Who wants to be LeBron James playing pick-up basketball in the rec league when they could be LeBron James playing in the NBA championships? When you are so much further ahead of everyone around you, people can't fully appreciate how great you really are.....but if you are surrounded by stars and yet still shine far above all of them, you look that much more awesome. It's one of the reasons that I spend time with the noobs mentoring them.......also, if I mentor them, they'll be more apt to do things my way.

  11. Re:So where do you place the women folks? by Anonymous Coward · · Score: 5, Funny

    Fuck you. I'm the best. I write all my own libraries and never use anyone else's code.

  12. Re: News? by Anonymous Coward · · Score: 5, Insightful

    What annoys me is that despite the Mythical Man Month still being the only vaguely scientific analysis, and despite the fact that it demolished a bunch of received wisdom and only created ONE fact of its own - the existence of the 10x programmer - somehow because it was written a long time ago that means it "no longer applies".

    Of course your misrepresentation of the 10x rule isn't helping. The 10x rule is that the best developers are 10x as productive as the worst 10 developers. That's all it says. So you can replace them with 10 worse developers, that's the whole frickin' point of the 10x rule.

    If you wish to invent another rule, that some tasks are so hard that only some programmers can succeed at them, you can go gather your own evidence, but don't pretend it's "the 10x rule" because it isn't, and your rule did not come out of the only vaguely scientific analysis that's been done, and you shouldn't pretend that it did.

  13. Re:News? by bondsbw · · Score: 4, Insightful

    I love this tidbit:

    If you could measure programming ability somehow, its curve would look like the normal distribution.

    So, they're saying that they know the result of the measurement despite admitting that they don't even know how to perform the measurement. I see.

    --
    All my liberal friends think I'm a conservative, all my conservative friends think I'm a liberal.
  14. Re:News? by ceoyoyo · · Score: 4, Interesting

    Just read the rest of the comments. Slashdot is a hotbed of programmers who think they're god and everyone else sucks. They also argue that programming is some kind of talent you're born with.

    I teach programming mostly to people you wouldn't expect. Anybody can learn and, just like any other skill, their ability is mostly determined by the time and motivation they put in. Learning programming is even easier than a lot of academic subjects because there's instant, fairly unambiguous feedback.

  15. Re:News? by Shortguy881 · · Score: 5, Insightful

    A downward slope would just be non-normalized data. If there are a lot of bad ones, bad just becomes the mean. Programming talent, like most things, probably falls neatly into a bell curve.

    The U curve the article is referring to is a bimodel distribution, which is rare even in nature. It occurs for something like a disease that effects immune compromised people. Thus the age distribution of infected would be the very old and very young.

    --
    Brilliance without wisdom, power without conscience. Ours is a world of nuclear giants and ethical infants.
  16. Re:News? by Viol8 · · Score: 4, Interesting

    Most people can do most things averagely well given enough time and practice. However to be exceptional at something takes an innate talent. Mozart was born, not made. Ditto einstein. And the same applies to programmers (and no, I don't count myself as one these elite).

  17. Re:News? by Art+Challenor · · Score: 5, Interesting

    I would agree with this in the same way I would agree that anyone can learn to play a musical instrument. However, I still think it take an innate talent as well a (lot of) training to become an orchestral soloist.

    Not to overwork the metaphor, but there are also people who would work in menial jobs so that they could program at night if it weren't for the fact you can make a living programming - the same people who have jobs coding and write software, say for open source projects, on weekends.

    The real problem is weeding out the people who have no interest but still try to make a living writing code. I can only assume that those people write some of the websites out there, such as the ones that insist you enter credit card numbers without spaces or other punctuation. It's a 16 digit number, you can ignore anything that isn't a digit and feed it through the payment service to see if it's valid.

  18. Re:News? by jellomizer · · Score: 4, Interesting

    I think it is in terms of observations.
    The Rock Stars, the company will go out of its way to try to keep them
    The under performers, will just stay at the same place as they have a hard time getting a job elsewhere.
    So the organization has the long timers as the Rock Stars or the Under performers.
    The middle people will often stay there for a few years and move on. So they are in flux, and that makes it hard for our observations to see the middle ground, as the majority.

    --
    If something is so important that you feel the need to post it on the internet... It probably isn't that important.
  19. Re:News? by ShanghaiBill · · Score: 5, Insightful

    many users inexplicably believing that programming requires a "special mind", dividing people in to two groups: "can program" and "can never program".

    This is not "inexplicable". It is obvious to anyone who has taught programming to beginners, or any type of introductory abstract math. About a third of the population is simply incapable of abstract reasoning. If you think otherwise, I invite you to come to my house, and I will give you a free dinner while you explain "vectors" to my 15 year old daughter. Good luck with that.

  20. Re:News? by pr0fessor · · Score: 5, Interesting

    My wife the business woman {who does more math than I do on any given day} has bailed out and now I'm only one left to help my son with his freshman algebra because "Algebra!?!?!?"

    Anyway I found very quickly that the key to helping him understand algebra is to pry the cell phone from his hands and turn it off.

  21. Re:Come on. What tripe. by ShanghaiBill · · Score: 5, Informative

    Since you can't measure programming ability "somehow" or otherwise, you don't know what the curve would look like.

    Except that you CAN measure it. Just give each person a few programming tasks that should take ten minutes or so. I do that all the time. It is called a "job interview". My experience is that most applicants are incapable of programming even trivial solutions, or even getting the syntax right ... and these are people applying for programming jobs. A fair number can come up with reasonable solutions. Only a few come up with elegant out-of-the-box solutions that I was not expecting.

    The distribution is not "U" shaped, and it is not normal (bell shaped). It is high on the left, and slopes downward to the right.

  22. Re:News? by narcc · · Score: 4, Interesting

    I've taught plenty of intro programming classes. You're likely just a terrible instructor. I've not found a single student that was incapable.

    . About a third of the population is simply incapable of abstract reasoning.

    Citation needed. What backwater pay-to-publish journal did you find someone that denies that 1/3 of the population fails to reach the the formal operational stage of development?

    If you think otherwise, I invite you to come to my house, and I will give you a free dinner while you explain "vectors" to my 15 year old daughter. Good luck with that.

    I have a few teaching tricks I've picked-up for that. I have little doubt I could teach your otherwise normal child the basics of vectors in an evening. Well, at least well enough to get her through calc.

    Teaching, like programming, is a skill. If you want to better help her, do some reading on formative assessment.