why programming matters eric roberts professor of computer science, stanford university past chair...

46
Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand 11 July 2009

Post on 19-Dec-2015

223 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Why Programming Matters

Eric RobertsProfessor of Computer Science, Stanford University

Past Chair of the ACM Education Board

NACCQNapier, New Zealand

11 July 2009

Page 2: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Outline• 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.

Page 3: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Importance of Computing: A Story

FINANCIAL TIMESFriday, November 12, 1999

CLUSTERS: The science of sizing up the oppositionThe 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”.

Page 4: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

And 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 Stanford’s “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 Stanford’s best students

Barry Sheerman (chairman) Huddersfield, LabourCharlotte Atkins Staffordshire Moorlands, LabourValerie Davey Bristol West, LabourMichael Foster Worcester, LabourHelen Jones Warrington North, LabourGordon Marsden Blackpool South, LabourDr Evan Harris Oxford West and Abingdon, Liberal DemocratStephen O’Brien Eddisbury, ConservativeNick St Aubyn Guildford, Conservative

Page 5: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

But 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.– Stanford’s 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.

Page 6: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Need for Greater UnderstandingI have not seen a compelling narrative for the decline in student interest.

Bill Gates, Stanford University,February 19, 2008

• 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, I’ve 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.

Page 7: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Possible Reasons for the DeclineFears about job security in the wake of redundancies and offshoring continue to have a profound effect on student interest in our discipline.

1.

Page 8: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

But Industry Demand Remains High

262 402 53.41.

767 1,156 50.62.787 1,171 48.73.507 733 44.64.

71 100 41.05.

176 248 41.06.2 3 39.87.

465 148 35.48.62 84 35.09.

Network systems and data communications analysts

Personal and home care aidesHome health aidesComputer software engineers, applicationsVeterinary technologists and technicians

Personal financial advisorsMakeup artists, theatrical and performanceMedical assistantsVeterinariansSubstance abuse and behavioral disorder counselors 83 112 34.310.

Top 10 job growth categories (2006-2016) 2006 2016

Employment(thousands)

Growth

U.S. Department of Labor, Bureau of Labor Statistics, Employment Projections: 2006-16, December 2007.

Source:

Google and Facebook are fighting hard to hire this year’s crop of computer science graduates, we’ve heard, and ground zero is Stanford. Most of the class of 2008 already have job offers even though graduation is months away. Last year, salaries of up to $70,000 were common for the best students. This year, Facebook is said to be offering $92,000, and Google has increased some offers to $95,000 to get their share of graduates. Students with a Master’s degree in Computer Science are being offered as much as $130,000 for associate product manager jobs at Google.

• 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 today’s global economy.

Page 9: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Degree Production vs. Job Openings160,000

140,000

120,000

100,000

80,000

60,000

40,000

20,000

Engineering Physical Sciences Biological Sciences Computer Science

Ph.D.

Master’s

Bachelor’s

Projected job openings

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/content.php?cid=22.

Sources:

Page 10: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

A 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.

Page 11: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Possible Reasons for the DeclineFears about job security in the wake of redundancies and offshoring continue to have a profound effect on student interest in our discipline.

1.

The kind of exposure students get to computing at the elementary and secondary level tends to push people away from the discipline long before they reach the university.

2.

Page 12: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Problem Starts Early

Source: Higher Education Research Institute at UCLA, 2005

The UCLA HERI study shows that students have already made their decisions before they reach university.

Page 13: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Computing 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.

• Administrators find tools like PowerPoint more sexy and exciting. • Computing skills in general—and programming in particular—have

become much harder to teach.

• Teachers have few resources to keep abreast of changes in the field.

Page 14: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Possible Reasons for the DeclineFears about job security in the wake of redundancies and offshoring continue to have a profound effect on student interest in our discipline.

1.

The kind of exposure students get to computing at the elementary and secondary level tends to push people away from the discipline long before they reach the university.

2.

The image of work in the field—and, more importantly, all too much of the reality of work in the field—is unattractive to most students and no longer seems fun, particularly in comparison to other opportunities that bright students might pursue.

3.

Page 15: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Possible Reasons for the DeclineFears about job security in the wake of redundancies and offshoring continue to have a profound effect on student interest in our discipline.

1.

The kind of exposure students get to computing at the elementary and secondary level tends to push people away from the discipline long before they reach the university.

2.

The image of work in the field—and, more importantly, all too much of the reality of work in the field—is unattractive to most students and no longer seems fun, particularly in comparison to other opportunities that bright students might pursue.

3.

