Title: Why Programming Matters
1Why Programming Matters
Eric Roberts Professor of Computer Science,
Stanford University Past Chair of the ACM
Education Board
NACCQ Napier, New Zealand 11 July 2009
2Outline
- In recent years, there have been calls to reduce
or eliminate programming from the computer
science curriculum. The reasons offered in
support of such proposals include - Students increasingly seem to find programming
both distasteful and difficult, which leads them
to pursue other subjects. - There are more jobs in the computing field that
do not require programming, allowing students to
succeed without this skill. - Economic considerations have led to increased
offshoring of software, reducing job
opportunities in the developed countries.
- While there is some truth in each of these
arguments, I am convinced that reducing
curricular emphasis on programming would be a
serious mistake with enormous economic costs.
- What we need to do instead is improve both the
pedagogy and the practice of programming to
restore the passion, beauty, joy and awe that
Grady Booch described at SIGCSE 2007.
3The Importance of Computing A Story
FINANCIAL TIMES
Friday, November 12, 1999
CLUSTERS The science of sizing up the
opposition The clusters have grown but silicon
fen still lacks the large companies of big rivals
writes Brian Groom. Hermann Hauser, venture
capitalist and co-founder of 20 Cambridge
companies, recently attended a conference of
European high technology executives. The last
question was where is the silicon valley of
Europe?
. . . Cambridge has made great strides but is
not yet in the silicon valley league. Stanford
alumni have produced companies worth a trillion
dollars. Massachusetts Institute of Technology
half a trillion dollars. If Cambridge is getting
to 20bn we will be lucky.
4And Parliament Responds
- In 2000, a delegation of nine Members of the
British Parliament visited Stanford to talk about
how they might transform Cambridge into the sort
of economic engine Stanford has been for many
years. - In my meeting with the MPs, I focused on
Stanfords broad audience approach to teaching
computer science, in which we try to give as many
students as we can a serious introduction to the
field, in the hopes that at least some of them go
on. - At the time, Stanford was doing well
- 75 of undergraduates took a CS module
- 12 of all first degrees were in CS
- CS attracted many of Stanfords best students
Barry Sheerman (chairman) Huddersfield,
Labour Charlotte Atkins Staffordshire
Moorlands, Labour Valerie Davey Bristol
West, Labour Michael Foster Worcester,
Labour Helen Jones Warrington North,
Labour Gordon Marsden Blackpool South,
Labour Dr Evan Harris Oxford West and
Abingdon, Liberal Democrat Stephen OBrien
Eddisbury, Conservative Nick St Aubyn
Guildford, Conservative
5But the Timing Was Less than Perfect
- The dot-com collapse hit computing enrolments
very hard. - At Stanford, CS enrolments fell by 37 from 2000
to 2006. - The Computing Research Association (CRA)
estimates that computing enrolment in the United
States fell by almost 50 over that same period. - Similar declines have been reported in most
developed countries. - In the last few years, enrolments have again been
rising. - Stanfords enrolment has risen by almost 20 in
each of the last two years. - The CRA recently reported that the numbers for
the United States grew slightly in the last year. - Despite this good news, the rate of degree
production remains too slow to meet industrial
demand.
6The Need for Greater Understanding
- The failure of universities to produce a
sufficient number of graduates with the necessary
computing skills is now widely recognized as a
crisis in both academia and industry.
- Unfortunately, the underlying causes for the
decline in student interest are not well
understood. Although several theories seek to
explain the decline in student interest, they do
not provide a comprehensive explanation of
student behavior.
- For the last several years, Ive been working to
develop a compelling narrative of the sort Bill
Gates described during his visit to Stanford.
That narrative is as yet incomplete, and I
welcome any comments and criticisms.
7Possible Reasons for the Decline
8But Industry Demand Remains High
- The computing industry offers some of the best
employment opportunities for university
graduates. The following data are from the
United States, but the situation is similar
elsewhere - The number of jobs in the domestic software
industry are at an all-time high and are
projected to grow dramatically over the next
decade. - Salaries for newly minted B.S. graduates in
Computer Science are high, sometimes exceeding
the 100,000 mark. - In 2005, Money magazine rated software engineer
as the number one job in America.
- Producing enough students with strong computing
skills is essential for any nation that wants to
maintain competitiveness in todays global
economy.
9Degree Production vs. Job Openings
160,000
Ph.D.
140,000
Masters
120,000
Bachelors
100,000
Projected job openings
80,000
60,000
40,000
20,000
Engineering
Physical Sciences
Biological Sciences
Adapted from a presentation by John Sargent,
Senior Policy Analyst, Department of Commerce, at
the CRA Computing Research Summit, February 23,
2004. Original sources listed as National
Science Foundation/Division of Science Resources
Statistics degree data from Department of
Education/National Center for Education
Statistics Integrated Postsecondary Education
Data System Completions Survey and NSF/SRS
Survey of Earned Doctorates and Projected Annual
Average Job Openings derived from Department of
Commerce (Office of Technology Policy) analysis
of Bureau of Labor Statistics 2002-2012
projections. See http//www.cra.org/govaffairs/co
ntent.php?cid22.
Sources
10A Thought Experiment about Offshoring
- Suppose that you are Microsoft and that you can
hire a software developer from Stanford whose
loaded costs will be 200,000 per year. Over in
Bangalore, however, you can hire a software
developer for 75,000 per year. Both are equally
talented and will create 1,000,000 annually in
value. What do you do?
- Although the developer in Bangalore has a higher
return, the optimal strategy is to hire them
both. After all, why throw away 800,000 a year? - Any elementary economics textbook will explain
that one hires as long as the marginal value of
the new employee is greater than the marginal
cost. The essential point is that companies seek
to maximize return, and not simply to minimize
cost.
11Possible Reasons for the Decline
12The Problem Starts Early
The UCLA HERI study shows that students have
already made their decisions before they reach
university.
Source Higher Education Research Institute at
UCLA, 2005
13Computing Faces Challenges in Schools
- People who have software development skills
command high salaries and tend not to teach in
schools.
- In many schools, computing courses are seen as
vocational rather than academic. - Students who are heading toward top universities
are advised to take non-CS courses to bolster
their admissions chances. - Because schools are evaluated on how well their
students perform in math and science, schools are
shifting teachers away from computer science
toward these disciplines. Those disciplines,
moreover, often actively oppose expanding
high-school computer science.
J
- Administrators find tools like PowerPoint more
sexy
and
exciting.
- Computing skills in generaland programming in
particularhave become much harder to teach. - Teachers have few resources to keep abreast of
changes in the field.
14Possible Reasons for the Decline
15Possible Reasons for the Decline
16The Curriculum Has a Second-Order Effect
- The computing curriculum as traditionally
implemented has deficiencies and can always be
improved.
- As an explanation for declining enrolments,
however, the curriculum is broken theory has
serious shortcomings
17Students Like Our Courses But Go Elsewhere
18Possible Reasons for the Decline
19The Real Image Problem
http//www.youtube.com/watch?vCmYDgncMhXw
20The Reality Is Also a Problem
Has anyone considered the possibility that its
just not fun anymore?
Don Knuth, October 11, 2006
- Students at Stanford have expressed the following
concerns - Long hours with little chance for a balanced life
- A less pleasant social milieu than other
occupations
21The Code-Rush Syndrome
From March 1998 to April 1999 an independent
documentary film crew followed a team of software
engineers at Netscape Communications as they
lived through a watershed moment in the brief
history of their company and the Internet.
Code Rush, WETA television, 2001
22The Reality Is Also a Problem
Has anyone considered the possibility that its
just not fun anymore?
Don Knuth, October 11, 2006
- Students at Stanford have expressed the following
concerns - Long hours with little chance for a balanced life
- A less pleasant social milieu than other
occupations - A sense that success in programming is possible
only for those who are much brighter than they
see themselves to be - Work that is often repetitive and unchallenging,
particularly when it involves maintaining legacy
technology - Work that has become more difficult than it used
to be - No chance for a lasting impact because of rapid
obsolescence - Fears that employment with an individual company
is dicey even though opportunities are good in
the industry as a whole - Frustration at being managed by nontechnical
people who make more money but are not as bright
(Dilberts boss)
23Dilbert vs. the Boss
24For Some, Programming Is the Enemy
- Because students respond more negatively to
programming than they once did, some have argued
for reducing its emphasis in the university
curriculum. - As an illustration of this trend, consider the
following post that appeared on SIGCSE-MEMBERS on
August 14, 2006
25Industry Is Not Amused
- Every technical person in the industry with whom
Ive spoken is horrified by the prospect of
reducing the emphasis on programming in the
undergraduate curriculum.
- Employers in developed countries with high-tech
sectors are desperate for more people with
programming talent. In his keynote at ITiCSE
2007 in Dundee, Scottish entrepreneur Chris van
der Kuyl said that the lack of programming talent
was the greatest limiting factor in the industry.
- At meetings of the ACM Education Council in
recent years, industry representatives have been
united in their concern about the scarcity of
competent software developers.
- In a new graduate-level course taught at Stanford
by Monica Lam and Martin Rinard, the course
description begins like this The key to
delivering a successful software project is to
hire top notch programmers.
26Industry Reports a Labor Shortage
April 28, 2005
Gates Cites Hiring Woes, Criticizes Visa
Restrictions
By David A. Vise
Microsoft Corp. Chairman Bill Gates said
yesterday the software giant is having enormous
difficulty filling computer jobs in the United
States as a result of tight visa restrictions on
foreign workers and a declining interest among
U._S. students in computer science. lttabgtSpeaking
on a technology panel at the Library of Congress,
Gates said a decline in the number of U._S.
students pursuing careers in science and
technology is hurting Microsoft in the short run,
and could have serious long-term consequences for
the U._S. economy if the problem is not
addressed. lttabgtWe are very concerned that the
U._S. will lose its competitive position. For
Microsoft, it means we are having a tougher time
hiring, Gates said. The jobs are there, and
they are good-paying jobs, but we dont have the
same pipeline.
http//www.washingtonpost.com/wp-dyn/content/artic
le/2005/04/27/AR2005042702241.html
27But There Are Contrary Arguments
In the July 2008 Communications of the ACM,
Villanova professor Stephen Andriole and I
debated the relevance of programming in the
computing curriculum. Steve argues that the
commodification of enterprise software means that
there is no longer as much need for programming
expertise in that sector. I respond that this
sector is only one of many, and that the demand
for employees with good programming skills is
both large and growing.
28Programming Remains Central
- Calls to reduce or eliminate programming from
computing curricula arise from some undeniable
assumptions - There are more jobs in IT that dont require
programming. - Programming is not particularly popular with
students today. - Offshoring of programming jobs has increased.
- Unfortunately, this analysis ignores the
following equally valid propositions - There are more jobs in IT that do require
programming. - Programming has historically been what attracts
students the most. - Globalization has created more IT jobs in
India/China and the U.S. - Offshoring exists largely because of a shortfall
of skilled employees.
29Critical Observations about Software
30Critical Observations about Software
31Essential and Accidental Complexity
To see what rate of progress one can expect in
software technology, let us examine the
difficulties of that technology. Following
Aristotle, I divide them into essence, the
difficulties inherent in the nature of software,
and accidents, those difficulties that today
attend its production but are not inherent. . . .
The complexity of software is an essential
property not an accidental one. Hence,
descriptions of a software entity that abstract
away its complexity often abstract away its
essence.
Fred Brooks No Silver Bullet IEEE Computer,
April 1987
32Critical Observations about Software
33The March of Progress
34Sobering Thoughts
- There are more public methods in the java and
javax package hierarchies than there are words in
Jensen and Wirths Pascal User Manual and Report.
The amount of explanation once deemed sufficient
to teach the standard introductory programming
language is thus no longer sufficient for an
index of the operations available today.
- Typical software today exists at a level of scale
and complexity that would have been unthinkable a
generation ago. The most common operating system
used in mobile phones, for example, contains
approximately 100 million lines of code. - Given the scale of modern software systems, it is
typically impossible for students to develop
projects as extensions to existing code
frameworks. An academic term is now barely
sufficient to understand what is already there,
leaving no time for further development?
35An Illustrative Example
In their book Java Puzzler, Josh Bloch and Neal
Gafter pose a variety of puzzles to test the
readers understanding of Java, including the
following
Students are regularly taught that the
statements x and x 1 are
equivalent. In Java, describe a situation in
which the first statement is legal, but not the
second. How about the other way around?
36Java Scoping
If you execute the program shown at the right in
Java, what output will it generate? Why?
37Critical Observations about Software
38Variations in Programmer Productivity
- In 1968, a study by Sackman, Erikson, and Grant
revealed that programmers with the same level of
experience exhibit variations of more than 20 to
1 in the time required to solve particular
programming problems. - More recent studies Curtis 1981, DeMarco and
Lister 1985, Brian 1997 confirm this high
variability. - Most industry insiders believe that the
productivity variance is even higher today. In
2005, Googles VP for Engineering, Alan Eustace,
told The Wall Street Journal that one top-notch
engineer is worth 300 times or more than the
average.
39The Microsoft Programming Personae
Microsofts cultural lore defines three types of
programmers
Mort is your most common developer, who doesnt
have a CS background, may even be a recent
newcomer, and doesnt quite understand what the
computer is doing under the covers, but who
writes the dinky IT programs that make businesses
run. Elvis, more knowledgeable, cares about code
quality, but has a life too. Einstein writes
some serious-ass piece of code like device
drivers, wants to get things done, needs to be
able to go low level and high level, needs a
language without restrictions to get his job done.
Wesner Moise, Who are you? Mort, Elvis or
Einstein, September 25, 2003
http//wesnerm.blogs.com/net_undocumented/2003/09/
who_are_you_mor.html
For the most part, Microsoft (along with Google
and other first-rank companies) are seeking to
hire the Einsteins, which explains the low hiring
ratio.
40Productivity Variations Are Common
- The idea that individuals might differ in
productivity by two or more orders of magnitude
initially seems hard to believe.
- In fact, such differences in effectiveness occur
across a range of occupational categories - Mathematicians
- Creative artists (writers, composers, poets,
painters) - Entertainment (musicians, actors, motion-picture
directors) - Financial wizards, CEOs
- Professional athletes
- No one achieves mastery in these fields through
talent alone. Training and practice are
essential. As Malcolm Gladwell notes in
Outliers, mastery of any field typically requires
10,000 hours.
41Paul Grahams Hackers and Painters
When I finished grad school in computer science I
went to art school to study painting. A lot of
people seemed surprised that someone interested
in computers would also be interested in
painting. They seemed to think that hacking and
painting were very different kinds of workthat
hacking was cold, precise, and methodical, and
that painting was the frenzied expression of some
primal urge. lttabgtBoth of these images are wrong.
Hacking and painting have a lot in common. In
fact, of all the different types of people Ive
known, hackers and painters are among the most
alike. lttabgtWhat hackers and painters have in
common is that theyre both makers. Along with
composers, architects, and writers, what hackers
and painters are trying to do is make good things.
Paul Graham
(photo by Niall Kennedy)
http//www.paulgraham.com/hp.html
42Alternative Models of Software Education
If software development is really an art, it
might make sense to create conservatories for
the teaching of software arts, similar to music
conservatories. One possibility might be some
sort of New England Conservatory of Coding. (Or
perhaps a Hogwarts School for Software Wizardry.)
If software development is really an art, it
might make sense to create conservatories for
the teaching of software arts, similar to music
conservatories. One possibility might be some
sort of New England Conservatory of Coding. (Or
perhaps a Hogwarts School for Software Wizardry.)
If software development is really an art, it
might make sense to create conservatories for
the teaching of software arts, similar to music
conservatories. One possibility might be some
sort of New England Conservatory of Coding. (Or
perhaps a Hogwarts School for Software Wizardry.)
Another model might be to create intensive
programs that encourage students to focus on the
art of software development, in much the same way
that programs like the University of Virginias
Semester at Sea program offers a concentrated
immersion in oceanography, geography, and
cultural anthropology.
SEMESTER AT C
43Three Student Personae
Taking a cue from Microsofts classification of
programmers, it is interesting to think about
different students that computer science attracts
- In the boom years, we tended to attract the
entrepreneur, lured by the dream of start-up
riches. That student now heads for finance. - Most academic programs tend to focus on creating
the engineer, but that lifestyle strikes todays
students as boring. - We need to attract the artistsomeone who can
appreciate the passion, beauty, joy, and awe that
make our field exciting.
And consider not only how much easier it is to
find female artists to serve as role models but
also how much easier it is to convince women that
the lifestyle of an artist might be attractive.
Emily Carr
Mary Cassatt
Dora Carrington
Frida Kahlo
Georgie OKeeffe
44Knuths Turing Award Lecture (1974)
When Communications of the ACM began publication
in 1959, the members of ACMs Editorial Board
made the following remark as they described the
purposes of ACMs periodicals
If computer programming is to become an
important part of computer research and
development, a transition of programming from an
art to a disciplined science must be effected.
Don Knuth
lttabgtSuch a goal has been a continually recurring
theme during the ensuing years for example, we
read in 1970 of the first steps toward
transforming the art of programming into a
science. Meanwhile we have actually succeeded in
making our discipline a science, and in a
remarkably simple way merely by deciding to call
it computer science.
ACM Turing Award 1974
http//doi.acm.org/10.1145/361604.361612
45What We Need To Do
- Recognize that the problems extend well beyond
the university.
- Press government and industry to improve
computing education in the schools, possibly
through public-private partnerships. - Take creative steps to bolster both the image and
the reality of work in the profession. - Make it clear to students (as well as faculty)
that programming remains essential to much of the
work in the field. - Emphasize the beauty of programming by focusing
more attention on software as an art. - Explore new styles of pedagogy that are more
finely attuned to artistic domains.
46The End