Programmers insist: “Everybody” does not need to learn to code

August 26, 2013 at 1:29 am 12 comments

I answered the criticism leveled below previously — it really is the case that many people who aren’t professional programmers are going to need to learn to program as part of their other-than-software jobs.  Why are programmers pushing back against people learning to code?  (And there seems to be a lot of pushback going on, as this mashup suggests.) Is it a sense of “What I do is important, and if everyone can do it, it lessens the importance”?  I don’t really think that they’re afraid for their jobs — it does take a lot of hours and effort to learn to code well.

The argument that it won’t “stick” (as suggested below) doesn’t work for me.  Just because we don’t know now how to teach computer science to everyone doesn’t mean that we can’t learn how to teach computer science to everyone who needs it.  Our lack of ability is not the same as the lack of need.  We don’t teach everyone to read well and understand mathematics yet — does that mean we shouldn’t try?

But if you aren’t dreaming of becoming a programmer—and therefore planning to embark on a lengthy course of study, whether self-directed or formal—I can’t endorse learning to code. Yes, it is a creative endeavor. At its base, it’s problem-solving, and the rewards for exposing holes in your thinking and discovering elegant solutions are awesome. I really think that some programs are beautiful. But I don’t think that most who “learn to code” will end up learning anything that sticks.  One common argument for promoting programming to novices is that technology’s unprecedented pervasiveness in our lives demands that we understand the nitty-gritty details. But the fact is that no matter how pervasive a technology is, we don’t need to understand how it works—our society divides its labor so that everyone can use things without going to the trouble of making them. To justify everyone learning about programming, you would need to show that most jobs will actually require this. But instead all I see are vague predictions that the growth in “IT jobs” means that we must either “program or be programmed” and that a few rich companies want more programmers—which is not terribly persuasive.

via “Everybody” does not need to learn to code. – Slate Magazine.

I saw the below exchange on Twitter, and thought it captured the argument well:

Twitter___caitsydney___What_the_world_needs_is_people_...

Entry filed under: Uncategorized. Tags: , , , .

Why we need schools of education for a stable future for computing ed The BlueJ Blackbox now available: large scale programming education data collection