The university curriculum is badly broken and needs a radical overhaul.

4.

Page 16: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The 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:

It cannot explain why enrolments have varied so much over time.1.It fails to account for the fact that institutions saw a similar loss of enrolment even when their curricula were different. Most of the proposed curriculum improvements were in place somewhere in 2000-01, but declines occurred everywhere. The resurgence of enrolment in the last year also seems independent of curriculum.

2.

Students decide to avoid computing long before they have any idea what the university curriculum is.

3.

Students who take our courses tend to like them but still shy away from the computer science major.

4.

Page 17: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Students Like Our Courses But Go Elsewhere

Gateway Course for Computer ScienceGateway Course for Management Science & Engineering

Computer Science Management Science & Engineering

studentflow

Page 18: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Possible Reasons for the DeclineFears about job security in the wake of redundancies and offshoring continue to have a profound effect on student interest in our discipline.

1.

The kind of exposure students get to computing at the elementary and secondary level tends to push people away from the discipline long before they reach the university.

2.

The image of work in the field—and, more importantly, all too much of the reality of work in the field—is unattractive to most students and no longer seems fun, particularly in comparison to other opportunities that bright students might pursue.

3.

Page 19: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Real Image Problem

Dilbert“The Knack”

http://www.youtube.com/watch?v=CmYDgncMhXw

Page 20: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Reality Is Also a Problem

• 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

—Don Knuth, October 11, 2006Has anyone considered the possibility that it’s just not fun anymore?

Page 21: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The 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

Page 22: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Reality Is Also a Problem

• 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 (Dilbert’s boss)

—Don Knuth, October 11, 2006Has anyone considered the possibility that it’s just not fun anymore?

Page 23: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Dilbert vs. the Boss

Capital Labour

Interestingly, during the bubble of 2001 to 2007, students with strong technical skills opted for careers in management or finance, giving them a seemingly secure place on the capital side of the capital/labour divide.

Page 24: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

For 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:

I have an idea for a panel that I’d like to organize for SIGCSE’07. I’m asking for volunteers (or nominations of others) to serve on the panel. The panel I’d like to organize would have a title something like:

“Alternative Models for a Programming-lite Computer Science Curriculum”

The theme of the panel would be to share ideas and thoughts on how we might reduce (or eliminate) the emphasis on programming within a computer science curriculum. The basic idea is to cause discussion centered on the knowledge and skills students of tomorrow will need in the global economic workspace and the implications for the CS curriculum. As more and more aspects of software development of “offshored”, what kind of curriculum would allow a student to be successful in the IT field?

Walt Kelly—We have met the enemy and he is us.

Page 25: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Industry Is Not Amused• Every technical person in the industry with whom I’ve 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.

• 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. He called it coding.

• 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.”

Page 26: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Industry Reports a Labor Shortage

Gates Cites Hiring Woes, Criticizes Visa RestrictionsBy 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.<tab>Speaking 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.<tab>“We 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 don’t have the same pipeline.”

— April 28, 2005

http://www.washingtonpost.com/wp-dyn/content/article/2005/04/27/AR2005042702241.html

Page 27: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

But There Are Contrary ArgumentsIn 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.

Page 28: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Programming Remains Central

• Calls to “reduce or eliminate” programming from computing curricula arise from some undeniable assumptions:– There are more jobs in IT that don’t 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.

Page 29: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Critical Observations about Software

Software development is an extraordinarily difficult task, exceeding in complexity most other engineering work. That difficulty, moreover, is intrinsic to the discipline and is not likely to change in the foreseeable future.

1.

Despite advances in tools and methodologies (and because of those advances to some extent), software development and software education have become more difficult over the history of the field.

2.

Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is enormous. Experienced programmers differ in productivity by several orders of magnitude.

3.

Page 30: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Critical Observations about Software

Software development is an extraordinarily difficult task, exceeding in complexity most other engineering work. That difficulty, moreover, is intrinsic to the discipline and is not likely to change in the foreseeable future.

1.

Despite advances in tools and methodologies (and because of those advances to some extent), software development and software education have become more difficult over the history of the field.

2.

Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is enormous. Experienced programmers differ in productivity by several orders of magnitude.

3.

Page 31: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Essential and Accidental ComplexityTo 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. . . .

Fred Brooks“No Silver Bullet”IEEE Computer, April 1987

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.

Page 32: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Critical Observations about Software

Software development is an extraordinarily difficult task, exceeding in complexity most other engineering work. That difficulty, moreover, is intrinsic to the discipline and is not likely to change in the foreseeable future.

