Let’s call It “Computer Science” AND “Programming”: The fat line where most people will be

June 6, 2012 at 8:08 am 32 comments

Who knows why meme’s start, but one of the big ones in the Computing Education blogosphere today is “Let’s not call it ‘Computer Science’ if we really mean ‘Computer Programming.'”  Based on Neil Brown’s excellent response, I suspect that it’s the UK “Computing at Schools” effort that is leading to this question.  If you’re going to define a computer science curriculum, you’re going to have to define “computer science.”  Both Neil and Alfred Thompson do a great job of helping us define kinds of computing and understand the goals of the different kinds of curricula.

I’m more interested in the assumptions in the original blog about what the “regular people” are going to do.  Jason Gorman claims that 99% of people involved in computing are just “users.”  “I believe that what’s needed is a much more rounded computing education for the 99%, with IT blending seemlessly and ubiquitously into everyday lessons as well as home life.”  They need computational thinking, but not programming, argues Jason.  Jason sees that only 1% of students should get programming. “For the remaining 1%, of whom some might become software developers, we need programming in schools (and out of school). Lots of it. ”

That sharp distinction is not how people work today.  Chris Scaffidi, Mary Shaw, and Brad Myers explained this in 2007. For every software developer in the world, there are four more professionals who program, but aren’t software developers, and there are another nine other people who are programming, but don’t recognize that.

  • A lot of Jason’s 99% are going to write SQL queries.  That’s where much of the world’s data lives today, and lots of people need to get to that data.  SQL queries require variables, conditionals constraints, an understanding of data abstraction, and oftentimes, a model of iteration. Looks like programming to me.
  • A lot of Jason’s 99% are going to create spreadsheets: Same variables, conditionals, models of iteration.  Oh, and testing.  One of the common themes in all the end-user programming literature is that new programmers don’t realize how many things can go wrong in writing programs, and how much time they’ll waste in debugging if they don’t develop good testing practices.  There is a real economic cost to all those end-user programmers losing productive time to bugs.  Is testing in the “Computer Science” side or the “Computer Programming” side?
  • All scientists and engineers will program: Maybe just in Excel, many in MATLAB or R, and a surprisingly many in both.  Greg Wilson just sent me a great paper yesterday about all the ways that scientists and engineers code.  They’re not professional software developers.  They use programming to achieve their goals.

Jason’s worldview has this giant country of “Computer Users,” and this tiny Lichtenstein of a country called “Computer Programmers” next to it.  The problem isn’t that the border between them is thin, porous, and maybe more gray than well-defined.  It’s a really fat line, and that’s where most professionals will live.  It’s really another whole country, lying in the border, and it swamps the other two.

What people do with computing is changing, and growing. Programming is a medium, a literacy, a form of communication and expression.  More and more people will use it.  Jason also raises the issue that self-taught programming is just fine.  Someone yelled at Alfred in his blog for not recognizing the greater value of self-taught programming.  Neil Brown called it right: Emphasizing self-taught programming is another way of shutting women out of computing.  I look at the issue from a literacy perspective.  Some people can teach themselves to write on their own, but you can’t count on that to achieve literacy in your society.  If a literacy is worth knowing, teach it.  Computer programming is a literacy, and everyone should be taught it — and computer science, too.

Think of computing as a pyramid. At the base, we have computer users, who will probably make up about 99% of the pyramid. The next level up is people who write software (let’s ignore people who make computers – that’s electronic engineering, which a CS education won’t help you with), and they might account for the next 0.9% of the pyramid. Finally, at the top, are computer scientists – people who advance the concepts, design the programming languages and “push the envelope” for the 0.9% of us who write software day-to-day.

via Let’s Not Call It “Computer Science” If We Really Mean “Computer Programming” – Software People Inspiring.

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

We need “Computing for Future Judges” BBC News – Google funds computer teachers and Raspberry Pis in England

