1 00:00:00,760 --> 00:00:03,735 How many of you have used an electronic spreadsheet, 2 00:00:03,760 --> 00:00:05,240 like Microsoft Excel? 3 00:00:06,240 --> 00:00:07,496 Very good. 4 00:00:07,520 --> 00:00:12,096 Now, how many of you have run a business with a spreadsheet by hand, 5 00:00:12,120 --> 00:00:15,200 like my dad did for his small printing business in Philadelphia? 6 00:00:16,160 --> 00:00:17,320 A lot less. 7 00:00:17,920 --> 00:00:20,520 Well, that's the way it was done for hundreds of years. 8 00:00:21,480 --> 00:00:24,496 In early 1978, I started working on an idea 9 00:00:24,520 --> 00:00:26,920 that eventually became VisiCalc. 10 00:00:27,480 --> 00:00:29,136 And the next year it shipped 11 00:00:29,160 --> 00:00:32,439 running on something new called an Apple II personal computer. 12 00:00:33,240 --> 00:00:37,296 You could tell that things had really changed when, six years later, 13 00:00:37,320 --> 00:00:39,496 the Wall Street Journal ran an editorial 14 00:00:39,520 --> 00:00:42,800 that assumed you knew what VisiCalc was and maybe even were using it. 15 00:00:43,760 --> 00:00:46,720 Steve Jobs back in 1990 16 00:00:47,160 --> 00:00:50,400 said that "spreadsheets propelled the industry forward." 17 00:00:50,880 --> 00:00:54,800 "VisiCalc propelled the success of Apple more than any other single event." 18 00:00:55,440 --> 00:00:56,600 On a more personal note, 19 00:00:57,600 --> 00:01:00,736 Steve said, "If VisiCalc had been written for some other computer, 20 00:01:00,760 --> 00:01:02,960 you'd be interviewing somebody else right now." 21 00:01:03,360 --> 00:01:09,736 So, VisiCalc was instrumental in getting personal computers on business desks. 22 00:01:09,760 --> 00:01:10,920 How did it come about? 23 00:01:11,680 --> 00:01:14,600 What was it? What did I go through to make it be what it was? 24 00:01:15,920 --> 00:01:21,256 Well, I first learned to program back in 1966, when I was 15 -- 25 00:01:21,280 --> 00:01:23,520 just a couple months after this photo was taken. 26 00:01:24,200 --> 00:01:27,160 Few high schoolers had access to computers in those days. 27 00:01:27,560 --> 00:01:31,056 But through luck and an awful lot of perseverance, 28 00:01:31,080 --> 00:01:33,320 I was able to get computer time around the city. 29 00:01:34,200 --> 00:01:39,080 After sleeping in the mud at Woodstock, I went off to MIT to go to college, 30 00:01:39,520 --> 00:01:42,600 where to make money, I worked on the Multics Project. 31 00:01:43,320 --> 00:01:48,336 Multics was a trailblazing interactive time-sharing system. 32 00:01:48,360 --> 00:01:51,536 Have you heard of the Linux and Unix operating systems? 33 00:01:51,560 --> 00:01:52,800 They came from Multics. 34 00:01:53,320 --> 00:01:55,616 I worked on the Multics versions 35 00:01:55,640 --> 00:01:59,456 of what are known as interpreted computer languages, 36 00:01:59,480 --> 00:02:01,936 that are used by people in noncomputer fields 37 00:02:01,960 --> 00:02:04,960 to do their calculations while seated at a computer terminal. 38 00:02:05,560 --> 00:02:07,816 After I graduated from MIT, 39 00:02:07,840 --> 00:02:10,680 I went to work for Digital Equipment Corporation. 40 00:02:11,320 --> 00:02:14,496 At DEC, I worked on software 41 00:02:14,520 --> 00:02:17,360 for the new area of computerized typesetting. 42 00:02:17,800 --> 00:02:22,136 I helped newspapers replace their reporters' typewriters 43 00:02:22,160 --> 00:02:23,360 with computer terminals. 44 00:02:23,880 --> 00:02:25,096 I'd write software 45 00:02:25,120 --> 00:02:28,816 and then I'd go out in the field to places like the Kansas City Star, 46 00:02:28,840 --> 00:02:31,256 where I would train users and get feedback. 47 00:02:31,280 --> 00:02:33,136 This was real-world experience 48 00:02:33,160 --> 00:02:36,400 that is quite different than what I saw in the lab at MIT. 49 00:02:37,880 --> 00:02:40,496 After that, I was project leader 50 00:02:40,520 --> 00:02:45,320 of the software for DEC's first word processor, again a new field. 51 00:02:45,720 --> 00:02:51,216 Like with typesetting, the important thing was crafting a user interface 52 00:02:51,240 --> 00:02:55,320 that was both natural and efficient for noncomputer people to use. 53 00:02:56,360 --> 00:03:00,336 After I was at DEC, I went to work for a small company 54 00:03:00,360 --> 00:03:06,480 that made microprocessor-based electronic cash registers for the fast-food industry. 55 00:03:07,360 --> 00:03:11,056 But I had always wanted to start a company with my friend Bob Frankston 56 00:03:11,080 --> 00:03:13,456 that I met on the Multics project at MIT. 57 00:03:13,480 --> 00:03:17,176 So I decided to go back to school to learn as much as I could about business. 58 00:03:17,200 --> 00:03:19,976 And in the fall of 1977, 59 00:03:20,000 --> 00:03:23,000 I entered the MBA program at Harvard Business School. 60 00:03:23,840 --> 00:03:26,336 I was one of the few percentage of students 61 00:03:26,360 --> 00:03:29,200 who had a background in computer programming. 62 00:03:30,080 --> 00:03:33,256 There's a picture of me from the yearbook sitting in the front row. 63 00:03:33,280 --> 00:03:34,296 (Laughter) 64 00:03:34,320 --> 00:03:36,936 Now, at Harvard, we learned by the case method. 65 00:03:36,960 --> 00:03:38,896 We'd do about three cases a day. 66 00:03:38,920 --> 00:03:44,640 Cases consist of up to a few dozen pages describing particular business situations. 67 00:03:45,600 --> 00:03:50,176 They often have exhibits, and exhibits often have words and numbers 68 00:03:50,200 --> 00:03:53,360 laid out in ways that make sense for the particular situation. 69 00:03:53,840 --> 00:03:55,776 They're usually all somewhat different. 70 00:03:55,800 --> 00:03:57,016 Here's my homework. 71 00:03:57,040 --> 00:04:00,216 Again, numbers, words, laid out in ways that made sense. 72 00:04:00,240 --> 00:04:04,320 Lots of calculations -- we got really close to our calculators. 73 00:04:04,720 --> 00:04:06,600 In fact, here's my calculator. 74 00:04:08,200 --> 00:04:10,976 For Halloween, I went dressed up as a calculator. 75 00:04:11,000 --> 00:04:12,440 (Laughter) 76 00:04:13,785 --> 00:04:16,976 At the beginning of each class, the professor would call on somebody 77 00:04:17,000 --> 00:04:18,279 to present the case. 78 00:04:19,079 --> 00:04:21,856 What they would do is they would explain what was going on 79 00:04:21,880 --> 00:04:25,616 and then dictate information that the professor would transcribe 80 00:04:25,640 --> 00:04:28,545 onto the many motorized blackboards in the front of the class, 81 00:04:28,569 --> 00:04:30,096 and then we'd have a discussion. 82 00:04:30,120 --> 00:04:34,576 One of the really frustrating things is when you've done all your homework, 83 00:04:34,600 --> 00:04:37,616 you come in the next day only to find out that you made an error 84 00:04:37,640 --> 00:04:40,176 and all of the other numbers you did were wrong. 85 00:04:40,200 --> 00:04:41,976 And you couldn't participate as well. 86 00:04:42,000 --> 00:04:44,240 And we were marked by class participation. 87 00:04:45,320 --> 00:04:50,240 So, sitting there with 87 other people in the class, I got to daydream a lot. 88 00:04:51,280 --> 00:04:55,136 Most programmers in those days worked on mainframes, 89 00:04:55,160 --> 00:05:01,496 building things like inventory systems, payroll systems and bill-paying systems. 90 00:05:01,520 --> 00:05:04,016 But I had worked on interactive word processing 91 00:05:04,040 --> 00:05:06,136 and on-demand personal computation. 92 00:05:06,160 --> 00:05:10,440 Instead of thinking about paper printouts and punch cards, 93 00:05:10,880 --> 00:05:13,656 I imagined a magic blackboard 94 00:05:13,680 --> 00:05:17,056 that if you erased one number and wrote a new thing in, 95 00:05:17,080 --> 00:05:19,936 all of the other numbers would automatically change, 96 00:05:19,960 --> 00:05:21,720 like word processing with numbers. 97 00:05:22,600 --> 00:05:26,840 I imagined that my calculator had mouse hardware on the bottom of it 98 00:05:27,240 --> 00:05:30,200 and a head-up display, like in a fighter plane. 99 00:05:30,720 --> 00:05:34,856 And I could type some numbers in, and circle it, and press the sum button. 100 00:05:34,880 --> 00:05:38,616 And right in the middle of a negotiation I'd be able to get the answer. 101 00:05:38,640 --> 00:05:41,640 Now I just had to take my fantasy and turn it into reality. 102 00:05:42,640 --> 00:05:45,080 My father taught me about prototyping. 103 00:05:45,560 --> 00:05:47,176 He showed me mock-ups 104 00:05:47,200 --> 00:05:50,536 that he'd make to figure out the placement on the page 105 00:05:50,560 --> 00:05:53,096 for the things for brochures that he was printing. 106 00:05:53,120 --> 00:05:56,056 And he'd use it to get feedback from customers 107 00:05:56,080 --> 00:05:59,680 and OKs before he sent the job off to the presses. 108 00:06:00,440 --> 00:06:05,536 The act of making a simple, working version of what you're trying to build 109 00:06:05,560 --> 00:06:07,880 forces you to uncover key problems. 110 00:06:08,720 --> 00:06:13,120 And it lets you find solutions to those problems much less expensively. 111 00:06:13,720 --> 00:06:15,960 So I decided to build a prototype. 112 00:06:16,760 --> 00:06:21,336 I went to a video terminal connected to Harvard's time-sharing system 113 00:06:21,360 --> 00:06:22,856 and got to work. 114 00:06:22,880 --> 00:06:26,136 One of the first problems that I ran into was: 115 00:06:26,160 --> 00:06:28,840 How do you represent values in formulas? 116 00:06:29,280 --> 00:06:30,640 Let me show you what I mean. 117 00:06:32,000 --> 00:06:34,176 I thought that you would point somewhere, 118 00:06:34,200 --> 00:06:37,296 type in some words, then type in some somewhere else, 119 00:06:37,320 --> 00:06:40,844 put in some numbers and some more numbers, point where you want the answer. 120 00:06:41,240 --> 00:06:44,456 And then point to the first, press minus, point to the second, 121 00:06:44,480 --> 00:06:45,680 and get the result. 122 00:06:46,360 --> 00:06:49,776 The problem was: What should I put in the formula? 123 00:06:49,800 --> 00:06:52,420 It had to be something the computer knew what to put in. 124 00:06:52,444 --> 00:06:54,136 And if you looked at the formula, 125 00:06:54,160 --> 00:06:57,160 you needed to know where on the screen it referred to. 126 00:06:57,840 --> 00:07:00,736 The first thing I thought was the programmer way of doing it. 127 00:07:00,760 --> 00:07:02,665 The first time you pointed to somewhere, 128 00:07:02,689 --> 00:07:05,369 the computer would ask you to type in a unique name. 129 00:07:06,760 --> 00:07:10,536 It became pretty clear pretty fast that that was going to be too tedious. 130 00:07:10,560 --> 00:07:13,800 The computer had to automatically make up the name and put it inside. 131 00:07:14,600 --> 00:07:18,960 So I thought, why not make it be the order in which you create them? 132 00:07:19,480 --> 00:07:21,976 I tried that. Value 1, value 2. 133 00:07:22,000 --> 00:07:24,762 Pretty quickly I saw that if you had more than a few values 134 00:07:24,786 --> 00:07:27,296 you'd never remember on the screen where things were. 135 00:07:27,320 --> 00:07:32,616 Then I said, why not instead of allowing you to put values anywhere, 136 00:07:32,640 --> 00:07:34,240 I'll restrict you to a grid? 137 00:07:34,720 --> 00:07:36,936 Then when you pointed to a cell, 138 00:07:36,960 --> 00:07:39,680 the computer could put the row and column in as a name. 139 00:07:40,640 --> 00:07:46,816 And, if I did it like a map and put ABC across the top and numbers along the side, 140 00:07:46,840 --> 00:07:49,736 if you saw B7 in a formula, 141 00:07:49,760 --> 00:07:51,960 you'd know exactly where it was on the screen. 142 00:07:52,640 --> 00:07:56,880 And if you had to type the formula in yourself, you'd know what to do. 143 00:07:57,440 --> 00:08:00,520 Restricting you to a grid helped solve my problem. 144 00:08:01,200 --> 00:08:06,800 It also opened up new capabilities, like the ability to have ranges of cells. 145 00:08:07,360 --> 00:08:08,936 But it wasn't too restrictive -- 146 00:08:08,960 --> 00:08:13,280 you could still put any value, any formula, in any cell. 147 00:08:14,120 --> 00:08:17,960 And that's the way we do it to this day, almost 40 years later. 148 00:08:19,109 --> 00:08:22,776 My friend Bob and I decided that we were going to build this product together. 149 00:08:22,800 --> 00:08:27,216 I did more work figuring out exactly how the program was supposed to behave. 150 00:08:27,240 --> 00:08:30,496 I wrote a reference card to act as documentation. 151 00:08:30,520 --> 00:08:35,296 It also helped me ensure that the user interface I was defining 152 00:08:35,320 --> 00:08:38,799 could be explained concisely and clearly to regular people. 153 00:08:39,520 --> 00:08:44,936 Bob worked in the attic of the apartment he rented in Arlington, Massachusetts. 154 00:08:44,960 --> 00:08:46,680 This is the inside of the attic. 155 00:08:48,240 --> 00:08:51,016 Bob bought time on the MIT Multics System 156 00:08:51,040 --> 00:08:53,760 to write computer code on a terminal like this. 157 00:08:54,400 --> 00:08:57,896 And then he would download test versions to a borrowed Apple II 158 00:08:57,920 --> 00:09:01,176 over a phone line using an acoustic coupler, 159 00:09:01,200 --> 00:09:02,360 and then we would test. 160 00:09:02,920 --> 00:09:07,640 For one of these tests I prepared for this case about the Pepsi Challenge. 161 00:09:08,720 --> 00:09:11,640 Print wasn't working yet, so I had to copy everything down. 162 00:09:12,480 --> 00:09:14,896 Save wasn't working, so every time it crashed, 163 00:09:14,920 --> 00:09:17,920 I had to type in all of the formulas again, over and over again. 164 00:09:18,240 --> 00:09:22,216 The next day in class, I raised my hand; I got called on, and I presented the case. 165 00:09:22,240 --> 00:09:25,816 I did five-year projections. I did all sorts of different scenarios. 166 00:09:25,840 --> 00:09:29,520 I aced the case. VisiCalc was already useful. 167 00:09:30,160 --> 00:09:32,760 The professor said, "How did you do it?" 168 00:09:33,469 --> 00:09:36,136 Well, I didn't want to tell him about our secret program. 169 00:09:36,160 --> 00:09:37,680 (Laughter) 170 00:09:38,200 --> 00:09:40,056 So I said, "I took this and added this 171 00:09:40,080 --> 00:09:42,176 and multiplied by this and subtracted that." 172 00:09:42,200 --> 00:09:44,296 He said, "Well, why didn't you use a ratio?" 173 00:09:44,320 --> 00:09:47,336 I said, "Hah! A ratio -- that wouldn't have been as exact!" 174 00:09:47,360 --> 00:09:49,936 What I didn't say was, "Divide isn't working yet." 175 00:09:49,960 --> 00:09:53,056 (Laughter) 176 00:09:53,080 --> 00:09:56,936 Eventually, though, we did finish enough of VisiCalc 177 00:09:56,960 --> 00:09:58,800 to be able to show it to the public. 178 00:09:59,440 --> 00:10:01,416 My dad printed up a sample reference card 179 00:10:01,440 --> 00:10:03,440 that we could use as marketing material. 180 00:10:04,280 --> 00:10:10,056 In June of 1979, our publisher announced VisiCalc to the world, 181 00:10:10,080 --> 00:10:14,200 in a small booth at the giant National Computer Conference in New York City. 182 00:10:14,800 --> 00:10:18,960 The New York Times had a humorous article about the conference. 183 00:10:19,480 --> 00:10:21,936 "The machines perform what seem religious rites ... 184 00:10:21,960 --> 00:10:23,341 Even as the believers gather, 185 00:10:23,365 --> 00:10:26,461 the painters in the Coliseum sign room are adding to the pantheon, 186 00:10:26,485 --> 00:10:29,656 carefully lettering 'VISICALC' in giant black on yellow. 187 00:10:29,680 --> 00:10:31,496 All hail VISICALC!" 188 00:10:31,520 --> 00:10:35,096 (Gasp) New York Times: "All hail VISICALC." 189 00:10:35,120 --> 00:10:36,616 (Laughter) 190 00:10:36,640 --> 00:10:40,896 That was the last mention of the electronic spreadsheet 191 00:10:40,920 --> 00:10:44,816 in the popular business press for about two years. 192 00:10:44,840 --> 00:10:46,976 Most people didn't get it yet. 193 00:10:47,000 --> 00:10:48,200 But some did. 194 00:10:48,920 --> 00:10:53,120 In October of 1979, we shipped VisiCalc. 195 00:10:53,880 --> 00:10:56,696 It came in packaging that looked like this. 196 00:10:56,720 --> 00:10:59,200 And it looked like this running on the Apple II. 197 00:11:00,000 --> 00:11:01,960 And the rest, as they say, is history. 198 00:11:02,360 --> 00:11:04,456 Now, there's an awful lot more to this story, 199 00:11:04,480 --> 00:11:06,536 but that'll have to wait for another day. 200 00:11:06,560 --> 00:11:08,800 One thing, though, Harvard remembers. 201 00:11:09,400 --> 00:11:10,600 Here's that classroom. 202 00:11:11,240 --> 00:11:14,680 They put up a plaque to commemorate what happened there. 203 00:11:15,640 --> 00:11:18,040 (Applause) 204 00:11:24,400 --> 00:11:27,336 But it also serves as a reminder 205 00:11:27,360 --> 00:11:32,856 that you, too, should take your unique backgrounds, skills and needs 206 00:11:32,880 --> 00:11:38,136 and build prototypes to discover and work out the key problems, 207 00:11:38,160 --> 00:11:40,280 and through that, change the world. 208 00:11:41,040 --> 00:11:42,256 Thank you. 209 00:11:42,280 --> 00:11:46,880 (Applause)