1.

Despite advances in tools and methodologies (and because of those advances to some extent), software development and software education have become more difficult over the history of the field.

2.

Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is enormous. Experienced programmers differ in productivity by several orders of magnitude.

3.

Page 33: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The March of Progress

266 pages 274 pages

911 pages

1536 pages

Page 34: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Sobering Thoughts• There are more public methods in the java and javax

package hierarchies than there are words in Jensen and Wirth’s 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?

Page 35: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

An Illustrative ExampleIn their book Java Puzzler, Josh Bloch and Neal Gafter pose a variety of puzzles to test the reader’s 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?

Page 36: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Java Scopingpublic class ScopeTest { public static void main(String[] args) { C1 obj = new C2(); System.out.println(obj.fn(obj)); }}

class C1 { public static final int N = 1;

public int fn(C1 obj) { return 10 + obj.N; }}

class C2 extends C1 { public static final int N = 2;

public int fn(C1 obj) { return 20 + obj.N; }}

If you execute the program shown at the right in Java, what output will it generate? Why?

Page 37: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Critical Observations about Software

Software development is an extraordinarily difficult task, exceeding in complexity most other engineering work. That difficulty, moreover, is intrinsic to the discipline and is not likely to change in the foreseeable future.

1.

Despite advances in tools and methodologies (and because of those advances to some extent), software development and software education have become more difficult over the history of the field.

2.

Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is enormous. Experienced programmers differ in productivity by several orders of magnitude.

3.

Page 38: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Variations 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, Google’s VP for Engineering, Alan Eustace, told The Wall Street Journal that one top-notch engineer is worth 300 times or more than the average.

Page 39: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The Microsoft Programming PersonaeMicrosoft’s cultural lore defines three types of programmers:

Mort is your most common developer, who doesn’t have a CS background, may even be a recent newcomer, and doesn’t 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.

Mort is your most common developer, who doesn’t have a CS background, may even be a recent newcomer, and doesn’t 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.

Mort is your most common developer, who doesn’t have a CS background, may even be a recent newcomer, and doesn’t 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.

Page 40: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Productivity 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.

Page 41: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Paul Graham’s Hackers and Painters

http://www.paulgraham.com/hp.html

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 work—that hacking was cold, precise, and methodical, and that painting was the frenzied expression of some primal urge.<tab>Both of these images are wrong. Hacking and painting have a lot in common. In fact, of all the different types of people I’ve known, hackers and painters are among the most alike.<tab>What hackers and painters have in common is that they’re both makers. Along with composers, architects, and writers, what hackers and painters are trying to do is make good things.

(photo by Niall Kennedy)Paul Graham

Page 42: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Alternative 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.)

SEMESTER AT SEASEMESTER AT C++

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 Virginia’s Semester at Sea program offers a concentrated immersion in oceanography, geography, and cultural anthropology.

Page 43: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Three Student PersonaeTaking a cue from Microsoft’s classification of programmers, it is interesting to think about different students that computer science attracts:

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.

• 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 today’s students as boring.

• We need to attract the artist—someone who can appreciate the passion, beauty, joy, and awe that make our field exciting.

Emily CarrMary CassattDora CarringtonFrida KahloGeorgie O’Keeffe

Page 44: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

Knuth’s Turing Award Lecture (1974)

When Communications of the ACM began publication in 1959, the members of ACM’s Editorial Board made the following remark as they described the purposes of ACM’s 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.”

<tab>Such 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

Don Knuth

<tab>Implicit in these remarks is the notion that there is something undesirable about an area of human activity that is classified as an “art”; it has to be a Science before it has any real stature. On the other hand, I have been working for more than 12 years on a series of books called “The Art of Computer Programming.” People frequently ask me why I picked such a title; and in fact some people apparently don’t believe that I really did so, since I’ve seen at least one bibliographic reference to some books called “The Act of Computer Programming.”<tab>In this talk I shall try to explain why I think “Art” is the appropriate word. I will discuss what it means for something to be an art, in contrast to being a science; I will try to examine whether arts are good things or bad things; and I will try to show that a proper viewpoint of the subject will help us all to improve the quality of what we are now doing.

http://doi.acm.org/10.1145/361604.361612

Page 45: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

What 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.

Beauty is truth, truth beauty, that is allYe know on earth, and all ye need to know.

— John Keats, “Ode on a Grecian Urn,” 1819

Page 46: Why Programming Matters Eric Roberts Professor of Computer Science, Stanford University Past Chair of the ACM Education Board NACCQ Napier, New Zealand

The End