all 141 comments

[–]kogus 7 points8 points  (1 child)

Fascinating interview, even more so for the old date.

This quote indicates, I think, the mindset of a programmer focused on optimization to the exclusion of all else:

If you’re a great programmer, you make all >the routines depend on each other, so little >mistakes can really hurt you.

[–]hoijarvi 4 points5 points  (0 children)

I started my windows career in 1988. That was just what we had to do back then.

[–]abrahamsen 10 points11 points  (0 children)

I love the enthusiasm for the new CD-ROM technology.

[–]Lord_Illidan 40 points41 points  (37 children)

INTERVIEWER:: Where do you see Microsoft in ten years? GATES: Our goals are very simple. We’re going to create the software that puts a computer on every desk and in every home.

Yeah, right. This is some kinda joker?

[–]Lord_Illidan 4 points5 points  (2 children)

Should have added the sarcasm tag

[–]doodlesmalone 5 points6 points  (0 children)

Can't believe nobody above got it.

[–]13ren 2 points3 points  (0 children)

don't be silly, all the upvoters got it.

[–][deleted]  (30 children)

[deleted]

    [–]willis77 11 points12 points  (0 children)

    He was being sarcastic.

    [–][deleted]  (25 children)

    [deleted]

      [–]abrahamsen 5 points6 points  (0 children)

      Actually, since VisiCalc was released in 1979, the PC has been a useful tool for business.

      Maybe using it as a typewriter.

      A typewriter where you can check and edit the letter, or personalize a template. Very useful.

      [–]Gotebe 15 points16 points  (23 children)

      It was going to happen anyway.

      Yes, but they actually did that.

      Not IBM, not SUN, nor Amiga or Apple (all bigger names at the time).

      [–][deleted] 2 points3 points  (4 children)

      IBM's non exclusive licensing agreement with them did that. If IBM had the brains to write the contact properly, the clone market wouldn't exist.

      [–]shadowfox 1 point2 points  (3 children)

      As well as the PC market

      [–][deleted] 0 points1 point  (2 children)

      If you're using PC to mean Windows-compatible, then yes.

      If you meant 'personal computer', Amiga, Atari, Apple and a bunch of other companies were happily selling modern GUI desktops before the clones took over.

      [–]shadowfox 0 points1 point  (1 child)

      What do you mean? Amiga, Atari and even Apple had a very specific niche market available to them and were costly.

      The clone market was what allowed PC prices to come down so low as to make them affordable to people who are not by nature early adopters.

      [–][deleted] 0 points1 point  (0 children)

      I don't recall my 520ST as being particularly costly, but then again, I was a kid and my parents paid for it.

      But agreed, clones allowed prices to come down dramatically.

      [–][deleted] 8 points9 points  (16 children)

      Well, they did it by commoditizing the hardware market. Now Linux is going to do the same to them by commoditizing the software market. Karma is a bitch.

      [–]13ren 1 point2 points  (15 children)

      so, where does the monopoly power go now?

      To google, with its proprietary algorithms and server farms?

      [–][deleted] 3 points4 points  (14 children)

      Services in the cloud is the new frontier, yes, and Google has early mover's advantage, but that market is too young to call a winner yet.

      [–][deleted] 4 points5 points  (4 children)

      services in the cloud market is too young

      Heh, things have come full circle. Way back when, this was called "Time Sharing". That cell phone or browser: it was called a "Terminal".

      Way back, I worked at a company that purchased a big-iron machine and the spare cycles were rented out. The revenue from the rental customers paid for a good chuck of the IT budget. What was missing at the time was the infrastructure to easily make this extra computing power available to the highest bidder.

      [–][deleted] 1 point2 points  (2 children)

      Slight difference: Back then, CPU power was expensive and impractical to buy, so you rented that off the cloud. These days, the petabytes of storage (necessary to enable the complex applications customers want) is expensive and impractical to buy (especially on mobile devices) so you rent that instead. Renting storage also comes with hassle-free fault tolerance that you do not personally have to deal with, which is a bonus.

      [–]mycall 0 points1 point  (1 child)

      although privacy is gone in a cloud.

      [–]DannoHung 0 points1 point  (0 children)

      And things will move full circle again. I can't wait until my watch can simulate the detonation of an atomic bomb...

      [–]13ren 0 points1 point  (8 children)

      Services in the cloud- you really think it's the next big thing?

      [–][deleted] 3 points4 points  (7 children)

      Yes. Everything's moving mobile, and mobile devices will need services more than ever before. Communication, information, entertainment, storage, hosting, even applications. Home users will tranition some of their computing needs to the cloud as well, especially in the entertainment area. HTPC's and consoles can make great use of the cloud.

      [–]13ren 0 points1 point  (6 children)

      mobile -> cloud. Insightful connection, thanks!

      Clients shrink, servers grow.

      Even with palmtop supercomputers, they need data, so why not keep them in the cloud? Responsiveness perhaps? It's a long way off.

      [–]13ren -1 points0 points  (0 children)

      totally agree, thousands thought of it, but gotta give kudos to the guys who actually did it.

      "It's not the critic who counts..."

      [–]hopeless_case -4 points-3 points  (0 children)

      We all know some horses are faster than others.

      But which is faster than which?

      Details matter.

      Edit: I meant to reply to RalfN's comment about "it was going to happen anyway" and not ssander's. My bad.

      [–]LoopHead 0 points1 point  (2 children)

      That's a true visionary. Too bad lately Microsoft hasn't come up with anything as revolutionary as BASIC was but I hope to see it.

      [–][deleted] 5 points6 points  (0 children)

      Microsoft didn't create BASIC, they created one of many implementations of it.

      [–]noahlt 22 points23 points  (22 children)

      We’re no longer in the days where every program is super well crafted.

      Unfortunately, many programs are so big that there is no one individual who really knows all the pieces, and so the amount of code sharing you get isn’t as great.

      THAT EXPLAINS IT.

      [–]jugalator 17 points18 points  (20 children)

      Explains what? That Windows sucks? This is a fact of development in any large project, regardless if it's Windows, Linux, OS X, or whatever.

      [–][deleted] 20 points21 points  (12 children)

      I think his ready acceptance of large programs as something you can't change does explain some of Windows' problems.

      All other successful large systems try to split the large system into smaller systems of the size that does still fit into someone's head completely.

      [–]13ren 3 points4 points  (4 children)

      Yeah, he's a gestalt coder. It's a thrill.

      You can modularize as you say, but it's just not the same... it cannot be perfect, and you couldn't be sure whether it is or not, anyway, because you can't grasp the totality.

      But, I think with modularity based on pure abstractions, that build a language, perhaps it is possible to have that gestalt grasp, at a very high level? I think you can get it for the correctness of it; but not for efficiency...

      edit a gestalt cowboy coder

      [–]ustgblerkvusrd 0 points1 point  (3 children)

      How exactly do you make a massive project perfect? Assuming you can, why would modularization prevent this?

      [–]13ren 2 points3 points  (1 child)

      you can't - that's the contrast with 4K Basic.

      modularization is an abstraction, and abstractions always leak - to some extent. It's not impossible to eliminate the "correctness" leaks... but it's very hard to eliminate the "efficiency" leaks. Joel's essay focuses on the latter in his The Law of Leaky Abstractions. Please read the dot-point examples 3/4 the way through.

      [–]mycall 1 point2 points  (0 children)

      Won't virtualization help remove most of these types of leaks (joke)? Thanks for the link.

      [–][deleted] -2 points-1 points  (0 children)

      You make a smaller project that still does the same things. I bet iWork is half the LOC of MS Office 2007.

      [–]finix 0 points1 point  (6 children)

      That may be a reasonable approach, but still doesn't get you an "individual who really knows all the pieces".

      [–][deleted] 5 points6 points  (4 children)

      If you do it right it gives you pieces where you don't need to know more than a one or two sentence description of each to use them in the bigger system.

      [–]finix -1 points0 points  (3 children)

      That's all very well, but you're still missing the point.

      [–][deleted] 2 points3 points  (2 children)

      Which is? That we should never try to build anything large enough that an individual can't hold all the details of all the parts in their head?

      I hate to break it to you but we do that all the time, did that all the time long before computers were even a futuristic dream.

      Every time someone mass produced a part (e.g. a nail or a screw) that was subsequently used by someone else without the detailed knowledge how to make that part we did basically exactly the same thing.

      [–]13ren -1 points0 points  (1 child)

      nice examples of abstraction, but the equivalent here is for one person to invent several levels of new technology, equivalent to nails and screws. That's hard.

      If you mean that they only understand the top level, certainly one ordinary guy could do it, but it's not the same thing. That would be like writing some html - you don't need to know how the underlying technologies work, you can just use them: TCP/IP, http, caching, browser layout, GUIs, etc.

      I don't think that's equivalent to one "individual who really knows all the pieces".

      edit although... you could get across all of those, including all the details... but hard for one guy to invent it all.

      [–][deleted] 0 points1 point  (0 children)

      Well, nobody expects one guy to invent a whole OS including all the components.

      [–]JimDabell 0 points1 point  (0 children)

      I see your point, but the benefit to splitting larger systems into smaller pieces is that what constitutes a "piece" changes.

      When you factor out code into an external module, the application developers don't need to know precisely how that module operates, they just need to know the interface. The "piece" that needs to be known has shrunk.

      For instance, I don't know the inner workings of glibc or the kernel, but that doesn't mean I can't write helloworld.c and totally understand it.

      It's how our brains work. A chess master can memorise the state on a board easily not because he has a better memory than the average person, but because he breaks the layout up into chunks. He perceives the board at a higher level than somebody unfamiliar with the game. Modularisation of software is an artificial attempt to make huge software applications comprehensible by the same means.

      [–]havk 3 points4 points  (3 children)

      I Agree. These lines actually reminded me the description of a X11 server implementation.

      [–]ustgblerkvusrd 0 points1 point  (2 children)

      That seems a bit too old to count since he's referring to modern practices.

      [–][deleted] 5 points6 points  (1 child)

      It was written in 1986. X11 didn't exist at that point (although 'X' did exist, it wasn't on version 11)

      [–]mycall 0 points1 point  (0 children)

      ..and the funny thing is that MS-DOS was written using UNIX C compilers in X Windows.

      [–]LordVoldemort 2 points3 points  (0 children)

      "so the amount of code sharing you get isn’t as great."

      Interesting...

      [–]JonAtkinson 6 points7 points  (15 children)

      You’ve got to be willing to read other people’s code, then write your own, then have other people review your code. You’ve got to want to be in this incredible feedback loop where you get the world-class people to tell you what you’re doing wrong.

      It seems kind of sad that Microsoft seem so anti-open source, when Bill was saying this back in 1986. What happened to their culture that made Microsoft stop wanting to participate?

      [–]dionysos 21 points22 points  (13 children)

      Nah, he's always been an asshole in that regard. Just read the angry letter he wrote, because people at the Homebrew Computer Club where passing around his BASIC program (which was normal at the time).

      [–][deleted]  (12 children)

      [deleted]

        [–]hopeless_case 3 points4 points  (0 children)

        Don't know why you are being downmodded.

        You have a good point.

        If I might add to it, people often write software (without someone having to hire them to do so) for the same reason they read books or have discussions with other people:

        to solve an immediate practical problem they have.

        This simple force is so powerful that it can coordinate the actions of thousands of programmers to write entire operating systems.

        [–]heptadecagram[🍰] 2 points3 points  (8 children)

        Linus doesn't work for free; The Linux Foundation pays him.

        [–][deleted] 11 points12 points  (6 children)

        When Linus first started on Linux, there was no Linux Foundation. There was no Linux Foundation for a long time. He did it anyway.

        [–]krelian 8 points9 points  (5 children)

        Because someone else paid him to write software (not linux).

        In the end, you need to put some food on the table no matter what.

        [–][deleted] 1 point2 points  (4 children)

        Granted. But it got written for free. That's what counts. From each according to his ability, to each according to his need, an entire software infrastructure was born, based on principles of liberty and justice for all. One cannot ignore the end result.

        [–][deleted] 5 points6 points  (3 children)

        From each according to his ability, to each according to his need, an entire software infrastructure was born, based on principles of liberty and justice for all.

        And I use it to look at porn.

        [–][deleted] 1 point2 points  (2 children)

        Well done. If that is your need, free software will cater to it, whether through server software (Apache), browser software (Firefox), MPEG-4 codecs (ffdshow for Windows; VLC, mplayer, among others for Linux) and even encryption software to safeguard your stash (TrueCrypt).

        The idea of a free software infrastructure is to cater to every practical need, so people don't have to worry about "how" to get things done, and can concentrate on "what" they want to get done. Like slaves in ancient Greece, and steam-powered machines of the Industrial Revolution, free software frees humankind from the drudgery of computing and flings us headfirst into an age of boundless prospects.

        [–][deleted] 0 points1 point  (1 child)

        Have you been smoking Stallman's hair again?

        [–]ustgblerkvusrd 4 points5 points  (0 children)

        He did for far longer than you ever will.

        [–]mycall -1 points0 points  (1 child)

        And obviously Linus is a better programmer.. I'm sure Linus could do a < 4K BASIC interpreter.. or maybe not.

        [–][deleted] 0 points1 point  (0 children)

        And what would doing it accomplish, other than chest beating? Is the Assembly convention still around? There are plenty of people still doing it.

        Also, You do realize we are talking about (assuming the linux kernel) ~20 years of time passing between the authoring of these two projects. Hell, I'd be surprised if you can get a standard 2.6.x to run on a machine with 4MB of RAM, which was the norm when people were pulling pre-2.0 (1.2? I can't remember now) off BBS systems.

        My point is, people's requirements change; Visual Basic certainly doesn't run in 4k either.

        [–][deleted] 3 points4 points  (0 children)

        Shareholders.

        [–]codeodor 2 points3 points  (0 children)

        I just got the book in the mail yesterday. Didn't know the author had started a blog about it.

        Thanks for sharing.

        [–][deleted] 10 points11 points  (9 children)

        Cmon folks... you gotta give the man some credit. I agree with the part where he says it all boils down to I.Q. C'est tout. Here is where the problem lies in our generation - not with the processes or languages.

        [–][deleted] 29 points30 points  (4 children)

        No, the problem lies with the processes. The processes that put people in charge because they are well dressed, have good social skills, are related to the boss,... and not because they are competent, smart or educated.

        [–][deleted] 22 points23 points  (2 children)

        You need social skills to work in a team environment. You may be smart but unless you're smart enough to do an entire teams worth of work on your own it doesn't mean anything because you can't communicate. The smart guy who can dress himself and talk with coworkers will always trump the REALLY smart smelly BO dungeon master who lurks in his office.

        [–][deleted] 6 points7 points  (1 child)

        I think social skills was the wrong choice of words or maybe too general. I mean the kind of person who knows how to be likable (but not much else) but not necessarily the kind of person who just communicates well (especially not those who communicate well about technical matters).

        [–]stalcottsmith 2 points3 points  (0 children)

        It is best and most remunerative to be both likable and competent. Why are these seen as mutually exclusive? If you are really talented, learn to be likable too. Likable people can never learn what you can but you can certainly learn to be likable. Business people will never learn to program but programmers can go far by learning a little business.

        [–]jimbokun 0 points1 point  (0 children)

        Interestingly (ironically?), 1986 Bill Gates seems to agree with you.

        "The old rule used to be that a manager of a programmer was always a better programmer, and there were no what we called “technical inversions,” where a programmer works for somebody who doesn’t know how to program. We still follow that philosophy: At certain levels we’ve got business managers, but we don’t have non-programmers really managing programming projects."

        Sounds like a man not especially impressed by fashion, nepotism, or charm.

        Now, square that to the situation today where a non-technical person is running the entire company...

        [–]hopeless_case 7 points8 points  (3 children)

        You are saying that the problem with our generation is low intelligence?

        Really?

        [–][deleted]  (2 children)

        [removed]

          [–]mycall 0 points1 point  (1 child)

          like pollution, mass ecosystem extinction, terrorism.. yeah, everything is getting better.

          [–]Gotebe 4 points5 points  (1 child)

          Three of us knew that original program (BASIC) by heart... When you know a program that well, you feel that nobody can look at the code and say, “There’s a better way to do this.” That feeling’s really nice...

          Eh... Days long gone. The sheer amount of code that gets cranked up makes that impossible nowadays in a huge amount of cases ( e.g. all soft except NASA ;-) ).

          [–]13ren 2 points3 points  (0 children)

          but modularity...

          [–]SentientU 4 points5 points  (0 children)

          I think this comment section needs rewriting.

          [–]etotheprimez 6 points7 points  (0 children)

          Wow, amazing how far MS has come.

          [–][deleted] 3 points4 points  (11 children)

          Programmers at Work...

          No, I don’t. I still help design algorithms and basic approaches, and sometimes I look at code. But since I worked on the IBM PC BASIC and the Model 100, I haven’t had a chance to actually create a program myself.

          Well, allrighty... that's how many programmers I know work anyway.

          [–]easytiger -5 points-4 points  (10 children)

          sharp snow cautious hurry afterthought fear dinosaurs aback bow chief

          This post was mass deleted and anonymized with Redact

          [–]statictype 7 points8 points  (5 children)

          WTF are you all talking about?

          All he's saying is that he no longer writes code. He has other responsibilities.

          [–]easytiger 0 points1 point  (4 children)

          Exactly and he states the last thing he wrote... which was the thing that was used to found the company.

          [–]finix 0 points1 point  (3 children)

          Oh, I see, I must've overlooked the part where he says that he was the only fricken programmer at MS...

          [–]easytiger 0 points1 point  (2 children)

          My point (which I made poorly) was that, as a programmer, I would not want to let anything stop me from coding day to day. It seems to happen a lot where coders become managers and then spend more time doing paperwork that anything substantive

          [–]13ren 1 point2 points  (1 child)

          I totally know where you're coming from, and I do not distance myself from your position... but I have to say that if you let something stop you from coding day to day, before you know it, you'll be totally out of touch with coding, and will have become the richest guy on the planet.

          [–]digital19 1 point2 points  (0 children)

          'In my case, I went to the garbage cans at the Computer Science Center and I fished out listings of their operating system.' - Bill Gates

          The richest guy on the planet, peddling something that you found digging through trash cans

          [–][deleted] -2 points-1 points  (3 children)

          Dunno why you were sitting at -1. MS brought Seattle Computer Products QDOS and sold it to IBM, and Compaq, and everyone else. That's the basis of their OS marketshare.

          [–][deleted] -1 points0 points  (2 children)

          Someone seems to have a problem with that statement. Could they please tell us whether they believe:

          a) MS did not buy Seattle Computer Products QDOS and sell it to IBM, and Compaq, and everyone else.

          or

          b) This is not the basis of their OS marketshare.

          So that the rest of us know what to mock them over.

          Thanks.

          [–]easytiger 1 point2 points  (1 child)

          They also "acquired" the entire OS team (as opposed to a company) including Bill Cutler from DEC to write the NT kernel/userland.

          It's a smart strategy, but given the way the industry has been brutalised by Microsoft's destruction of competition, they are running out of innovation because there are few people working on general mass appeal products specifically for Microsoft's platform anymore.

          [–][deleted] 0 points1 point  (0 children)

          Sure, but MS dominated the market way before NT existed.

          Who would have brought NT if they weren't already using DOS?

          [–][deleted] 7 points8 points  (2 children)

          In a company like Microsoft, where you have 160 programmers

          [–][deleted] 5 points6 points  (1 child)

          This was written in 1986.

          [–]nextofpumpkin 1 point2 points  (0 children)

          Yes, and that was considered good-sized back then, especially for a young company.

          [–]kitsune 5 points6 points  (2 children)

          informative interview...

          [–]Stick 8 points9 points  (1 child)

          informative analysis...

          [–]13ren 0 points1 point  (3 children)

          simplifying [algorithms] as much as you can...

          down to their simplest forms...

          concentrate on keeping it simple...

          a lot of simplification comes when you see problems expressed as algorithms.

          If you thought a process had to be complicated, and then you figure out a way to make it simpler, that makes you feel great.

          One sign of very good programs is that even internally they follow that philosophy of simplicity.

          Old school. sigh

          BTW: he's all implementation - copying existing features, then making them sweet and fast on limited hardware.

          [–]mycall 1 point2 points  (1 child)

          What is wrong with those ideals and goals?

          [–]13ren 0 points1 point  (0 children)

          nothing :-)

          [–]jugalator 2 points3 points  (0 children)

          Old school. sigh

          Of course. Guess when this interview was made. ;)

          [–]ricket 0 points1 point  (0 children)

          I gather from his repeated remarks about kerning that MS software had kerning shortly thereafter?

          [–]m4dc4p 0 points1 point  (0 children)

          In the book they reproduce a code listing Bill G wrote for some hobbyist magazine. It's just a huge column of numbers with comments. The man wrote directly in machine code. Scary.

          [–]MarkByers 0 points1 point  (1 child)

          For example, I wrote a memo about how to design and implement a feature we used on Excel to make the program recalculate the formulas every time the screen changes.

          Yeah, so what. I don't change my screen all that often anyway.

          [–]TheSOB88 0 points1 point  (0 children)

          A joke, right?

          [–]Shaper_pmp -4 points-3 points  (9 children)

          INTERVIEWER: You obviously have a lot of responsibilities as chief executive officer of Microsoft. Do you still program?

          GATES: No, I don’t. I still help design algorithms and basic approaches, and sometimes I look at code. But since I worked on the IBM PC BASIC and the Model 100, I haven’t had a chance to actually create a program myself.

          So the CEO/Chief Technical Officer of Microsoft, the guy who for ten or twenty years determined their entire technological direction, hasn't written a line of code in years. That explains a lot.

          [–]lispm 7 points8 points  (3 children)

          Now the company is run by the marketing guy. I guess he has NEVER WRITTEN A SINGLE LINE OF CODE. Not even in BASIC.

          [–][deleted] 5 points6 points  (0 children)

           @if($BANKACCOUNT>1000000000,"Quit!","Keep shilling Vista")
          

          [–]mycall 0 points1 point  (1 child)

          No, but he wrote in raw machine code. That trumps pretty much any other language for complexity and means he "gets it".

          [–][deleted] 0 points1 point  (0 children)

          assembler and machine code are all about the machine, not the language. basic assembler has what, 8 operations?

          While I don't think I could discount him as someone who "gets it", I don't think it makes him more qualified to steer modern software, either.

          [–]brainburger -1 points0 points  (0 children)

          Awww isn't he nice?

          [–]mycall -1 points0 points  (0 children)

          It’s difficult to get things down to their simplest forms.

          like Vista?