1 99:59:59,999 --> 99:59:59,999 How many of you have used an electronic spreadsheet, 2 99:59:59,999 --> 99:59:59,999 like Microsoft Excel? Very good. 3 99:59:59,999 --> 99:59:59,999 Now how many of you have run a business with a spreadsheet by hand, 4 99:59:59,999 --> 99:59:59,999 like my dad did for his small printing business in Philadelphia? 5 99:59:59,999 --> 99:59:59,999 A lot less. Well, that's the way it was done for hundreds of years. 6 99:59:59,999 --> 99:59:59,999 In early 1978, I started working on an idea that eventually became VisiCalc. 7 99:59:59,999 --> 99:59:59,999 And the next year it shipped running on something new 8 99:59:59,999 --> 99:59:59,999 called an Apple II Personal Computer. 9 99:59:59,999 --> 99:59:59,999 You could tell that things had really changed when six years later, 10 99:59:59,999 --> 99:59:59,999 the Wall Street Journal ran an editorial that assumed you knew what VisiCalc was 11 99:59:59,999 --> 99:59:59,999 and maybe even were using it. Steve Jobs back in 1990 said that 12 99:59:59,999 --> 99:59:59,999 spreadsheets propelled the industry forward. 13 99:59:59,999 --> 99:59:59,999 VisiCalc propelled the success of Apple more than any other single event. 14 99:59:59,999 --> 99:59:59,999 On a more personal note, Steve said that if VisiCalc had been written 15 99:59:59,999 --> 99:59:59,999 for some other computer, you'd be interviewing 16 99:59:59,999 --> 99:59:59,999 somebody else right now. 17 99:59:59,999 --> 99:59:59,999 So, VisiCalc was instrumental in getting personal computers on business desks. 18 99:59:59,999 --> 99:59:59,999 How did it come about? What was it? 19 99:59:59,999 --> 99:59:59,999 What did I go through to make it be what it was? 20 99:59:59,999 --> 99:59:59,999 Well, I first learned to program back in 1966, when I was 15 -- 21 99:59:59,999 --> 99:59:59,999 just a couple months after this photo was taken. 22 99:59:59,999 --> 99:59:59,999 Few high schoolers had access to computers in those days 23 99:59:59,999 --> 99:59:59,999 but through luck and an awful lot of perseverance, 24 99:59:59,999 --> 99:59:59,999 I was able to get computer time around the city. 25 99:59:59,999 --> 99:59:59,999 After sleeping in the mud at Woodstock, I went off the MIT to go to college, 26 99:59:59,999 --> 99:59:59,999 where to make money, I worked on the Multics Project. 27 99:59:59,999 --> 99:59:59,999 Now Multics was a trailblazing interactive time-sharing system. 28 99:59:59,999 --> 99:59:59,999 Have you heard of the Lenix ad Unix operating systems? 29 99:59:59,999 --> 99:59:59,999 They came from Multics. I worked on the Multics versions 30 99:59:59,999 --> 99:59:59,999 of what are known as interpreted computer languages, 31 99:59:59,999 --> 99:59:59,999 that are used by people in non-computer fields 32 99:59:59,999 --> 99:59:59,999 to do their calculations while seated at a computer terminal. 33 99:59:59,999 --> 99:59:59,999 After I graduated from MIT, 34 99:59:59,999 --> 99:59:59,999 I went to work for Digital Equipment Corporation. 35 99:59:59,999 --> 99:59:59,999 At DEC, I worked on software for the new area of computerized typesetting. 36 99:59:59,999 --> 99:59:59,999 I helped newspapers replace their reporters' typewriters 37 99:59:59,999 --> 99:59:59,999 with computer terminals. 38 99:59:59,999 --> 99:59:59,999 I'd write software and then I'd go out in the field 39 99:59:59,999 --> 99:59:59,999 to places like the Kansas City Star where I would train users and get feedback. 40 99:59:59,999 --> 99:59:59,999 Now this was real world experience that is quite different 41 99:59:59,999 --> 99:59:59,999 than what I saw in the lab at MIT. After that, I was project leader 42 99:59:59,999 --> 99:59:59,999 of the software for DEC's first word processor, again a new field. 43 99:59:59,999 --> 99:59:59,999 Like with typesetting, the important thing was crafting a user interface that was 44 99:59:59,999 --> 99:59:59,999 both natural and efficient for non-computer people to use. 45 99:59:59,999 --> 99:59:59,999 After I was at DEC, I went to work for a small company that made 46 99:59:59,999 --> 99:59:59,999 microprocessor based electronic cash registers for the fast food industry. 47 99:59:59,999 --> 99:59:59,999 But, I had always wanted to start a company with my friend Bob Frankston 48 99:59:59,999 --> 99:59:59,999 that I met on the Multics project at MIT. 49 99:59:59,999 --> 99:59:59,999 So I decided to go back to school to learn as much as I could about business. 50 99:59:59,999 --> 99:59:59,999 And in the Fall of 1977, I entered the MBA program at Harvard Business School. 51 99:59:59,999 --> 99:59:59,999 I was one of a few students who had a background in computer programming. 52 99:59:59,999 --> 99:59:59,999 There's a picture of me from the yearbook sitting in the front row. Now at Harvard, 53 99:59:59,999 --> 99:59:59,999 we learned by the case method. we do about three cases a day. 54 99:59:59,999 --> 99:59:59,999 Cases consist of up to a few dozen pages describing a particular business situation. 55 99:59:59,999 --> 99:59:59,999 They often have exhibits, and exhibits often have words and numbers 56 99:59:59,999 --> 99:59:59,999 laid out in ways that make sense for the particular situation. 57 99:59:59,999 --> 99:59:59,999 There usually all somewhat different. Here's my homework. 58 99:59:59,999 --> 99:59:59,999 Again, numbers, words, laid out in ways that made sense. 59 99:59:59,999 --> 99:59:59,999 Lots of calculations. We got really close to our calculators. 60 99:59:59,999 --> 99:59:59,999 In fact, here's my calculator. 61 99:59:59,999 --> 99:59:59,999 For Halloween, I went dressed up as a calculator. 62 99:59:59,999 --> 99:59:59,999 At the beginning of each class, the professor would call on somebody 63 99:59:59,999 --> 99:59:59,999 to present the case. 64 99:59:59,999 --> 99:59:59,999 What they would do, is they would explain what was going on and then dictate 65 99:59:59,999 --> 99:59:59,999 information that the professor would transcribe onto the mini 66 99:59:59,999 --> 99:59:59,999 motorized blackboard in the front of the class 67 99:59:59,999 --> 99:59:59,999 and then we'd have a discussion. 68 99:59:59,999 --> 99:59:59,999 The frustrating thing is when you've done all of your homework, 69 99:59:59,999 --> 99:59:59,999 you come in the next day only to find out that you made an error and all 70 99:59:59,999 --> 99:59:59,999 of the other numbers you did were wrong, and you couldn't participate as well. 71 99:59:59,999 --> 99:59:59,999 And we were marked by class participation. 72 99:59:59,999 --> 99:59:59,999 So, sitting there with 87 other people in the class, I got to daydream a lot. 73 99:59:59,999 --> 99:59:59,999 Most programmers in those days worked on mainframes, building things like 74 99:59:59,999 --> 99:59:59,999 inventory systems and payroll systems and bill paying systems, but I had worked 75 99:59:59,999 --> 99:59:59,999 on interactive word processing and on-demand personal computation. 76 99:59:59,999 --> 99:59:59,999 Instead of thinking about paper print outs and punch cards, 77 99:59:59,999 --> 99:59:59,999 I imagined a magic blackboard that if you erased one number 78 99:59:59,999 --> 99:59:59,999 and wrote a new thing in, all of the other numbers 79 99:59:59,999 --> 99:59:59,999 would automatically change, like word processing with numbers. 80 99:59:59,999 --> 99:59:59,999 I imagined that my calculator had mouse hardware on the bottom of it 81 99:59:59,999 --> 99:59:59,999 and a head-up display like in a fighter plane. 82 99:59:59,999 --> 99:59:59,999 And I could type some numbers in and circle it, and press the sum button. 83 99:59:59,999 --> 99:59:59,999 And right in the middle of a negotiation, I'd be able to get the answer. 84 99:59:59,999 --> 99:59:59,999 Now I just had to take my fantasy and turn it into reality. 85 99:59:59,999 --> 99:59:59,999 My father taught me about prototyping. 86 99:59:59,999 --> 99:59:59,999 He showed me mock-ups that he'd make to figure out the placement 87 99:59:59,999 --> 99:59:59,999 on the page for the things for brochures that he was printing. 88 99:59:59,999 --> 99:59:59,999 And he'd use it to get feedback from customers and okays before 89 99:59:59,999 --> 99:59:59,999 he sent the job off to the presses. 90 99:59:59,999 --> 99:59:59,999 The act of making a simple, working version of what you're trying to build, 91 99:59:59,999 --> 99:59:59,999 forces you to uncover key problems. 92 99:59:59,999 --> 99:59:59,999 And it lets you find solutions to those problems much less expensively. 93 99:59:59,999 --> 99:59:59,999 So I decided to build a prototype. I went to a video terminal connected to 94 99:59:59,999 --> 99:59:59,999 Harvard's time-sharing system and got to work. 95 99:59:59,999 --> 99:59:59,999 One of the first problems that I ran into was: 96 99:59:59,999 --> 99:59:59,999 how do you represent values in formulas? 97 99:59:59,999 --> 99:59:59,999 Let me show you what I mean. 98 99:59:59,999 --> 99:59:59,999 I thought that you would point somewhere, type in some words, 99 99:59:59,999 --> 99:59:59,999 then type in somewhere else, and put in some numbers 100 99:59:59,999 --> 99:59:59,999 and some more numbers, point where you want the answer. 101 99:59:59,999 --> 99:59:59,999 And then point to the first, press minus; point to the second, and get the result. 102 99:59:59,999 --> 99:59:59,999 The problem was: what should I put in the formula? 103 99:59:59,999 --> 99:59:59,999 It had to be something the computer what knew to put in 104 99:59:59,999 --> 99:59:59,999 and if you looked at the formula, you needed to know 105 99:59:59,999 --> 99:59:59,999 where on the screen it referred to. 106 99:59:59,999 --> 99:59:59,999 So the first thing I thought was the programmer way of doing it, 107 99:59:59,999 --> 99:59:59,999 the first time you pointed to somewhere, the computer would ask you 108 99:59:59,999 --> 99:59:59,999 to type in a unique name. It became pretty clear, pretty fast that 109 99:59:59,999 --> 99:59:59,999 that was going to be too tedious. 110 99:59:59,999 --> 99:59:59,999 The computer had to automatically make up the name and put it inside. 111 99:59:59,999 --> 99:59:59,999 So I thought, why not make it be the order in which you create them. 112 99:59:59,999 --> 99:59:59,999 I tried that. Value 1, Value 2. Pretty quickly I saw that if you had more 113 99:59:59,999 --> 99:59:59,999 than a few values, you'd never remember on the screen where things were. 114 99:59:59,999 --> 99:59:59,999 Then I said, why not instead of allowing you to put values anywhere, 115 99:59:59,999 --> 99:59:59,999 I'll restrict you to a grid? Then when you pointed to a cell, 116 99:59:59,999 --> 99:59:59,999 the computer could put the row and column in as a name. 117 99:59:59,999 --> 99:59:59,999 And, if I did it like a map and put ABC across the top and numbers along the side, 118 99:59:59,999 --> 99:59:59,999 if you saw B7 in a formula, you'd know exactly where it was on the screen. 119 99:59:59,999 --> 99:59:59,999 If you had to type the formula yourself, you'd know what to do. 120 99:59:59,999 --> 99:59:59,999 Restricting you to a grid helped solve my problem.: 121 99:59:59,999 --> 99:59:59,999 It also opened up new capabilities, like the ability to have ranges of cells. 122 99:59:59,999 --> 99:59:59,999 But it wasn't too restrictive -- 123 99:59:59,999 --> 99:59:59,999 you could still put any value, any formula, in any cell. 124 99:59:59,999 --> 99:59:59,999 And that's the way we do it to this day, almost 40 years later. 125 99:59:59,999 --> 99:59:59,999 My friend Bob and I decided that we were going to build this product together. 126 99:59:59,999 --> 99:59:59,999 I did more work figuring out exactly how the program was supposed to behave. 127 99:59:59,999 --> 99:59:59,999 I wrote a reference card to act as documentation. 128 99:59:59,999 --> 99:59:59,999 It also helped me ensure that the user interface I was defining 129 99:59:59,999 --> 99:59:59,999 could be explained concisely and clearly to regular people. 130 99:59:59,999 --> 99:59:59,999 Bob worked in the attic of the apartment he rented in Arlington, Massachusettes. 131 99:59:59,999 --> 99:59:59,999 This is the inside of the attic. 132 99:59:59,999 --> 99:59:59,999 Bob bought time on the MIT Multics System 133 99:59:59,999 --> 99:59:59,999 to write computer code on a terminal like this: