Let’s call It “Computer Science” AND “Programming”: The fat line where most people will be
June 6, 2012 at 8:08 am 33 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.
Entry filed under: Uncategorized. Tags: computing at schools, computing for everyone, curriculum, jobs, K12.
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) […]
12.
Can We Fix Computer Science Education in America? | Techland | TIME.com « Computing Education Blog | July 19, 2012 at 2:55 am
[…] 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 […]
13.
Khan Academy offers kind-of-scaffolded computer science learning: Doing away with the teacher « Computing Education Blog | August 15, 2012 at 8:32 am
[…] “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 […]
14.
The Blue Collar Coder may be Stuck in the Shallow End « Computing Education Blog | October 10, 2012 at 9:21 am
[…] 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 […]
15.
Essay calling for digital skills to be added to liberal arts disciplines « Computing Education Blog | October 30, 2012 at 9:34 am
[…] 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 […]
16.
Definitions of “Code” and “Programmer”: Response to “Please Don’t Learn to Code” « Computing Education Blog | December 20, 2012 at 10:21 am
[…] 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 […]
18.
How many programmers are there? From The Computer Boys Take Over « Computing Education Blog | January 3, 2013 at 7:39 am
[…] 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 […]
20.
Code Acts: How Computer Code influences the Way We Perceive the World « Computing Education Blog | February 14, 2013 at 1:52 am
[…] 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. […]
22.
We Need an Economic Study on Lost Productivity from Poor Computing Education | Computing Education Blog | March 19, 2013 at 1:29 am
[…] know from Scaffidi, Shaw, and Myers that there are a great many end-user programmers in the United States. Brian Dorn’s […]
23.
Why AP CS:Principles is a good thing: Responding to Gas Station without Pumps | Computing Education Blog | June 28, 2013 at 1:58 am
[…] 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 […]
24.
Programmers insist: “Everybody” does not need to learn to code | Computing Education Blog | August 26, 2013 at 1:30 am
[…] 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 […]
25.
Live coders challenge CS to think about expression again | Computing Education Blog | October 1, 2013 at 3:53 am
[…] 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 […]
26.
Digital Literacy vs. Learning to Code: A False Dichotomy | Computing Education Blog | September 12, 2014 at 8:22 am
[…] I’ve pointed out several times, a great many professionals code, even those who don’t work in traditional […]
27.
Why should non-CS majors learn functional programming? | Computing Education Blog | July 31, 2015 at 7:40 am
[…] 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 […]
28.
Jeff Atwood says “Learning to code is overrated” but means “We need good CS teachers” | Computing Education Blog | October 26, 2015 at 7:55 am
[…] 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 […]
29.
End-user programmers are at least half of all programmers | Computing Education Blog | January 20, 2016 at 8:14 am
[…] 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). […]
30.
The programming guild doesn’t want you to learn to code | Computing Education Blog | June 6, 2016 at 7:56 am
[…] 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 […]
31.
Broadening what Core CS Looks At: People of ACM – Margaret Burnett | Computing Education Blog | November 23, 2016 at 7:11 am
[…] 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 […]
32.
Embedding and Tailoring Engineering Learning: A Vision for the Future of Engineering Education | Computing Education Blog | March 15, 2017 at 6:00 am
[…] 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 […]
33.
We need to separate Computing for All from Software Development: Claims that coding is not “fun,” it’s technically and ethically complex | Computing Education Blog | June 19, 2017 at 7:00 am
[…] and “manic attention to detail.” This is an issue I’ve talked about with respect to the thick line between programmer and user where most people will be in the future. I’m teaching an ethics course this summer — building software for others is […]