Labor Dynamics of the IT Economy What IT Planners Need to Know About the Nature of Programming Eric Roberts Professor of Computer Science Stanford University.

Slides:



Advertisements
Similar presentations
1 Introduction to Software Engineering Rajkumar Buyya Grid Computing and Distributed Systems Lab Dept. of Computer Science and Software Engineering University.
Advertisements

A small taste of inferential statistics
Ch.1 Introduction to Software Engineering The Evolution 1.1 The Evolving Role of Software 1/15 In the early days: User Computer Software = Place a sequence.
Engineering Education in Saudi Arabia: Problems and Solutions
© Dr. Ernest CachiaSlide 1 Consider the nature of a computer as a tool –Non conventional in that it’s universal –Reasons for it being so (separation.
Copyright © Allyn & Bacon (2007) Research Methodology: An Evolving Discipline Graziano and Raulin Research Methods: Chapter 15 This multimedia product.
Systems Analysis and Design 9th Edition
Gorilla Systems Engineering versus Guerilla Systems Engineering Keith A. Taggart, PhD James Willis Steve Dam, PhD Presented to the INCOSE SE DC Meeting,
Introduction and Overview
SOFTWARE QUALITY ASSURANCE Maltepe University Faculty of Engineering SE 410.
The Mythical Man-Month by Fred Brooks (I) Published 1975, Republished 1995 Experience managing the development of OS/360 in Central Argument –Large.
Motivation Why study Software Engineering ?. What is Engineering ? 2 Engineering (Webster) – The application of scientific and mathematical principles.
© 2007 Pearson Education Inc., Upper Saddle River, NJ. All rights reserved.1 Computer Networks and Internets with Internet Applications, 4e By Douglas.
CS CS 5150 Software Engineering Lecture 27 People 2.
Professional Practice and Computing Curricula 2001 Eric Roberts Professor of Computer Science Senior Associate Dean of Engineering Stanford University.
Developing Ideas for Research and Evaluating Theories of Behavior
Applied Software Project Management 1 Introduction Dr. Mengxia Zhu Computer Science Department Southern Illinois University Carbondale.
What Journalists Need to Know Eric Roberts Professor of Computer Science Knight Fellowship Program Stanford University January 6, 2010 Journalistopia.com.
Copyright © 2009 Pearson Addison-Wesley. All rights reserved. Chapter 17 New Classical Macro Confronts New Keynesian Macro.
ENGINEERING YOUR FUTURE
Lecture 1.
Programming. Software is made by programmers Computers need all kinds of software, from operating systems to applications People learn how to tell the.
Chapter 1: Introduction to Organizational Behavior.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Chapter 27 Software Change.
CS4/542- Software Engineering  Software Design and Development  Required Text -- Code Complete by Steve McConnell  (Focuses on the problems of designing.
Gerardo Schneider Department of Informatics University of Oslo Oslo, March 2009.
OverviewOverview – Preparation – Day in the Life – Earnings – Employment – Career Path Forecast – ResourcesPreparationDay in the LifeEarningsEmploymentCareer.
Copyright © Cengage Learning. All rights reserved. 8 Tests of Hypotheses Based on a Single Sample.
Modul ke: Fakultas Program Studi Writing 2 Subandi,S. Pd 10 Perencanaan dan Desain Teknik Sipil The Academic Writing Course focuses on development of academic.
Lecture 1 What is Modeling? What is Modeling? Creating a simplified version of reality Working with this version to understand or control some.
Why is software engineering worth studying?  Demand for software is growing dramatically  Software costs are growing per system  Many projects have.
1 Welcome to CS 362 Applied Software Engineering What happens after (and during) design? Testing, debugging, maintaining programs Lessons for software.
1 No Silver Bullet Brooks rides again…. 2 Essential Difficulties What are these “essential difficulties” that Brooks is referring to? Complexity Conformity.
ITGD4207 Operations Research
Government and Public Policy
1 Chapter Nine Engineering Your Career. 2 Engineering Careers  Electrical and computer engineers find employment in: 1.Private industry. 2.Government.
Advances in Human Resource Development and Management Course code: MGT 712 Lecture 11.
©Ian Sommerville 2000 Software Engineering, 6th edition. Chapter 27Slide 1 Software change l Managing the processes of software system change.
This chapter is extracted from Sommerville’s slides. Text book chapter
CS 4001Mary Jean Harrold 1 Can We Trust the Computer?
Chapter 1: Introduction Omar Meqdadi SE 2730 Lecture 1 Department of Computer Science and Software Engineering University of Wisconsin-Platteville.
© Mujtaba, 2007 Workforce Diversity Management Dr. Bahaudin G. Mujtaba.
Software Engineering Chapter 3 CPSC Pascal Brent M. Dingle Texas A&M University.
SOFTWARE ENGINEERING Chapter 1. Introduction We can’t run the modern world without software. Why? Discussion….
©Ian Sommerville 2004 Software Engineering. Chapter 21Slide 1 Chapter 21 Software Evolution.
Lecture 4. Software Engineering Body of Knowledge SWEBOK  Articulating a body of knowledge is an essential step toward developing a profession because.
Slide B-1 Case 1 You have just received surprising information that requires your group to take a new approach right away. You know the group members are.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution 1.
Sight Words.
MASS MEDIA The aim of this tutorial is to help you learn to identify and evaluate mass media strategies and methods.
CS223: Software Engineering Lecture 2: Introduction to Software Engineering.
Chapter 1- Introduction Lecture 1. Topics covered  Professional software development  What is meant by software engineering.  Software engineering.
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 21 Slide 1 Software evolution.
An Overview of HRM & SHRM
©Ian Sommerville 2004Software Engineering, 7th edition. Chapter 1 Slide 1 An Introduction to Software Engineering.
The inference and accuracy We learned how to estimate the probability that the percentage of some subjects in the sample would be in a given interval by.
An Overview of HRM & SHRM Chapter 1 References: Human Resource Management, 13 Edition, Wayne Dean Mondy Strategic Human Resource Management by Jeffrey.
INTRODUCTION CSE 470 : Software Engineering. Goals of Software Engineering To produce software that is absolutely correct. To produce software with minimum.
Abstract  An abstract is a concise summary of a larger project (a thesis, research report, performance, service project, etc.) that concisely describes.
Can We Trust the Computer? FIRE, Chapter 4. What Can Go Wrong? What are the risks and reasons for computer failures? How much risk must or should we accept?
CompSci 280 S Introduction to Software Development
Paul Ammann & Jeff Offutt
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Software Project Management
Software Engineering - CSC 323
The Effects on Development
Software Engineering (CSE 314)
Introduction Edited by Enas Naffar using the following textbooks: - A concise introduction to Software Engineering - Software Engineering for students-
Expands the Qualified Employee Pool Improves the Bottom Line
Entrepreneurship and Small Business Management
Presentation transcript:

Labor Dynamics of the IT Economy What IT Planners Need to Know About the Nature of Programming Eric Roberts Professor of Computer Science Stanford University U.S. State Department IT Strategy Conference San Francisco November 18, 2004

General Thesis In terms of the dynamics of work in the field, computing is different from most engineering domains. Assumptions that hold true in other, more traditional disciplines often turn out to be wrong when applied to computing, particularly when a project requires a significant software-development effort. Understanding these differences is essential to the task of formulating effective technology policy.

General Thesis In terms of the dynamics of work in the field, computing is different from most engineering domains. Assumptions that hold true in other, more traditional disciplines often turn out to be wrong when applied to computing, particularly when a project requires a significant software-development effort. Understanding these differences is essential to the task of formulating effective technology policy. My intent in this session is to provide an overview of those characteristics of computing that policymakers need to comprehend in order to make appropriate decisions.

Bridging Cultural Gaps Once upon a time, a group of farmers asked a mathematician to help them increase the yield of their dairy herd.

Bridging Cultural Gaps Once upon a time, a group of farmers asked a mathematician to help them increase the yield of their dairy herd. The report began with the words: The mathematician went away to study the problem and came back after a time with a report.

Bridging Cultural Gaps Once upon a time, a group of farmers asked a mathematician to help them increase the yield of their dairy herd. The report began with the words: The mathematician went away to study the problem and came back after a time with a report. Assuming a spherical cow...

Bridging Cultural Gaps Once upon a time, a group of farmers asked a mathematician to help them increase the yield of their dairy herd. The report began with the words: The mathematician went away to study the problem and came back after a time with a report. Assuming a spherical cow... Of course, if a mathematician were to ask farmers for advice, the results might be even more laughable, such as π = 3.

An Illustrative Example Because of the preconceptions they have from other disciplines, university administrators often have considerably difficulty understanding the dynamics of faculty recruitment in computer science. If I quote the ACM finding that There is one candidate for every three faculty positions. many listeners hear this statistic backwards. Deans and presidents who are used to having hundreds of applicants for any open job show signs of disbelief and ask: Are there really only three candidates per position? The idea that there might be fewer applicants than positions simply does not register.

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. Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is huge. Experienced programmers differ in productivity by several orders of magnitude. Economic, social, and political factors are more important than technological progress in determining how computing evolves.

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. Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is huge. Experienced programmers differ in productivity by several orders of magnitude. Economic, social, and political factors are more important than technological progress in determining how computing evolves.

The Difficulty of Software People familiar with both software engineering and older engineering disciplines observe that the state of the art in software is significantly behind that in other areas of engineering. When most engineering products have been completed, tested, and sold, it is reasonable to expect that the product design is correct and that it will work reliably. With software products, it is usual to find that the software has major “bugs” and does not work reliably for some users.

NMD Software Is Particularly Hard Specifying, generating, testing, and maintaining the software for a battle management system will be a task that far exceeds in complexity and difficulty any that has yet been accomplished in the production of civil or military software systems.

What Makes Software Different?

Computers are used to solve hard problems.

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team.

Brooks’s Law “Adding manpower to a late software project makes it later.” — Fred Brooks, The Mythical Man Month

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team. Bugs are everpresent and inevitable.

The Inevitability of Bugs Although programming techniques have improved immensely since the early days, the process of finding and correcting errors in programming known graphically—if inelegantly—as debugging still remains a most difficult, confused and unsatisfactory operation.... Although we are happy to pay lip-service to the adage that to err is human, most of us like to make a small private reservation about our own performance on special occasions when we really try. It is somewhat deflating to be shown publicly and incontrovertibly by a machine that even when we do try, we in fact make just as many mistakes as other people. If your pride cannot recover from this blow, you will never make a programmer. Christopher Strachey, Scientific American, 1966 —

Even in National Missile Defense Simply because of its inevitable large size, the software capable of performing the battle management task for strategic defense will contain errors. All systems of useful complexity contain software errors. Eastport report on Computing in Support of Battle Management, December 1985 —

The Space Shuttle Laser Test On June 19, 1985, one of the first Star Wars tests failed because the altitude of a ground-based laser was entered in feet instead of nautical miles. [New York Times, July 20, 1985] Mirror

The Space Shuttle Laser Test On June 19, 1985, one of the first Star Wars tests failed because the altitude of a ground-based laser was entered in feet instead of nautical miles. [New York Times, July 20, 1985] They got it right the second time around.

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team. Bugs are everpresent and inevitable. Software systems are discrete rather than continuous: it is impossible to “overengineer” such systems to ensure safety.

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team. Bugs are everpresent and inevitable. Software systems are discrete rather than continuous: it is impossible to “overengineer” such systems to ensure safety. Software systems are inherently chaotic: small changes in initial conditions generate massive changes in the results.

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team. Bugs are everpresent and inevitable. Software systems are discrete rather than continuous: it is impossible to “overengineer” such systems to ensure safety. Software systems are inherently chaotic: small changes in initial conditions generate massive changes in the results. The discipline of software engineering has not had centuries in which to mature.

Computing Is a New Discipline We find it a bit troublesome to be discussing whether radical advancements in software technology would enhance the quality of a new defense system, when we are aware that many of the DoD’s biggest software development contractors are presently literally decades behind the state of the art—an art that is only a few decades old. Eastport report on Computing in Support of Battle Management, December 1985 —

What Makes Software Different? Computers are used to solve hard problems. Software has high “system complexity” and is therefore difficult to distribute among members of a large team. Bugs are everpresent and inevitable. Software systems are discrete rather than continuous: it is impossible to “overengineer” such systems to ensure safety. Software systems are inherently chaotic: small changes in initial conditions generate massive changes in the results. The discipline of software engineering has not had centuries in which to mature.

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. Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is huge. Experienced programmers differ in productivity by several orders of magnitude. Economic, social, and political factors are more important than technological progress in determining how computing evolves.

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.

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.

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. Many employers in Silicon Valley argue that productivity variance is even higher today, perhaps as much as 100 to 1.

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. Many employers in Silicon Valley argue that productivity variance is even higher today, perhaps as much as 100 to 1.

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. Software development requires people with an unusual combination of skills. Those people are in short supply, but their economic value is huge. Experienced programmers differ in productivity by several orders of magnitude. Economic, social, and political factors are more important than technological progress in determining how computing evolves.

The Importance of Economics Low distribution costs. Software is hugely expensive to produce, but essentially free to duplicate and distribute. Because development costs can be distributed across a larger base, big players have a distinct advantage. Economics has more impact on directions in modern computing than technology does. The most significant factors are:

The Importance of Economics Low distribution costs. Software is hugely expensive to produce, but essentially free to duplicate and distribute. Because development costs can be distributed across a larger base, big players have a distinct advantage. Network externalities. The value of software increases with the number of people using that software. Economics has more impact on directions in modern computing than technology does. The most significant factors are:

The Importance of Economics Low distribution costs. Software is hugely expensive to produce, but essentially free to duplicate and distribute. Because development costs can be distributed across a larger base, big players have a distinct advantage. Network externalities. The value of software increases with the number of people using that software. Shortage of highly skilled labor. The most productive programmers are in high demand, but short supply. Economics has more impact on directions in modern computing than technology does. The most significant factors are:

The Importance of Economics Low distribution costs. Software is hugely expensive to produce, but essentially free to duplicate and distribute. Because development costs can be distributed across a larger base, big players have a distinct advantage. Network externalities. The value of software increases with the number of people using that software. Shortage of highly skilled labor. The most productive programmers are in high demand, but short supply. High cost-effectiveness. Software tends to be remarkably useful, even when bugs exist. Economics has more impact on directions in modern computing than technology does. The most significant factors are:

The Importance of Economics Low distribution costs. Software is hugely expensive to produce, but essentially free to duplicate and distribute. Because development costs can be distributed across a larger base, big players have a distinct advantage. Network externalities. The value of software increases with the number of people using that software. Shortage of highly skilled labor. The most productive programmers are in high demand, but short supply. High cost-effectiveness. Software tends to be remarkably useful, even when bugs exist. Economics has more impact on directions in modern computing than technology does. The most significant factors are:

The Mythical Man-Month Frederick P. Brooks, Jr., The Mythical Man-Month: Essays on Software Engineering, second edition, Reading, MA: Addison-Wesley, Originally published in 1975, The Mythical Man-Month remains the classic text on software engineering and its importance. Despite the fact that Brooks is an expert programmer with a background in both industry and academia, this book is easily accessible to a popular audience.

The Sachertorte Algorithm John Shore, The Sachertorte Algorithm and Other Antidotes to Computer Anxiety, New York: Penguin Books, This book is a highly accessible introduction to the complexities and pitfalls of software development.

Normal Accidents Charles Perrow, Normal Accidents: Living with High-Risk Technologies, New York: Basic Books, Although this book does not focus specifically on programming—and indeed does not include software or programming in its index—the issues that it raises are critical to an understanding of why complex technological systems fail.

Psychology of Computer Programming Gerald M. Weinberg, Psychology of Computer Programming, New York: Dorset House, From the time it first appeared in 1971, this book has offered the best popular description of the mental working processes of programmers. The 1998 edition includes reflections on how well each chapter has held up over time.

Computer Related Risks Peter G. Neumann, Computer Related Risks, Reading, MA: Addison-Wesley, This book presents a summary of the most compelling computer-related failures. Peter Neumann is best known as the moderator of the Internet Risks Forum available at