What Journalists Need to Know Eric Roberts Professor of Computer Science Knight Fellowship Program Stanford University January 6, 2010

  • View
    213

  • Download
    0

Embed Size (px)

Text of What Journalists Need to Know Eric Roberts Professor of Computer Science Knight Fellowship Program...

  • Slide 1
  • What Journalists Need to Know Eric Roberts Professor of Computer Science Knight Fellowship Program Stanford University January 6, 2010 Journalistopia.com Danny Sanchez about Computing
  • Slide 2
  • Journalism Faces Enormous Challenges
  • Slide 3
  • No one in this room needs me to tell them that the entire profession of journalism is under assault in the Digital Age. I believe that the unintended consequences of the growth of digital technologies and the social patterns those technologies encourage represent one of the most important issues facing our world today. This quarter, Im using that issue as a focus for the senior seminar in Science, Technology, and Society: STS 200. Wired Worlds: Promise and Peril in the Digital Age. Over the two decades since the creation of the World Wide Web, communication networksalong with the social networks built on top of that technologyhave changed our world in profound ways. This version of the STS Senior Colloquium will focus on how modern networking technology affects our society in both positive and negative ways. Today, I want to talk about something slightly different...
  • Slide 4
  • What Journalists Need to Know Eric Roberts Professor of Computer Science Knight Fellowship Program Stanford University January 6, 2010 about the Practice of Computing
  • Slide 5
  • 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 reporting on the industry or formulating technology policy. My intent in todays talk is to provide an overview of those characteristics of computing that journalists and policymakers need to comprehend in order to do their jobs effectively.
  • Slide 6
  • 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 to some extent because of those advances), 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. Economic, social, and political factors are more important than technology in determining how computing evolves. 4.
  • Slide 7
  • 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 to some extent because of those advances), 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. Economic, social, and political factors are more important than technology in determining how computing evolves. 4.
  • Slide 8
  • Essential 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.... 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.
  • Slide 9
  • What Makes Software Different? Computers are used to solve hard problems, which means that the difficulty is typically intrinsic to the application. Software has high system complexity and is therefore difficult to distribute among members of a large team.
  • Slide 10
  • Brookss Law Adding manpower to a late software project makes it later. Fred Brooks, The Mythical Man Month
  • Slide 11
  • What Makes Software Different? Computers are used to solve hard problems, which means that the difficulty is typically intrinsic to the application. Software has high system complexity and is therefore difficult to distribute among members of a large team. Software systems are discrete rather than continuous: there is no way to overengineer such systems to ensure correctness. Software systems are inherently chaotic: small changes in initial conditions generate massive changes in the results. Bugs are omnipresent and inevitable.
  • Slide 12
  • The Discovery of Debugging Maurice Wilkes, lecture on The Design and Use of the EDSAC, September 23, 1979 As soon as we started programming, we found to our surprise that it wasnt as easy to get programs right as we had thought. Debugging had to be discovered. I can remember the exact instant when I realized that a large part of my life from then on was going to be spent in finding mistakes in my own programs. Maurice Wilkes, 1913-
  • Slide 13
  • The Inevitability of Bugs Christopher Strachey, Scientific American, 1966 Although programming techniques have improved immensely since the early days, the process of finding and correcting errors in programming known graphicallyif inelegantlyas 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. Department of Defense, The Eastport report on Computing in Support of Battle Management, December 1985 Simply because of its inevitable large size, the software capable of performing the battle management task for strategic defense will contain errors. 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.
  • Slide 14
  • 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 to some extent because of those advances), 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. Economic, social, and political factors are more important than technology in determining how computing evolves. 4.
  • Slide 15
  • The March of Progress 266 pages 274 pages 911 pages 1536 pages
  • Slide 16
  • Sobering Thoughts There are more public methods in Javas standard package hierarchies than there are words in Jensen and Wirths Pascal User Manual and Report. Thus, the amount of explanation once deemed sufficient to teach the standard introductory programming language is 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. Don Knuth, October 11, 2006 If I had had to learn C ++, I would have majored in music.
  • Slide 17
  • 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 to some extent because of those advances), 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. Economic, social, and political factors are more important than technology in determining how computing evolves. 4.
  • Slide 18
  • Variations in Programmer Productivity In 1968, a study by Sackman, Erikson, and Grant 1 revealed that programmers with the same level of experience exhibit variations of more than 20 to 1 in the time required to solve particular prog