Chapter 7. Why Is It So Hard to Learn to Program?

Mark Guzdial

Most of the topics in this book—the best ways to develop software, the costs of developing software, what communications facilitate programming—revolve in some way around programmers. But it’s hard even to become a programmer in the first place. Few people try to enter the field, and even fewer succeed. In this chapter, we ask why it’s so hard to learn to program.

Whether we need to develop more programmers at this moment is a point of dispute. The United States Bureau of Labor Statistics recently predicted an enormous demand for computing professionals. According to the November 2008 report [Association 2008], the demand for “IT Professionals” from 2006–2016 will be twice the growth rate of the rest of the workforce. The updated estimate of November 2009 said: “‘Computer and mathematical’ occupations are the fastest growing occupational cluster within the fastest growing major occupational group” [Consortium 2010]. But what does “IT Professional” mean? A “computer and mathematical” occupation? The experience of many newly unemployed IT workers, especially during the current downturn, suggests that maybe there are too many programmers in the United States today [Rampell 2010].

Although it may not be clear whether we need more programmers, it is clear that many start down the path of programming and fail early. Rumors of high failure rates in introductory computing courses (typically referred to as “CS1” in reference to an early curriculum standards report) are common in the literature and in hallway discussions at conferences such as the ACM Special Interest Group in Computer Science Education (SIGCSE) Symposium. Jens Bennedsen and Michael Caspersen made the first reasonable attempt to find out what failure rates really look like [Bennedsen and Caspersen 2007]. They asked for data from faculty around the world via several computer science (CS) educator mailing lists. Sixty-three institutions provided their failure rates in introductory courses, which means that these data are self-selected and self-reported (e.g., schools with really embarrassing results may have chosen not to participate, or to lie, and the results can be skewed because the sampling was not random). Overall, 30% of students fail or withdraw from the first course, with higher rates in colleges than universities (40% versus 30%). Thus, we have indications that roughly one out of every three students who start a CS1 course, around the world in all kinds of institutions, fails or gives up. Why is that?

The Bennedsen and Caspersen results report success or failure in taking a class. A CS1 teacher’s criteria aren’t the only possible definition of success, however. There are many programmers who never took a course at all, yet are successful. So we first need to establish that students really do have a hard time learning programming, apart from the evidence of grades. If we can establish that, the next question is, “Why?” Is programming an unnatural activity? Could programming be made easier in a different form? Could programming be taught in a different way that makes learning easier? Or maybe we just have no idea how to actually measure what students know about programming.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset