Follow Slashdot blog updates by subscribing to our blog RSS feed


Forgot your password?
Education Programming

Why Johnny Can't Code and How That Can Change 527

snydeq writes "Fatal Exception's Neil McAllister discusses why schools are having a hard time engaging young minds in computer science — and what the Scalable Game Design program in Colorado is doing to try to change that. 'Repenning's program avoids this disheartening cycle in three important ways. First, it deemphasizes programming while still encouraging students to develop the logical thinking skills they'll need for more advanced studies. Second, it engages students by encouraging them to be creative and solve their own problems, rather than just repeating exercises dictated by their instructor. Third, and perhaps most important, students are rewarded for their efforts with an actual, concrete result they can relate to: a game.'"
This discussion has been archived. No new comments can be posted.

Why Johnny Can't Code and How That Can Change

Comments Filter:
  • Offshoring. (Score:4, Insightful)

    by sethstorm ( 512897 ) on Thursday June 23, 2011 @11:22AM (#36541870) Homepage

    Johnny can code, just that there's too much against Johhny to make him want to do so.

    Get rid of offshoring, and Johnny will want to code.

    • Re:Offshoring. (Score:5, Insightful)

      by Anonymous Coward on Thursday June 23, 2011 @11:28AM (#36541958)

      Middle school and high school students haven't had to fret about offshoring, I doubt that's a factor...

      I think the big difference is, people in the industry (even young people, shortly out of college) grew up with (at minimum, if not earlier systems) DOS based systems, Windows 3.1, IRC chat client's etc. "Back in the day" anyone interested in using their computer for something useful had to learn to do it themselves, and tinker, and become interested in expanding their ability to make their computer do what they want.

      Now, before they can walk, they have 3D games, music players, Facebook and all other forms of social media. I'm not saying it's all bad, but, where is the drive to get someone young interested in computing? To them, using a computer is playing a game, or reading Facebook. Not writing a script for mIRC to scrape text for keywords and have your bot auto respond to people, because that's what used to be fun.. 10+ years ago..

      • I'm not saying it's all bad, but, where is the drive to get someone young interested in computing? To them, using a computer is playing a game, or reading Facebook. Not writing a script for mIRC to scrape text for keywords and have your bot auto respond to people, because that's what used to be fun.. 10+ years ago..

        We need something like a cross between Logo and the cool, but relatively simple Lightbot [] flash game to get kids when they're young. Teach them the basics while still being fun.

      • So...

        - 3d games, music players, facebook, social media != fun.
        - Writing a script for mIRC to scrape text for keywords and have your bot auto respond to people == fun.

        You have a strange definition of fun, friend.

      • Re:Offshoring. (Score:5, Insightful)

        by Octorian ( 14086 ) on Thursday June 23, 2011 @12:05PM (#36542544) Homepage

        And the current trend in computing devices is one from where the normal consumer device could be tinkered with, to where the normal consumer device is forbidden from being tinkered with. Its only a matter of time before you'll need a special "development system" to do any tinkering at all. Of course there are many in our age group who may not see this as a problem, because *they* would get such a system, and *normal* people don't need one anyways.

        And you know how likely it is for a middle-schooler to actually have access to such a system? Especially when the parents aren't tinkerers themselves? Practically zip!

        Think about it.

        • Re:Offshoring. (Score:5, Insightful)

          by scruffy ( 29773 ) on Thursday June 23, 2011 @01:11PM (#36543598)

          And the current trend in computing devices is one from where the normal consumer device could be tinkered with, to where the normal consumer device is forbidden from being tinkered with.

          There are a couple other trends that make it more difficult for learning computer programming.

          Even if it's not forbidden, it's very difficult to tinker with any number of devices. When I was a kid, it was useful to spend some effort to take a device apart, figure out what was wrong, replace or juryrig some part, and put it back together again (sounds like programming, doesn't it). Nowadays, you need special tools and even if you get it apart, there's not much that you can tinker with.

          Another trend is that math in schools depends more and more on using calculators rather than manually applying an algorithm to add, multiply, whatever. This might be ok for math, but students lose out on problem solving skills.

          Overall, there are a number of factors that result in kids not having to learn problem solving skills that come in handy for computer programming. You could include following recipes in a cookbook, making up games and arguing about the rules, sewing, fishing, wandering around by yourself and finding your way back. Kids hardly do any stuff that involves real-world planning, execution, and debugging. No, a video game does not suffice for this (at least not so far).

          The result is that college instructors (such as yours truly at an average college) end up with students that are essentially clueless about putting one step after another. Because the students have not been exposed to this, they are crippled when it comes to doing programming for the first time, and only a lucky few make it through the first few courses.

      • by jesseck ( 942036 )

        Middle school and high school students haven't had to fret about offshoring, I doubt that's a factor...

        It's still a factor, high school students are going to be concerned about what college to attend and their future employment. Middle school students, not so much, but at that point in their lives the children's parents will influence what happens. And parents will see offshoring as a threat.

        Personally, I encourage my 3rd grader to learn programming- things like logic and operators are fun. Especially when we can sit down and work through a problem, all skills that easily translate into a scripting langua

    • by Daetrin ( 576516 )

      Get rid of offshoring, and Johnny will want to code.

      I'm pretty sure "Johnny" isn't considering international trade relations and the resulting corporate offshoring when deciding what to do with his free time and/or study time. I certainly didn't give any kind of thought to that thing when i was a kid, and i expect the usual answers of "what do you want to be when you grow up" are based far more on what that individual finds cool than on a coldhearted analysis of future earning potential. By the time they reach middle school i expect most people are barely s

      • He is, just that he isn't paying attention in the way you might think. While we might see trade relations, he might see it in his parents losing a college-paying job from it, a relative experiencing the same, or perhaps the news.

        He is brighter than you might think.

      • It depends on his parents. If his dad's a software engineer, he probably told little Johnny to find something else to do for work because his job was sent to India.

    • You want Johnny to want to code, give him every advantage to get him wanting to code. He is paying attention to the long term when he's deciding where/for what he wants to go to college.

    • I don't know what things are like in your market, but around here there's a lot more programmer jobs than qualified people to fill them.

      Offshoring isn't exactly on my top 10 list of worries. 5-6 years ago there was (locally) a big rush to do a lot of it with development work, but a few projects later most of the companies have figured out that getting offshoring to work is a lot harder and more expensive than it first appears, and so that work is coming back.

    • Re:Offshoring. (Score:5, Insightful)

      by Kagetsuki ( 1620613 ) on Thursday June 23, 2011 @11:41AM (#36542128)

      Bullshit. Jina can code just as well as Johnny if not better, and he doesn't have the elitist "I'm always right because I studied design theory for four years" attitude. That's the problem.

      I had played around with coding myself, but really learned first at Stanford. The thing is after returning to Japan I went to a specialty school that didn't even have an entrance exam - anyone can attend, and had to re-learn everything during the first year. I thought this would be worthless, but I quickly found out I had been taught how to code very poorly. You could easily draw parallels from programming education to math education in America vs math education in Japan or India.

      I'm sure I'll get marked flamebait for all of this, but from my personal experiences both learning to code and working with other coders from America, Japan, and India I can tell you I'd probably never choose to partner with an American coder over an Indian or Japanese. Drop the attitudes and learn from those who in reality are doing it better than you.

      • by MBCook ( 132727 )

        ...but I quickly found out I had been taught how to code very poorly.

        Can you explain what you were taught incorrectly (or just weren't taught)? I'm curious what the issues were.

        • I'm interested too. (Score:2, Informative)

          by Anonymous Coward

          Not good engough to say X is bad and then don't bother to explain what is wrong. How are things going to get better otherwise?

      • Except that Jina only is coding because of anti-US fraud that works in her favor.

        Sounds like you don't want a US citizen until they've been beat down to a level of world subservience. Another point to add - you weren't paying attention that we're not asking about Jina, just Johnny.

        We need less of you, less of Jina, and to give every advantage to Johnny.

      • I'm going to call you out for racism. Generalizing something like the coding ability of the millions of coders in either Japan, India, or the US is ludicrous. Some people code well, some people don't. It has a little bit to do with education but mostly with passion and dedication. That can't really be taught and can develop in people at different times in their life. So I think as long as the education is somewhat adequate, the blame and glory of the results rests solely with the individual.

    • Protectionism never works. It's a global market and you can't go back now. If you want Johnny to not lose his job to Jhoni than he better learn some value added skills.

      • by mbkennel ( 97636 )

        You mean like the large across-the-board tariff that China has employed via currency manipulation for the last 25 years?

        Yes, it has clearly destroyed their industrial base and damaged their standard of living.

    • Re: (Score:2, Insightful)

      by tthomas48 ( 180798 )

      Yeah, that's why software developers are some of the highest paid workers in the US. If you're having trouble finding a programming job you are probably piss poor at it and should look for another line of work. There are hundreds of open jobs right now in my city.

      • Re: (Score:3, Insightful)

        by scottbomb ( 1290580 )

        Or maybe you're just getting started and NO ONE will even look at you unless you've got 3-5 years of professional experience.

    • Why should everyone in the US be a computer programmer? It makes no sense. Who cares? I want automechanics and skilled artisans, not programmers; we have enough programmers, and the steady spiral downward might be because they're rolling out of college and taking up beggary due to the lack of programming jobs.

      Stupid single-minded one-dimensional gits trying to "fix" education...

    • by betterunixthanunix ( 980855 ) on Thursday June 23, 2011 @12:04PM (#36542532)

      Get rid of offshoring, and Johnny will want to code.

      You make programming sound like some kind of a chore, a typical day job that someone is only going to do because they are paid to do it. I am sure that such programmers exist, but the best programmers out there are the ones for whom programming is as natural as breathing, who would be hacking even if they were unemployed, and who are enjoy the work that they do. This is not terribly different than the situation with mathematicians -- the best mathematicians are the ones who love math.

      America has a lot of trouble teaching math to middle school and high school students, at least by comparison with other countries. It should come as no surprise that we have trouble teaching computer programming, which is very close to mathematics. It also doesn't help that we have a mass media that portrays computer programmers as these nerdy anti-social types (yes they sometimes become rich, but we glamorize people who were born into wealth).

  • by Anonymous Coward on Thursday June 23, 2011 @11:24AM (#36541888)

    no amount of coddling will make you a good programmer.

    • Ahh; but what makes a good programmer and a programmer good?
      • by Anrego ( 830717 ) * on Thursday June 23, 2011 @11:38AM (#36542090)

        A disturbing interest in the kind of things that put off the kids described in this article

        There are exceptions, but most of the programmers I know (and myself), when first exposed to computers, immediately started wondering how they worked and how we could "make programs". If that curiosity and interest isn't automatic and you have to be "tricked" into it... in my opinion you'll probably be a bad programmer.

        • by h4rr4r ( 612664 )

          You can say that about anything and it would be just as true. If you are not interested in doing it, you will not do it very well. These kids should find skills they won't mind doing for a third of their adult lives, not something they have to be tricked into.

  • Johnny needs a solid foundation in Programming Logic and avoiding pitfalls of "drop-through logic" before Johnny writes code for production.

    • Johnny probably needs motivation and opportunity to learn how to code before he worries about attaining production-quality habits. Trying to ingrain correctness from day one is why no one studies Latin and Ancient Greek any more. (And can we, as a society, really afford FORTRAN programs becoming mysterious cultural artefacts?)
      • by ackthpt ( 218170 )

        Johnny probably needs motivation and opportunity to learn how to code before he worries about attaining production-quality habits. Trying to ingrain correctness from day one is why no one studies Latin and Ancient Greek any more. (And can we, as a society, really afford FORTRAN programs becoming mysterious cultural artefacts?)

        My first motivation was in seeing what I could get this box to do. After that it was smartening up, learning how to be a tidy coder. Microsoft's legions of bugs and security holes tells you how emphasis is placed upon meeting delivery deadlines over quality.

        • Completely agree. But we must emphasise that learning how to do something wisely follows learning how to do it; one model might be learning how to program willy-nilly in high school and then properly in college/university. Demanding rigour in the interests of a child will either kill the interests or kill the child.
      • by wed128 ( 722152 )

        FORTRAN programs will never become artifacts as long as two conditions are met:

        1. FORTRAN manuals still exist
        2. The state of computer science education is such that picking up a new language is a trivial task.

        I have never used FORTRAN in my life; I am absolutely confident i could learn it quickly if i had to.

        • Well... literary epics from two millennia ago are considered artefactual. Just because the manuals still exist doesn't mean the idioms and style of the language won't become so archaic that reading it is a challenge. If the programmers in twenty years are raised on a diet of Haskell, Python and Javascript, this isn't so infeasible. Even the new C++ includes lambda functions—that's going to make reading traditional imperative code very alien. Assembly is already perceived as magic by many, and yet once
  • by tomhudson ( 43916 ) <barbara.hudson@[ ... m ['bar' in gap]> on Thursday June 23, 2011 @11:26AM (#36541920) Journal

    ... it's designed to attract the types of students who are disinterested in, or don't have the mind-set for, "real programming".

    That worked out real well for all those colleges that churn out useless web monkeys - but not so well for the unemployable students going around with their "Certificate as a Webmaster's Assistant".

    What next - "Programming by Powerpoint"? Oh wait ...

    • by Rogerborg ( 306625 ) on Thursday June 23, 2011 @12:03PM (#36542480) Homepage

      Not necessarily. Johnny could be a diamond in the rough, but thinks that programming is hard and pointless. By giving him a rewarding goal that shows results quickly, he might discover that he actually has a talent and a passion. It worked for me - I only learned to program so that I could hack Netrek, and now I do some fairly deep fu.

      Remember, we're competing for Johnny's heart and mind. Would we rather that he became a lawyer, or an accountant?

    • If Johnny is young enough, I think it works. For instance, I didn't realize it until many, many years later, but the first programming I learned wasn't Java or C++ in high school, and it certainly wasn't one of the dozens of others I saw in college, but was rather Logo [] in elementary school. I recognize now that Logo actually was a big part of what got me interested in computers in the first place. I used to rush through the keyboarding exercises and other work we had in computer labs in 4th and 5th grade so

  • It's hard for young students to see the purpose of these kinds of exercises, particularly when there is already plenty of software available to accomplish the same tasks, with no programming required.

    The big problem with doing large "real" projects while still learning is that eventually you hit a point where you realize your initial design was bad. On a small "make work" project you can start over .. on a large project you just kind of have to go with it. Obviously this happens in real life to seasoned pros as well... but while you are still learning the fundementals it's apt to happen way more often and would seem to hold less educational value.

    Somewhat offtopic, something that isn't done enough when

  • In my experience, it's nothing like that. I think you will have a relatively constant percentage of the population with the ability to think in the way that allows programming to come as a natural skill. All the enticements in the world, all the attempts to make it exciting... they may find a few more of these minds and make them aware of what they can do. They'll probably also entice a lot of minds that aren't really capable of showing the same level of skill - the same types that show up en masse for
  • How much game programming can you do in an hour's lesson? Even Scratch, used at our local school, takes an age to get the loop timings and event handling right. My little'un soon got bored of that.

    How long would it take one of you guys to program Tic-Tac-Toe in a low level scripting language? What about with an AI?

    The kids spend 38 weeks a year at school, maybe doing an hour ICT a week. Knock Tic-Tac-Toe out in 38 hours? I think not.

    The article also spoke about getting Johnny interested... My little'un camp
    • The kids spend 38 weeks a year at school, maybe doing an hour ICT a week. Knock Tic-Tac-Toe out in 38 hours? I think not.

      Depends on at what age we're talking about, when I was in HS we did Tic-Tac-Toe with a primitive "AI" that essentially tried to play a perfect game with a "fudge factor" that determined the probability of it making a mistake. This was the first project we had for the first programming course and took nowhere near 38 hours.

      Of course, for most younger kids (say, grades 1 through 7 or so) who aren't interested in programming in the first place it's going to be hard to get anything done in 38 hours, they won't

    • by h4rr4r ( 612664 )

      Those games are too hard for them to make. Punch the monkey with pygame is a better example. If that takes 38 hours little Timmy needs to be steered towards jobs more suited to his skillset, like ditch digging or collecting welfare checks.

  • by jaymz2k4 ( 790806 ) <> on Thursday June 23, 2011 @11:35AM (#36542038) Homepage
    I can't help but feel lucky to have met computers back in the 80's and to have spent my time using something "simple" like the C64 with BASIC and then moving up to PC's learning various languages and growing my interest more and more to then eventually be sat a linux workstation coding in Python for a living. Many of the ids I know through family no longer look at computers with the same sparkly or excitement of those early days.

    I feel incredibly lucky to have got in at a point where I could experience relatively low spec & power computing and see it progress to the state it is today. I get the feeling that a lot of people getting into computers these days as kids don't get that sort of exposure and so don't get so bonded to learning about them. There was a good chance you could understand the schematic of a C64. Look at a die of a modern i7 and it's more modern art than anything that's going to make sense to a kid.

    I definitely feel that in some way we lucked out in getting to experience computing the past 30 years.
    • by jesseck ( 942036 )

      I definitely feel that in some way we lucked out in getting to experience computing the past 30 years.

      I agree... growing up we had to learn BASIC and the command prompt to accomplish anything. It became second nature to write batch files to accomplish tasks, and to imagine the directory structure. Today, when I'm using a command prompt on SSH, my co-workers wonder how i keep track of where I'm at- without the GUI, they would be lost.

    • my first program was when someone showed me you could type
      10 print"butt"
      20 goto 10

      Type run and the teacher flips out because she doesn't know about the Break key. yes, she eventually just pulled the plug on the computer. next we learned the PLAY command, and the room was filled with ambulance wails. Some of us may have been temporarily banned from the computer lab.

      But I learned how a program works. I made the computer do something using a total of 24 characters.

      Low bar to entry, intuitive method for an ab

  • Good grief - how far have we come?

    "The middle school years are critical for students in reaching conclusions regarding their own skills and aptitudes,"

    Yes educators should make things understandable, yes we should make learning fun but there is a whole big nasty world of hungry people who would kill for the chance to "reach conclusions about their own skills...".

    Where are the parents or schools telling students that engineering, maths and science can make the difference between having a job and not? Beca

  • by clinko ( 232501 ) on Thursday June 23, 2011 @11:37AM (#36542074) Journal

    I Think the problem is that "Johnny" doesn't like programming. Why fix that?

    The worst employee is a specialist that hates his specialty. He's only going to fight his way out of his job and defer to others. Why do you think there's usually more IT managers than Developers? :)

    • You're right about Johnny not liking programming. That's what TFA is pointing out. Why fix it? Because you're never going to fill the gap between the low number of able programmers and the need for them if you don't entice kids into the field. How can you expect to engage middle and high-schoolers in programming if you stick to theory. Let them figure out they hate it in college, that's what it's there for.

      Young kids probably picture Milton and his stapler when they think of computer science. How can we pos

  • Been writing web applications for 15 years. Through 5 startups. Been outsourced twice, one time with the entire US team the week after closing an important B-round that we all worked really hard to land.

    I have two kids. I've never suggested work in a technology field as a career choice for my own children. I'm glad they don't teach coding in schools, it's not good work. Coders are paid sh*t and used like toilet paper. All of our daily creativity and occasional brilliance ends up making the MBA pukes rich an

    • Get rid of the means for business to send work offshore or to make work less secure, and that can change for the better.

      • by theCat ( 36907 )

        Oracle, Google, Apple, Yahoo, HP and all the rest have an army of lobbyists in Washington DC specifically to prevent anything of the kind ever happening until the heat death of the universe.

        Nope. My kids will do something else. Farmer or teacher or architect or chef or just about anything else, with my blessing. Of course that means Oracle, Google, Apple, Yahoo, HP and all the rest will become dependent on an external labor pool, with all the political and socioeconomic issues so implied, and when the chees

    • by Rob Kaper ( 5960 )

      Coders are paid sh*t and used like toilet paper.

      Maybe where you live. Here in the Netherlands, that's simply not true. Good coders are appreciated, well-paid and treated as humans. But the latter part might not be related to the profession and more with a difference in work ethic between the US and Europe.

  • Teaching (Score:5, Insightful)

    by Aladrin ( 926209 ) on Thursday June 23, 2011 @11:42AM (#36542148)

    It has been my experience that walking a student through making something simple will widen their eyes considerably. This usually means something like an easy game where they can visually see the results of their work. Games that can be modified easily are even better, because they -will- play with the code and try to improve it for their own tastes.

    On the other hand, teaching them to write a linked list is mind-numbingly boring for someone who can't imagine why they'd want such a thing.

    Getting people interested in programmer is mostly about giving them the right exposure at the start.

    This course sounds like it at least is headed the right direction.

    • EA once made a game called 'tank wars', where the idea was that you would program an AI for a tank given a fairly simple API they provided, and then you would put different AIs up against each other and see who wins. Something like that could be great for initial programming - there is a competitive aspect and the overhead to get something simple going is pretty low. The copy I had was buggy and didn't really work, but I think the idea is a sound one for introducing programming.
  • Always looking for things to motivate my young aspiring computer-game-designer offspring. When I was their age (8) I wasn't really exposed to computers all that much, but did already have exposure to Logo []. Any good sites online that might provide some experience similar to that? The only one I know of is Lightbot [].

    The wife and kids are heavily into Minecraft at the moment, and I'm hoping to get them into building more redstone circuits []. (unfortunately, minecrafwiki's realstone circuits seem to be down at

    • by h4rr4r ( 612664 )

      Pygame is nice and easy to use. If you want it to be a game not programming Little Big Planet is something you might want to look into.

  • Whether you love or hate Ruby, you should look at how the Ruby community has sold itself. It's a language that's designed (according to evangelists) to be fun. Frameworks like Rails are about making the work fun. Again, I'm quoting pitches... but.... But it's interesting what kind of a community that sales pitch draws in.


    In other words, start off students with easy wins and clear syntax (like Ruby). Don't make them spend hours debugging pointer bugs (C/C++). There's plenty of time for that later. Firs

  • Game programming is not like most "real" programming - it's designed differently, implemented differently, and fundamentally just differs. Game programming is full of coding in the exceptional cases - run doMainBattleLoop(), unless you're in a boss battle and in a round less than 4, when you should run doBossBanterBattleLoop(), unless you're in a battle with Boss X and it isn't the final one, when you should add a branch to the end to call doBossRunawayScene() instead of doBattleEndScene(), but if it's the
  • When I learnt how to program I couldn't see any other use for it except to make games. And soon as I had the opportunity I went for it. Now of course I am a little more knowledgeable. I have a few friends who are working for some huge banks doing java code and earning buckets of monies, another few in web development and a few others scattered here and there but im pretty happy to be a Game programmer. Its not the best way to learn but it might be the best way to get one interested in programming.

    On topic,

  • It is my opinion that the dot com bubble bursting, offshoring, and the equation of salary vs hours worked + stress is why people do not pursue programming as a profession.

    So it seems it is not that people can't code, it is that there is no motivation to do it as a career.

    Hobbyist programmers, or those that do it 'on the side' to their regular career (I am assuming many that participate in open source or linux-based software) will be able to code, but that they will not be counted as a full-time coder.

  • When I was back in grade-school and high-school, I was interested in coding. (Heck, back then, you pretty much HAD to be, since that came as part of the deal when you bought a new computer. You learned BASIC and started keying in programs from listings published in books of "50 great computer programs for your Timex Sinclair 1000" or whatever you were using, and kind of went from there. The owners' manual packaged with whatever computer you bought included a complete programming reference for it. It was

  • by A Friendly Troll ( 1017492 ) on Thursday June 23, 2011 @01:14PM (#36543646)

    Well, at least it's like that where I live.

    See, ages ago, we had kids being taught LOGO and BASIC. That worked splendidly. Write some stuff, see a turtle draw, or make an infinite '10 print "hello": 20 goto 10' loop.

    Then came along Pascal, usually in high school, although it wasn't unheard of to see it in the final levels of elementary school. It was a bit more of a nuisance, with all the begins and ends, and the semicolons too, but it was still somewhat manageable for the kids.

    But then someone had a serious brainfart and decided that kids be "taught" C and even C++. Suddenly there were all these strange symbols ("teacher, why is 'and' called '&&' here and why and how is '&&' different than '&'?") and stdio.h includes and god damn pointers, which extremely few children managed to grasp because they had no idea how memory and processors work. No, they were supposed to learn what a keyboard is, then how to translate a number into binary/hexadecimal and back, and then they were immediately thrown into curly braces and pointer hell.

    I have no idea what it's like in the USA, but over here it fucked up everything. If you make it hard for the kids and drown them in hardcore idiocy to the point of them being sickened by IT classes, then you can't expect that they learn how to code.

    Me? I started with BASIC on the ZX Spectrum in the early eighties. Had the Speccy had something more difficult, I'd have been a librarian right now.

Order and simplification are the first steps toward mastery of a subject -- the actual enemy is the unknown. -- Thomas Mann