12 Comments Add your own

  • 1. Kathi Fisler  |  August 26, 2013 at 5:50 am

    This dovetails nicely with a NYTimes editorial (http://opinionator.blogs.nytimes.com/2013/08/24/how-technology-wrecks-the-middle-class/?_r=0) from two days ago on the impact of technological progress on traditional middle-class jobs. It calls for jobs that blend using automated information with human skills at adaptation and communication (listing teachers and learning tutors in this group).

    The Slate piece reflects the conflicting arguments for “everyone learn to code”: we hear justifications as varied as “essential future job skill”, “helps people understand these ubiquitous devices”, “much engage more people in working with computers”, “encourages creativity and problem solving”, etc. With no single argument, it’s hard to have a single response to this question.

    From an educator’s perspective, we would design learning materials differently around each of these arguments/goals. The “everyone learn to code” model (and current online frenzy) conflates these around a singular vision of picking up some scripting skills. The educational nuances are significant here, and getting lost in the surface arguments about what we mean by each of “everyone”, “learn”, and “code”.

    Kathi

    Reply
    • 2. Mark Guzdial  |  August 26, 2013 at 7:53 pm

      Really interesting tie-in, Kathi! Thanks for the link.

      Carl, I really like that analogy. I do see the issue that a “bad” piece of music (written by an amateur) typically does less damage than a “bad” piece of software might. But the learning issues do seem the same.

      Reply
  • 3. Carl Alphonce  |  August 26, 2013 at 7:27 am

    Everybody does not need to play music, but everyone should have the opportunity to do so. I’ll never be a professional musician, but I am enjoying taking piano lessons later in life. Would a professional musician ever tell me to not try to learn? The more I learn first hand what it takes to be a professional musician the more I appreciate what they do. Doesn’t the same reasoning apply to programming?

    Reply
  • 4. Alfred Thompson  |  August 26, 2013 at 7:59 am

    I think there is some fear on the part of some programmers. Some of them have their identity tied in very closely to what they do for a living. They see their skills and knowledge as what makes them “special” and unique. If everyone knew how to code that would make them less so.

    Reply
  • 5. Bonnie  |  August 26, 2013 at 9:56 am

    OK, having worked as a professional software engineer, I have to weigh in on this. I think it is fear of the following all-too-common situation: non-professional churns out a prototype system that does something interesting, saying “See how easy it is to code?”. The software engineering group then has this thing dumped on them to get to production, and to improve and maintain. The system is badly written, and really needs to be redone, but management won’t allow it. Eventually, the software engineering group gets blamed for all the problems – the poor performance, the bugs, and the fact that the system can’t be improved. I say this because I have seen this happen SO MANY times. I had to work for two years on a major system being used in some hospitals that had been written by someone who knew a little Java. He had no knowledge or background in database design, and threw something together which was wildly incorrect. We struggled for those two years to deal with data that was constantly wrong or which would disappear because of the bugs in the database. We would waste entire weekends babysitting scripts that removed all the inconsistent and incorrect data that would pile up each week. I have a friend in the financial sector who sees the same thing – traders who know a little Python will write incomprehensible, buggy programs that then get dumped on the software department.

    The reason that professional software engineers are afraid of code written by people who “know a little coding” is that software engineers know there is a huge gap between churning out some code that compiles and appears to do something, and building a software system that is correct, has good performance, and can be extended for years.

    Reply
    • 6. Mark Guzdial  |  August 26, 2013 at 7:46 pm

      Bonnie, I believe what you’re describing happens. The problem is a lack of understanding about the nature of software: about its complexity, about how getting it to work isn’t the same as making it right, and about the challenges of building maintainable, reusable, and scalable software. I have also seen the opposite of what you describe — chemical and mechanical engineers who build some scripted system, then hire software engineers to redesign and rebuild the system. They understood that how software really worked. We should wish that all managers would have that understanding.

      Here’s the question that I’m wondering about: Are we more likely to get people (who make decisions, like managers) to understand the characteristics of software by saying “leave it to the software engineers,” or by teaching something about programming and code?

      Reply
      • 7. Bonnie  |  August 27, 2013 at 8:17 am

        Expecting managers to understand the process of building good software by teaching them a little coding would be like expecting them to understand the the field of building design and architecture by teaching them to do a little bricklaying. The focus on coding is MISLEADING. This has been an endemic problem in the software industry for years. Managers think coding is all that is needed to build a software system. No, coding is one small part of developing a system.

        Reply
        • 8. Mark Guzdial  |  August 27, 2013 at 1:14 pm

          Completely agreed, Bonnie. I don’t expect managers to understand the process of building good software. I am interested in what is involved in getting them to appreciate the complexity. I’ve never been a world class athlete, but doing something (e.g., running a half marathon at a slow pace) gives one an appreciation of what’s involved in doing the whole thing. Maybe learning something about coding doesn’t help. But talking about design and architecture is unlikely to build that appreciation, either. It is an interesting question of how to help people see the challenges of the whole, about how activities done at one level (e.g., scripting) probably don’t scale to a couple of magnitudes greater complexity.

          Reply
          • 9. Kathi Fisler  |  August 29, 2013 at 6:12 am

            The gap between “learning something about coding” and “talking about design and architecture” is huge. Part of the problem is that coding is so detail oriented, and often far too low-level to matter to lots of people who need to understand just a bit about computing. The amount of time needed to get a program to run is often not worth the amount of insight and learning we get from the activity. This economics problem is perhaps the fundamental challenge of computing education for the masses. In theory, working with tools that explore models of systems might be a viable middle path, but even there we don’t yet have a good balance between time investment and learning.

            This is reminding me of Cormac Herley’s 2009 article on why end-users are economically justified in ignoring security advice (http://research.microsoft.com/users/cormac/papers/2009/SoLongAndNoThanks.pdf).

            Kathi

            Reply
            • 10. Mark Guzdial  |  August 29, 2013 at 7:12 am

              Agreed, Kathi, but I didn’t say “talking about design and architecture,” either. I said “appreciate the complexity.”

              Reply
  • 11. Adam Walmsley  |  August 27, 2013 at 3:20 am

    I think it is important that we expose people to computer programming while they are young so they can see whether it is something they enjoy and would like to spend the time to develop the skills necessary to become a great programmer, which in all reality takes years and years off experience. I am part of a group called CodeAvengers (www.codeavengers.com) who run codecamps for middle school to high school aged kids. We aim to give them a taste of programming and the possibilities that come with a career in the I.T industry. What is evident at these camps is that a large proportion of the kids either don’t have the mind for programming, or don’t enjoy it. They love the camp but realize that computer programming is not for them. The media in large ways portrays a false sense of what coding really is and what it means to be a programmer. I agree that not everybody should become or will become a programmer but i think every young kid should give the basics a go, much like we do maths, science and English. Ultimately to find out what we are good at, to pursue that, and then to make a difference in the world.

    Reply
  • […] Programmers insist: “Everybody” does not need to learn to code […]

    Reply

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Trackback this post  |  Subscribe to the comments via RSS Feed


Enter your email address to follow this blog and receive notifications of new posts by email.

Join 11.4K other subscribers

Feeds

Recent Posts

Blog Stats

  • 2,096,809 hits
August 2013
M T W T F S S
 1234
567891011
12131415161718
19202122232425
262728293031  

CS Teaching Tips