WEBVTT 00:00:19.360 --> 00:00:22.336 How many of you have used an electronic spreadsheet, 00:00:22.360 --> 00:00:23.840 like Microsoft Excel? 00:00:24.840 --> 00:00:26.096 Very good. 00:00:26.120 --> 00:00:30.696 Now, how many of you have run a business with a spreadsheet by hand, 00:00:30.720 --> 00:00:33.800 like my dad did for his small printing business in Philadelphia? 00:00:34.760 --> 00:00:35.920 A lot less. 00:00:36.620 --> 00:00:39.220 Well, that's the way iat was done for hundreds of years. 00:00:40.180 --> 00:00:43.196 In early 1978, I started working on an idea 00:00:43.220 --> 00:00:45.620 that eventually became VisiCalc. 00:00:46.180 --> 00:00:47.836 And the next year it shipped, 00:00:47.860 --> 00:00:51.139 running on something new called an Apple II personal computer. 00:00:51.940 --> 00:00:55.996 You could tell that things had really changed when, six years later, 00:00:56.020 --> 00:00:58.196 the Wall Street Journal ran an editorial 00:00:58.220 --> 00:01:01.500 that assumed you knew what VisiCalc was and maybe even were using it. 00:01:02.460 --> 00:01:05.836 Steve Jobs back in 1990 00:01:05.860 --> 00:01:09.100 said that "spreadsheets propelled the industry forward." 00:01:09.580 --> 00:01:13.500 "VisiCalc propelled the success of Apple more than any other single event." 00:01:14.140 --> 00:01:15.300 On a more personal note, 00:01:16.300 --> 00:01:19.436 Steve said, "If VisiCalc had been written for some other computer, 00:01:19.460 --> 00:01:21.660 you'd be interviewing somebody else right now." 00:01:22.060 --> 00:01:27.647 So, VisiCalc was instrumental in getting personal computers on business desks. 00:01:27.960 --> 00:01:29.120 How did it come about? 00:01:29.880 --> 00:01:32.800 What was it? What did I go through to make it be what it was? 00:01:34.120 --> 00:01:39.456 Well, I first learned to program back in 1966, when I was 15 -- 00:01:39.480 --> 00:01:41.720 just a couple months after this photo was taken. 00:01:42.400 --> 00:01:45.360 Few high schoolers had access to computers in those days. 00:01:45.760 --> 00:01:49.556 But through luck and an awful lot of perseverance, 00:01:49.580 --> 00:01:51.820 I was able to get computer time around the city. 00:01:52.700 --> 00:01:57.898 After sleeping in the mud at Woodstock, I went off to MIT to go to college, 00:01:58.020 --> 00:02:01.100 where to make money, I worked on the Multics Project. 00:02:01.820 --> 00:02:06.383 Multics was a trailblazing interactive time-sharing system. 00:02:06.860 --> 00:02:10.036 Have you heard of the Linux and Unix operating systems? 00:02:10.060 --> 00:02:11.300 They came from Multics. 00:02:11.820 --> 00:02:14.116 I worked on the Multics versions 00:02:14.140 --> 00:02:17.956 of what are known as interpreted computer languages, 00:02:17.980 --> 00:02:20.436 that are used by people in noncomputer fields 00:02:20.460 --> 00:02:23.652 to do their calculations while seated at a computer terminal. 00:02:24.860 --> 00:02:27.116 After I graduated from MIT, 00:02:27.140 --> 00:02:30.414 I went to work for Digital Equipment Corporation. 00:02:31.320 --> 00:02:34.821 At DEC, I worked on software 00:02:34.845 --> 00:02:37.939 for the new area of computerized typesetting. 00:02:38.300 --> 00:02:42.636 I helped newspapers replace their reporters' typewriters 00:02:43.060 --> 00:02:44.260 with computer terminals. 00:02:44.780 --> 00:02:45.996 I'd write software 00:02:46.020 --> 00:02:49.716 and then I'd go out in the field to places like the Kansas City Star, 00:02:49.740 --> 00:02:52.156 where I would train users and get feedback. 00:02:52.180 --> 00:02:54.036 This was real-world experience 00:02:54.060 --> 00:02:57.300 that is quite different than what I saw in the lab at MIT. 00:02:58.780 --> 00:03:01.396 After that, I was project leader 00:03:01.420 --> 00:03:06.220 of the software for DEC's first word processor, again a new field. 00:03:06.620 --> 00:03:12.116 Like with typesetting, the important thing was crafting a user interface 00:03:12.140 --> 00:03:16.220 that was both natural and efficient for noncomputer people to use. 00:03:18.260 --> 00:03:22.236 After I was at DEC, I went to work for a small company 00:03:22.260 --> 00:03:28.380 that made microprocessor-based electronic cash registers for the fast-food industry. 00:03:29.260 --> 00:03:32.956 But I had always wanted to start a company with my friend Bob Frankston 00:03:32.980 --> 00:03:35.356 that I met on the Multics project at MIT. 00:03:35.380 --> 00:03:39.076 So I decided to go back to school to learn as much as I could about business. 00:03:39.100 --> 00:03:41.876 And in the fall of 1977, 00:03:41.900 --> 00:03:44.900 I entered the MBA program at Harvard Business School. 00:03:45.740 --> 00:03:48.236 I was one of the few percentage of students 00:03:48.260 --> 00:03:51.100 who had a background in computer programming. 00:03:51.980 --> 00:03:55.156 There's a picture of me from the yearbook sitting in the front row. 00:03:55.180 --> 00:03:56.196 (Laughter) 00:03:56.220 --> 00:03:58.836 Now, at Harvard, we learned by the case method. 00:03:58.860 --> 00:04:00.796 We'd do about three cases a day. 00:04:00.820 --> 00:04:04.813 Cases consist of up to a few dozen pages 00:04:04.837 --> 00:04:07.144 describing a particular business situation. 00:04:08.140 --> 00:04:13.171 They often have exhibits, and exhibits often have words and numbers 00:04:13.195 --> 00:04:16.355 laid out in ways that make sense for the particular situation. 00:04:16.860 --> 00:04:18.796 They're usually all somewhat different. 00:04:18.820 --> 00:04:20.036 Here's my homework. 00:04:20.060 --> 00:04:23.236 Again, numbers, words, laid out in ways that made sense. 00:04:23.260 --> 00:04:27.340 Lots of calculations -- we got really close to our calculators. 00:04:27.740 --> 00:04:29.620 In fact, here's my calculator. 00:04:31.400 --> 00:04:33.976 For Halloween, I went dressed up as a calculator. 00:04:34.000 --> 00:04:35.808 (Laughter) 00:04:36.985 --> 00:04:40.176 At the beginning of each class, the professor would call on somebody 00:04:40.200 --> 00:04:41.479 to present the case. 00:04:42.279 --> 00:04:45.056 What they would do is they would explain what was going on 00:04:45.080 --> 00:04:48.816 and then dictate information that the professor would transcribe 00:04:48.840 --> 00:04:51.745 onto the many motorized blackboards in the front of the class, 00:04:51.769 --> 00:04:53.296 and then we'd have a discussion. 00:04:53.320 --> 00:04:57.776 One of the really frustrating things is when you've done all your homework, 00:04:57.800 --> 00:05:00.816 you come in the next day only to find out that you made an error 00:05:00.840 --> 00:05:03.376 and all of the other numbers you did were wrong. 00:05:03.400 --> 00:05:05.176 And you couldn't participate as well. 00:05:05.200 --> 00:05:07.440 And we were marked by class participation. 00:05:08.520 --> 00:05:13.440 So, sitting there with 87 other people in the class, I got to daydream a lot. 00:05:14.480 --> 00:05:18.336 Most programmers in those days worked on mainframes, 00:05:18.360 --> 00:05:24.696 building things like inventory systems, payroll systems and bill-paying systems. 00:05:24.720 --> 00:05:27.216 But I had worked on interactive word processing 00:05:27.240 --> 00:05:29.336 and on-demand personal computation. 00:05:29.360 --> 00:05:34.056 Instead of thinking about paper printouts and punch cards, 00:05:34.080 --> 00:05:36.856 I imagined a magic blackboard 00:05:36.880 --> 00:05:40.256 that if you erased one number and wrote a new thing in, 00:05:40.280 --> 00:05:43.136 all of the other numbers would automatically change, 00:05:43.160 --> 00:05:44.920 like word processing with numbers. 00:05:45.800 --> 00:05:50.040 I imagined that my calculator had mouse hardware on the bottom of it 00:05:50.440 --> 00:05:53.400 and a head-up display, like in a fighter plane. 00:05:53.920 --> 00:05:58.056 And I could type some numbers in, and circle it, and press the sum button. 00:05:58.080 --> 00:06:01.816 And right in the middle of a negotiation I'd be able to get the answer. 00:06:01.840 --> 00:06:04.840 Now I just had to take my fantasy and turn it into reality. 00:06:05.840 --> 00:06:08.280 My father taught me about prototyping. 00:06:08.760 --> 00:06:10.376 He showed me mock-ups 00:06:10.400 --> 00:06:13.736 that he'd make to figure out the placement on the page 00:06:13.760 --> 00:06:16.296 for the things for brochures that he was printing. 00:06:16.320 --> 00:06:19.256 And he'd use it to get feedback from customers 00:06:19.280 --> 00:06:22.880 and OKs before he sent the job off to the presses. 00:06:23.640 --> 00:06:28.736 The act of making a simple, working version of what you're trying to build 00:06:28.760 --> 00:06:31.080 forces you to uncover key problems. 00:06:31.920 --> 00:06:36.320 And it lets you find solutions to those problems much less expensively. 00:06:36.920 --> 00:06:39.160 So I decided to build a prototype. 00:06:39.960 --> 00:06:44.536 I went to a video terminal connected to Harvard's time-sharing system 00:06:44.560 --> 00:06:46.056 and got to work. 00:06:46.080 --> 00:06:49.336 One of the first problems that I ran into was: 00:06:49.360 --> 00:06:52.040 How do you represent values in formulas? 00:06:52.536 --> 00:06:53.896 Let me show you what I mean. 00:06:55.200 --> 00:06:58.376 I thought that you would point somewhere, 00:06:58.400 --> 00:07:01.496 type in some words, then type in some somewhere else, 00:07:01.520 --> 00:07:05.044 put in some numbers and some more numbers, point where you want the answer. 00:07:05.432 --> 00:07:08.656 And then point to the first, press minus, point to the second, 00:07:08.680 --> 00:07:09.880 and get the result. 00:07:10.560 --> 00:07:13.661 The problem was: What should I put in the formula? 00:07:14.000 --> 00:07:16.620 It had to be something the computer knew what to put in. 00:07:16.644 --> 00:07:18.336 And if you looked at the formula, 00:07:18.360 --> 00:07:21.360 you needed to know where on the screen it referred to. 00:07:22.040 --> 00:07:25.136 So the first thing I thought was the programmer way of doing it. 00:07:25.160 --> 00:07:27.066 The first time you pointed to somewhere, 00:07:27.090 --> 00:07:29.770 the computer would ask you to type in a unique name. 00:07:30.960 --> 00:07:34.736 It became pretty clear pretty fast that that was going to be too tedious. 00:07:34.760 --> 00:07:38.000 The computer had to automatically make up the name and put it inside. 00:07:38.800 --> 00:07:43.160 So I thought, why not make it be the order in which you create them? 00:07:43.680 --> 00:07:46.176 I tried that. Value 1, value 2. 00:07:46.200 --> 00:07:48.962 Pretty quickly I saw that if you had more than a few values 00:07:48.986 --> 00:07:51.496 you'd never remember on the screen where things were. 00:07:51.520 --> 00:07:56.816 Then I said, why not instead of allowing you to put values anywhere, 00:07:56.840 --> 00:07:58.440 I'll restrict you to a grid? 00:07:58.920 --> 00:08:01.318 Then when you pointed to a cell, 00:08:01.342 --> 00:08:04.062 the computer could put the row and column in as a name. 00:08:05.040 --> 00:08:11.216 And, if I did it like a map and put ABC across the top and numbers along the side, 00:08:11.240 --> 00:08:14.136 if you saw B7 in a formula, 00:08:14.160 --> 00:08:16.360 you'd know exactly where it was on the screen. 00:08:17.040 --> 00:08:20.464 And if you had to type the formula in yourself, you'd know what to do. 00:08:21.110 --> 00:08:24.190 Restricting you to a grid helped solve my problem. 00:08:24.870 --> 00:08:30.470 It also opened up new capabilities, like the ability to have ranges of cells. 00:08:31.030 --> 00:08:32.606 But it wasn't too restrictive -- 00:08:32.630 --> 00:08:36.950 you could still put any value, any formula, in any cell. 00:08:37.789 --> 00:08:41.630 And that's the way we do it to this day, almost 40 years later. 00:08:42.779 --> 00:08:46.446 My friend Bob and I decided that we were going to build this product together. 00:08:46.890 --> 00:08:51.306 I did more work figuring out exactly how the program was supposed to behave. 00:08:51.530 --> 00:08:54.786 I wrote a reference card to act as documentation. 00:08:54.810 --> 00:08:59.586 It also helped me ensure that the user interface I was defining 00:08:59.610 --> 00:09:03.089 could be explained concisely and clearly to regular people. 00:09:03.810 --> 00:09:09.226 Bob worked in the attic of the apartment he rented in Arlington, Massachusetts. 00:09:09.250 --> 00:09:10.970 This is the inside of the attic. 00:09:12.530 --> 00:09:15.306 Bob bought time on the MIT Multics System 00:09:15.330 --> 00:09:18.050 to write computer code on a terminal like this. 00:09:18.690 --> 00:09:22.186 And then he would download test versions to a borrowed Apple II 00:09:22.210 --> 00:09:25.466 over a phone line using an acoustic coupler, 00:09:25.490 --> 00:09:26.650 and then we would test. 00:09:27.210 --> 00:09:31.930 For one of these tests I prepared for this case about the Pepsi Challenge. 00:09:33.010 --> 00:09:35.930 Print wasn't working yet, so I had to copy everything down. 00:09:36.770 --> 00:09:39.186 Save wasn't working, so every time it crashed, 00:09:39.210 --> 00:09:42.210 I had to type in all of the formulas again, over and over again. 00:09:42.530 --> 00:09:46.506 The next day in class, I raised my hand; I got called on, and I presented the case. 00:09:46.530 --> 00:09:50.106 I did five-year projections. I did all sorts of different scenarios. 00:09:50.130 --> 00:09:53.810 I aced the case. VisiCalc was already useful. 00:09:54.450 --> 00:09:57.050 The professor said, "How did you do it?" 00:09:57.759 --> 00:10:00.426 Well, I didn't want to tell him about our secret program. 00:10:00.450 --> 00:10:01.970 (Laughter) 00:10:02.490 --> 00:10:04.346 So I said, "I took this and added this 00:10:04.370 --> 00:10:06.466 and multiplied by this and subtracted that." 00:10:06.490 --> 00:10:08.586 He said, "Well, why didn't you use a ratio?" 00:10:08.610 --> 00:10:11.626 I said, "Hah! A ratio -- that wouldn't have been as exact!" 00:10:11.650 --> 00:10:14.226 What I didn't say was, "Divide isn't working yet." 00:10:14.250 --> 00:10:17.346 (Laughter) 00:10:17.370 --> 00:10:21.226 Eventually, though, we did finish enough of VisiCalc 00:10:21.250 --> 00:10:23.090 to be able to show it to the public. 00:10:23.730 --> 00:10:25.706 My dad printed up a sample reference card 00:10:25.730 --> 00:10:27.730 that we could use as marketing material. 00:10:28.570 --> 00:10:34.346 In June of 1979, our publisher announced VisiCalc to the world, 00:10:34.370 --> 00:10:38.490 in a small booth at the giant National Computer Conference in New York City. 00:10:39.090 --> 00:10:43.250 The New York Times had a humorous article about the conference. 00:10:43.770 --> 00:10:46.226 "The machines perform what seem religious rites ... 00:10:46.250 --> 00:10:49.811 Even as the believers gather, 00:10:49.835 --> 00:10:52.931 the painters in the Coliseum sign room are adding to the pantheon, 00:10:52.955 --> 00:10:56.126 carefully lettering 'VISICALC' in giant black on yellow. 00:10:56.150 --> 00:10:57.966 All hail VISICALC!" 00:10:57.990 --> 00:11:01.566 (Gasp) New York Times: "All hail VISICALC." 00:11:01.590 --> 00:11:03.086 (Laughter) 00:11:03.110 --> 00:11:07.206 That was the last mention of the electronic spreadsheet 00:11:07.230 --> 00:11:11.127 in the popular business press for about two years. 00:11:11.151 --> 00:11:12.881 Most people didn't get it yet. 00:11:13.370 --> 00:11:14.570 But some did. 00:11:15.178 --> 00:11:19.378 In October of 1979, we shipped VisiCalc. 00:11:20.250 --> 00:11:22.488 It came in packaging that looked like this. 00:11:23.090 --> 00:11:25.570 And it looked like this, running on the Apple II. 00:11:26.370 --> 00:11:28.330 And the rest, as they say, is history. 00:11:28.730 --> 00:11:30.826 Now, there's an awful lot more to this story, 00:11:30.850 --> 00:11:32.906 but that'll have to wait for another day. 00:11:32.930 --> 00:11:35.170 One thing, though, Harvard remembers. 00:11:35.770 --> 00:11:36.970 Here's that classroom. 00:11:37.610 --> 00:11:41.050 They put up a plaque to commemorate what happened there. 00:11:42.010 --> 00:11:49.010 (Applause) 00:11:50.770 --> 00:11:53.706 But it also serves as a reminder 00:11:53.730 --> 00:12:00.426 that you, too, should take your unique backgrounds, skills and needs 00:12:00.450 --> 00:12:05.706 and build prototypes to discover and work out the key problems, 00:12:05.730 --> 00:12:07.850 and through that, change the world. 00:12:08.610 --> 00:12:09.826 Thank you. 00:12:09.850 --> 00:12:14.611 (Applause)