32 Comments Add your own

  • 1. Dennis J Frailey  |  June 6, 2012 at 1:11 pm

    As I see it there are really three categories: computer scientists, who study the underlying theory of computing; programmers, who write code; and software engineers, who design and build robust software systems that people can rely on – often with life-critical consequences (think medical equipment, transportation, etc.). Most people who consider themselves software developers fit into the programmer category, although many call themselves computer scientists or software engineers. Most computer science departments teach the first two (with the faculty needing to do the computer science in order to get publications and tenure and the students being more interested in the programming in order to get jobs). There is a great need for the third category (genuine software engineers), but few of the computer science faculty actually understand what it entails and neither employers nor educators seem to understand the difference. Hence, the tendency is for employers to hire computer science majors or hot shot programmers – which results in a vast amount of often poorly developed software. It reminds me of the US auto industry in the 1950’s and 1960’s – lots of choices, lots of style but little serious attention to quality and reliability. What changed that industry was the entry of the Japanese auto makers, who paid attention to the quality message of Edwards Deming and showed you could do so without increasing cost. In computing, we’re still in the stage where there are known techniques for producing high quality software, but they tend to be known and practiced by very few because they are seen as costly. We need someone to show that high quality, well engineered software need not be so costly. The question is who will be the one to do so. Remember what the Japanese companies did to the US auto industry.

    • 2. Mark Guzdial  |  June 6, 2012 at 1:41 pm

      Dennis, how do you classify end-users who program? By any estimate I’ve seen, they far outnumber any of the three categories that you describe. They are not computer-scientists, they don’t see themselves as programmers, and they are certainly not software engineers. Perhaps a fourth category?

  • 3. Dennis Frailey  |  June 6, 2012 at 2:47 pm

    End users who develop applications are, indeed, a fourth category and by far the largest. I didn’t include them because I was thinking mainly of those who consider computing and, in particular, computer software to be their profession. Although small compared with end user programmers, nevertheless the number of people whose livelihood is derived from computers has grown substantially and is likely to continue to do so. In that process, the breadth of things we do has expanded and, hence, the need to subdivide into more specific categories.

  • 4. geekymom  |  June 6, 2012 at 9:36 pm

    Computing was my profession for almost 7 years before I really learned to program. I wrote scripts to do all kinds of thing. I did web development. I, too, wrote some SQL. I never would have called what I was doing programming. Hacking, maybe. Computing was my profession. I got paid to compute. :). But until a few years ago, I would not put programming on my resume. And I still wouldn’t say I was a software developer.

    • 5. Mark Guzdial  |  June 7, 2012 at 6:26 am

      In Brian Dorn’s studies, few graphic designers labelled themselves “programmers.” Yet they wrote significant code, e.g., almost all had written programs over 100 lines. One had written a system to assemble catalog pages from a database, all using PhotoShop scripting.

      Brian found that his subjects did need computer science and to learn better software development practices.

      • 6. Dennis Frailey  |  June 7, 2012 at 7:10 am

        I recall from my early days as a software developer that there were a number of things I knew little of until I had to actually develop production-quality code. I did know of many problems, but I didn’t know that there were well known solutions. For example, my doctoral work involved writing a large program and many of the problems I had with that program could have been managed (and significantly reduced) had I known more about software engineering. What I needed to know more about was not what one typically learns in computer science classes – I had plenty of that since CS was my field. I didn’t understand things like configuration management and quality assurance and regression testing and techniques for measuring, tracking and predicting progress like earned value. It was only later that I came to realize how vital these are. Yet how many CS graduates even know what these terms mean?

  • 7. Dennis J Frailey  |  June 6, 2012 at 10:39 pm

    I appreciate the fact that you are so honest about your skills. I’ve encountered quite a few people with fewer credentials than you have who consider themselves accomplished “software engineers”. [I recently had to plow through a few dozen resumes and several interviews with the kinds of people I refer to.]

  • 8. jasongorman (@jasongorman)  |  June 8, 2012 at 8:18 am

    My (very rough) 1% includes your “end users who program” category. I’d say it’s a about a million people in total. Unless you thought that 1% of the UK population are professional software developers?

    • 9. Mark Guzdial  |  June 8, 2012 at 8:30 am

      Hi Jason, thanks for visiting! Scaffidi, Shaw, and Myers suggest that in 2012 there will be 3M professional software developers in the United States, 13M end user programmers who explicitly call themselves “programmers,” and an additional 55M end user programmers who do not call themselves “programmers.” There are about 313M in the US today. Overall, 68M of 313M is significantly more than 1%. Of course, UK ratios may differ.

  • 10. jasongorman (@jasongorman)  |  June 8, 2012 at 8:19 am

    I should probably stress that I think as many kids as possible should try programming, I’m talking about those who’ll pursue it. and, yes, there are plenty of very good self-taught software developers out there. In reality, all programemers are mostly self-taught (just like all bicyclists and all pianists. Understanding is not enough.)

  • 11. Computer Programming: Working In a Team « Jaime's Blog  |  July 17, 2012 at 7:20 pm

    […] Let’s call It “Computer Science” AND “Programming”: The fat line where… (computinged.wordpress.com) […]

  • […] education in the United States.  In particular, I like that Jane Margolis takes on the myth that students will just learn it on their own without support.  That’s thinking that prevents broadening participation in computing Not every kid has […]

  • […] “intuit” how the code works.  Really?  There’s a lot more of this belief that students should just teach themselves what code does.  The “scaffolding” in Kahn Academy has no kind of process modeling or […]

  • […] formal CS degrees for the bulk of their careers.”  That may be true, but the assumption that students will teach themselves is often used as an excuse for not creating opportunities in schools …, who don’t live in a place with examples and role models available to guide them into the […]

  • […] in 1961. The specific computing literacies being described go beyond computational thinking — it’s explicitly about being able to make with computing.  Steve Jobs’ made a similar famous claim that computer science is a liberal […]

  • […] I do mean quantitatively and I do mean all people, not just professional programmers.  We know that there are many more people who write code to accomplish some task, as compared to professional programmers.  When I visited the NASA Goddard Visualization Lab last […]

  • 17. Is coding for everyone? « Gas station without pumps  |  January 1, 2013 at 10:42 am

    […] people,” I do mean quantitatively and I do mean all people, not just professional programmers.  We know that there are many more people who write code to accomplish some task, as compared to professional […]

  • […] that this graph and blog post were particularly interesting. It’s markedly different from the Scaffidi, Shaw, and Myers prediction about 2012 that they made in 2005, but in part, that’s because Scaffidi et al. actually […]

  • 19. A good year | run( ) {  |  February 13, 2013 at 7:36 pm

    […] people,” I do mean quantitatively and I do mean all people, not just professional programmers.  We know that there are many more people who write code to accomplish some task, as compared to professional […]

  • […] This is a fascinating essay.  Some of it goes too far for me (e.g., that code “produces new forms of algorithmic identity”), but the section I quote below is making a deep comment relative to the arguments we’ve been making here about “computing for everyone.” […]

  • 21. Programming Art | Academic Computing  |  March 15, 2013 at 10:33 am

    […] Mark Guzdial has written about the latter point before, but I saw a nice example of it in Denver last week — fittingly, after the SIGCSE computer science education conference. I’ll show it at the end of this post, but first: some context. […]

  • […] know from Scaffidi, Shaw, and Myers that there are a great many end-user programmers in the United States.  Brian Dorn’s […]

  • […] people in computing careers? I don’t know — I think so, but I’m not really worried about it. I believe in “computing for everyone” and that lots of people (even non-IT professionals) need t…, so having more access to computing education in more schools is a positive end-goal for […]

  • […] answered the criticism leveled below previously — it really is the case that many people who aren’t professional programmers are going to need t….  Why are programmers pushing back against people learning to code?  (And there seems to be a lot […]

  • […] Dagstuhl of designing programming languages for ad hoc groups, in a collaborative design process. Some evidence suggests that there may be nine times as many end-user programmers in various domains as professional software developers.  Do we teach CS students how to design programming notations […]

  • […] I’ve pointed out several times, a great many professionals code, even those who don’t work in traditional […]

  • […] because they will live and work (as I predict) in the fat line between programmers and users (see post here).  A recent article in the CACM suggests that all non-CS majors need to be learn (let’s not […]

  • […] being a user and being a programmer is where most people will be (see the “fat line” blog post here).  That “provide them plenty of structured opportunities to play with hardware and […]

  • […] I was intrigued to see this post during CS Ed Week from ChangeTheEquation.org. They’re revisiting the Scaffidi, Shaw, and Myers question from 2005 (mentioned in this blog post). […]

  • […] guilds did hundreds of years ago.  I have responded to some of these complaints before, like the one that suggested that people should just be users and not programmers. “You can’t do it as well as we can” and “you’ll just make a mess of […]

  • […] and if they do exist, the faculty wish they didn’t because they’ll write cruddy code (a perspective I have heard before). People whom I trust have significant insight into NSF reviewers across CS have told me that […]

  • […] on the study and how you count). Most professionals will likely use some form of programming in the future. That’s an argument for “CS for […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed

Recent Posts

June 2012
« May   Jul »


Blog Stats

  • 1,324,351 hits

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

Join 4,633 other followers

CS Teaching Tips

%d bloggers like this: