
Programmers At Work: Bill Gates (1986) - ohjeez
http://programmersatwork.wordpress.com/bill-gates-1986/
======
Jackson-Solway
Side note: The illustrated portrait of Gates that accompanies this article was
done by, drumroll...my dad!

In fact, my pops did the illustrations for the entire series. Microsoft Press
was one of his favorite clients back in the day. Growing up, he'd tell me
stories of disorganized secretaries at Microsoft sending him awful reference
photos, so he'd look up the execs in the phonebook and call them at home.
Sometimes he'd get their wives/husbands on the phone, and he'd nicely explain
that he was an artist, and would they mind if he borrowed the family photo
album? Many fine stories from those cases, too.

Somewhat ironically, my dad never learned how to do art on a computer. Now
he's a commercial construction inspector in Seattle.

~~~
sanderjd
Wow, thanks for sharing this! That's an awesome anecdote, and I really like
his work.

~~~
Jackson-Solway
You're welcome! I talked with my dad last night and he's flabbergasted the
book is now online (in blog form, at least). He still has all the original
illustrations sitting in a flat file in our garage. We discussed what to do
with them, if anything, and I suggested the Computer History Museum might be
interested. He liked the idea, so we're going to reach out soon. If anyone
knows someone there, please drop a line to jackson.solway at gmail. Thanks!

------
dm8
I really liked this quote - "Programmers just starting out today never had to
squeeze, so it’s a little harder for them to get the right religion because
they always think of resources as being immediately available. Ten years ago
every programmer ran into resource limitations, so the older programmers are
always thinking about those things."

And --

"I still think that one of the finest tests of programming ability is to hand
the programmer about 30 pages of code and see how quickly he can read through
and understand it."

Does any company run "code comprehension" tests for hiring? Any thoughts?

~~~
hoka
IMO, that quote's garbage and really "back in my day". Our resources are just
more powerful today. We still run into performance issues with things like
bulk updates and computation times (MapReduce / distributed computing) quite
frequently.

~~~
bottompair
Ironic language given that most "engineers" today can't write code without
dependency on built in garbage collectors.

Do you really think developers these days are just as good at optimizing for
limited system resources as they were in 1986?

"We still run into..." Who? Maybe you - but most developers aren't running
into map/reduce problems every day. And when they do, they certainly aren't
coding a solution from scratch.

~~~
erkkie
Maybe these days other metrics are more important to optimize for? Ultimately
it is about transforming money (resources) into output (more resources) and
depending on times different things bottle-neck you there.

~~~
peterpathname
optimise for maintainability, reusability, composibility

~~~
erkkie
and talent pool availability

------
chris_mahan
He answers:

"The hardest part is deciding what the algorithms are, and then simplifying
them as much as you can. It’s difficult to get things down to their simplest
forms. You have to simulate in your mind how the program’s going to work, and
you have to have a complete grasp of how the various pieces of the program
work together. The finest pieces of software are those where one individual
has a complete sense of exactly how the program works. To have that, you have
to really love the program and concentrate on keeping it simple, to an
incredible degree."

This line alone demonstrates he was a good coder.

~~~
adventured
Paul Allen has said that Bill's particular gift when it came to programming
was the ability to find the way to get to the needed outcome in the absolute
fewest lines of code necessary.

~~~
brooksbp
Sometimes that approach is good. And then sometimes, after a decade of misuse,
it just leads to a nightmare of a codebase.

~~~
kamaal
Yet, being first to the market has ensured he made billions.

The definition of 'useful' and 'beautiful' varies based on circumstances.

------
chewxy
OK, so Bill had really modern thinking. I mean if you apply what he said to
modern software design, it still stands mostly true.

So here's a question - given his understanding of team management, product
design etc, how the hell did Microsoft go so wrong and end up today with
constantly-rebranded products that does not appear to have one unified
direction, but rather feel like it's been split to a billion different
directions?

Did teams in MS get bigger? He did mention that it was important that in a
team there were a few people that truly and fully understand the codebase. I
wonder if that is even possible in any of MS products nowadays

Edit:

Some really great choice quotes:

>I like to think the whole program through at a design level before I sit down
and write any of the code. And once I write the code, I like to go back and
rewrite it entirely one time.The most important part of writing a program is
designing the data structures. The second most important part is breaking the
various code pieces down. Until you really get in there and write it out, you
don’t have the keenest sense of what the common subroutines should be. The
really great programs I’ve written have all been ones that I have thought
about for a huge amount of time before I ever wrote them

Bill is One of Us! I don't think I've ever read about him hacking before

> That refers to a program that molds itself to the user’s needs and the
> user’s interests over time. There are going to be more great word processors
> and spreadsheets, and we’ll use networking and graphics and new
> architectures

> Programmers just starting out today never had to squeeze, so it’s a little
> harder for them to get the right religion because they always think of
> resources as being immediately available. Ten years ago every programmer ran
> into resource limitations, so the older programmers are always thinking
> about those things.

I think we're still saying that today.

The interview was done in 1986, and he was talking about CDROMs which took off
roughly 8 to 10 years after this interview (end of 3.1 and beginning of
win95). They really did pursue the multimedia strategy well

~~~
sp332
_I don 't think I've ever read about him hacking before_

Oh, you didn't hear about that time he implemented BASIC in 4k?
[http://www.theregister.co.uk/2001/05/15/could_bill_gates_wri...](http://www.theregister.co.uk/2001/05/15/could_bill_gates_write_code/)

~~~
chewxy
Oh, I'm familiar with that. I'm also familiar with the pancake flip algos.

What I've never read about before was his attitude to hacking

------
dredmorbius
This would be six years after he attempted to negotiate a three-way split of
the computer marketplace with IBM and Intel (who refused his proposal):

 _In the autumn of 1980, Bill 's unfamiliarity with his new purchase [of QDOS]
didn't stop him proposing, in a story told by Stanford's John Wharton who was
Intel's second point man for negotiations, a three way carve up of the market
between IBM, Intel and Microsoft - then a company with 30 employees. If
historians are to conclude that Bill "thought big", they'll be correct - but
they may also conclude that he didn't always "think legally". Market carve ups
are a violation of antitrust laws._

[http://www.theregister.co.uk/2006/06/17/saint_bill/](http://www.theregister.co.uk/2006/06/17/saint_bill/)

That said: Gates's comment that core programming teams are generally 4-5 devs
suggests a pretty strong constant through the industry. It's rare for any
specific module to grow much beyond that -- where you _do_ see more people
working on a particular piece of code, it's typically either highly
modularized (and module contributors are working on sub-pieces), or the
architecture is already highly refined, and the process is largely one of
providing bugfixes or additional features to an established base.

~~~
adventured
Market carve-ups are not an inherent violation of anti-trust laws. Neither are
possessing monopolies. Two extremely commonly held and mistaken beliefs.

Allow me to properly word it: market carve-ups, that cause consumer harm, and
that the government chooses to prosecute and in which the government manages
to prove consumer harm - are a violation of anti-trust laws.

If three companies carve up a market, benefit consumers, and the government
chooses not to pursue - that is not a violation of anti-trust laws in any way
shape or form. To make this point clearly, if the DOJ chose not to pursue
Apple with anti-trust law regarding the ebook situation, what Apple did would
not be considered a violation of anti-trust laws. Anti-trust laws are
inherently very subjective, they're up to heavy interpretation on the
government's side (and then further, what the government can demonstrate when
it comes to harm).

~~~
tanzam75
This wasn't even a market carve-up. It was a proposal for IBM to single-source
from Intel and Microsoft. That's perfectly legal for a new product that's
starting out with 0% market share.

It was legal for Microsoft to single-source the CPU for the Surface from
Nvidia. And it would have been similarly legal for IBM to single-source the OS
for the PC from Microsoft.

What's more, Microsoft had 0% share of the OS market -- thus, no market power.
And it had already agreed to produce BASIC for the IBM PC -- thus, no tying.
_Ipso facto_ , Microsoft could not possibly have been guilty of an antitrust
violation in 1980 for offering to single-source DOS to IBM.

Only the Register could come up with such an illogical conclusion like that.
But then, the Register is so virulently anti-Microsoft that they could
probably criticize Altair BASIC on antitrust grounds.

~~~
dredmorbius
_This wasn 't even a market carve-up._

Having heard Wharton's story directly from him, I can assure you that was
being proposed as told by Wharton was in fact a three-way market carve-up.

• IBM would get business.

• Intel would get embedded devices (Wharton's own work was largely on an
embedded controller that's used in automobiles, more units of it have been
created than there are humans on Earth).

• Microsoft would get the hobbyist market ("home computing").

Your ad hominem on The Register (El Rag as I like to call it) doesn't address
the fact that the source of the story is in fact John Wharton, and he has IIRC
publicly discussed it elsewhere. I've got my own beefs with the Register (its
irrational opposition to anthropogenic global warming comes to mind). And
while long critical of Microsoft, that stance seems to have softened markedly
in recent years. The stance of the site is pretty aggressively confrontational
-- it's not "biting the hand that feeds IT" for nothing.

~~~
tanzam75
That's an interesting anecdote. But that still isn't an antitrust violation.

You need market power in order to restrain trade. Otherwise, you're just
fantasizing about seizing control of a market without actually having the
power to do so. For example, if you and I get together and divided the
smartphone market 50/50 between the two of us, that would simply be laughable,
not anti-competitive.

But if you do have market power, then your actions could actually be anti-
competitive. If IBM had reached an agreement with, say, DEC to split the
mainframe and minicomputer market between them, then that would have been an
"unreasonable restraint of trade."

But Microsoft held 0% of the operating system market in 1980. In fact, in
1980, Microsoft had market power only in BASIC interpreters. As long as
Microsoft didn't try to tie BASIC interpreters to some other product, it
would've been very hard for Microsoft to violate antitrust law, even if it
tried.

> _Your ad hominem on The Register (El Rag as I like to call it) doesn 't
> address the fact that the source of the story is in fact John Wharton, and
> he has IIRC publicly discussed it elsewhere._

An _ad hominem_ is when someone claims that an argument is false simply
because it originated from a certain source. That's not what I did. I attacked
the Register _after_ addressing the argument directly. That's not an _ad
hominem_ , that's just an attack on the Register.

P.S. Since the information came from John Wharton, it would be best if we
could see what he actually said. Right now, Googling for "John Wharton IBM
Microsoft Intel" gives only three relevant hits: two articles in the Register,
and your original comment.

~~~
dredmorbius
_You need market power in order to restrain trade._

First off: that's _not_ what the statute says. And again you've failed to
provide any documentation for your claims (as adventured has also failed to
do).

So I'll leave it there.

As for Wharton's making statements elsewhere: it's my recollection that he
had. I haven't looked for them ... and no, don't see anything that's a
specific match, though you can certainly place Wharton at Intel and having met
with Gates while there.

~~~
tanzam75
> _First off: that 's not what the statute says. And again you've failed to
> provide any documentation for your claims (as adventured has also failed to
> do)._

As I've already stated, it doesn't matter what the statute says. It matters
what the courts have interpreted. See other thread:
[https://news.ycombinator.com/item?id=7188995](https://news.ycombinator.com/item?id=7188995)

As for sources, see any textbook in antitrust law. Or just Google for the
words "market power" and "restraint of trade. " These are not controversial
concepts in antitrust law. You don't need a citation to say that the sky is
blue.

There are such things are _per se_ violations, but the courts have chipped
away at this concept. For example, vertical segmentation used to be a _per se_
violation, but today it is subject to the rule of reason.

> _As for Wharton 's making statements elsewhere: it's my recollection that he
> had. I haven't looked for them ... and no, don't see anything that's a
> specific match, though you can certainly place Wharton at Intel and having
> met with Gates while there._

It's certainly ironic that you don't provide a citation for this, when you're
so aggressive about demanding citations from other people.

------
reedlaw
> You have to simulate in your mind how the program’s going to work, and you
> have to have a complete grasp of how the various pieces of the program work
> together.

> You’ve got to have somebody who’s super smart. A great programmer thinks
> about the program on a constant basis, whether driving or eating. That
> method takes an incredible amount of mental energy.

> Before I sit down to code something, most of the instructions have already
> run through my head.

> Programming takes an incredible amount of energy, so most programmers are
> fairly young.

It may be a bit anachronistic to look at statements like these in the light of
subsequent revolutions in software development such as XP and Agile. But I
can't help thinking as I read this that he's doing it wrong. All the talk
about using lots of mental energy to "have a complete grasp" of the program is
fairly useless when faced with ever increasing complexity and code base size.
Test Driven Development and clean code organization goes a long way towards
breaking large problems down into easier to manager parts.

~~~
brianpgordon
> Programs today get very fat; the enhancements tend to slow the program down
> because people put in special checks. When they want to add some feature,
> they’ll just stick in these checks without thinking about how they might
> slow the thing down. You have to have a programmer who knows the program
> inside out to guard against that.

This one struck me. Today the public methods of a class would check to make
sure the inputs are valid. Back then the programmer would just know the
location of every single caller and make sure the calls are always valid in
the first place.

It's clear that the modern approach is a winner, especially with enterprise-
size codebases, and _really_ especially when developers churn every few years
and nobody is around from when the code was originally written.

And of course Amazon is the ultimate success story of taking this idea to the
extreme with a completely service-oriented architecture. Coding super
defensively to minimal interfaces has been proven to work.

~~~
ANTSANTS
Keep in mind that Bill was talking about programming in assembly language for
extremely resource-constrained systems there. Even today, if you're trying to
write an extremely small/fast program/inner loop in assembly, you had better
be relying on "dangerous assumptions" like that, or else the result is going
to be worse than what a compiler could do.

~~~
Symmetry
Ideally you want your type system to enforce as many of these assumptions as
possible since when it can you both speed and safety.

------
Cynddl
"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. I don’t know if that’ll take ten
years–that’s not my expertise, guessing those exact time frames. Microsoft
also wants to participate in helping to make sure those machines are good
machines, building the system software into them, and then doing a lot of the
important applications they’ll use."

~~~
code_duck
This leads into a section that I find interesting, where he envisions every
useful application on computers having to do with CD-ROMs and their vast
storage space.

He doesn't mention anything at all about networking, which is a very true to
the story of how the last 10 years of his tenure as a chief at Microsoft
turned out.

Microsoft succeeded in what he stated, creating software for computers that
almost every home used, indeed with software on CD-ROM. However, the
applications he envisioned - catalogs, phone books, maps - actually turned out
run on the Internet, not local storage. The attempts to distribute things like
catalogs on CD-ROM turned out to be cumbersome and expensive, and too
difficult to keep updated. He mentions the vast storage space of CDs, but the
effective storage space of a computer connected to the Internet dwarfs the
capabilities of any local storage.

~~~
dmethvin
> He doesn't mention anything at all about networking ...

It was a blind spot for Gates and Microsoft in the 1980s. He wasn't alone, of
course. People like Marshall McCluhan had laid out a vision for it years
before but Gates was really focused on software for devices and not the
network. It wasn't until the late 1980s that Microsoft turned its attention to
Novell which was making a killing in PC networking. (Gates recruited Jim
Allchin from network company Banyan in 1990.) By the mid-1990s there wasn't
much left of Novell, but Microsoft's interest and strategy there was purely
driven by business and not vision. That was clear when they were clobbered
again by the Internet.

------
NhanH
"INTERVIEWER: Does accumulating experience through the years necessarily make
programming easier?

GATES: No. I think after the first three or four years, it’s pretty cast in
concrete whether you’re a good programmer or not. After a few years, you may
know more about managing large projects and personalities, but after three or
four years, it’s clear what you’re going to be."

Out of curiosity, is there any experienced programmer that would dispute or
agree with this statement?

~~~
danellis
He appears to answer a slightly different question to the one that was asked,
but I agree with what he said in his answer. To be a really good programmer,
you need to have a particular kind of brain, and if you do, you will pick
everything up very quickly. If you don't, you will always have a weak grasp of
some concepts no matter how much you are taught.

There are university lecturers who agree that it's clear within the first
couple of weeks whether someone has the aptitude to study CS. I remember a
paper that was talked about a few years ago that described a "double hump" in
aptitude, clearly separating the two groups. They wrote a very short test that
was a good predictor of success. There's an article on Coding Horror about it:
[http://www.codinghorror.com/blog/2006/07/separating-
programm...](http://www.codinghorror.com/blog/2006/07/separating-programming-
sheep-from-non-programming-goats.html)

~~~
busyant
That is a fascinating paper referred to in the blog post.

I teach introductory chemistry, and for a long time, I've felt that there are
students who are just incapable of making relatively simple mental models of
the concepts that we discuss. To give an example, there are students who don't
have a mental model of what _density_ is.

I imagine that most people here have a good grasp of density and each of us
has some mental model where the 'matter' in _dense_ materials is "tightly
packed" when compared to less dense materials. This isn't a perfect mental
model, but it's reasonably accurate.

The students who don't/can't make these models view the entire course as a
collection of arbitrary formulas that make absolutely no sense and require
painstaking memorization. As a rule, they do poorly, unless they are
exceptionally good at memorizing.

~~~
kirse
_I 've felt that there are students who are just incapable of making
relatively simple mental models of the concepts that we discuss._

Just because this _seems_ to be the case, I would only ask that you don't let
this become a limiting belief that you project on your "incapable" students.

I only say so because I know I've taken various courses over the years (HS or
college) where that sort of analogous big-picture communication you're talking
about didn't really click for a few months or even years. When one is
overwhelmed - or at least feeling overwhelmed - with the volume of new
fundamental concepts to be grasped, it's akin to having 1,000 jigsaw pieces
dumped on your coffee table. Oh and by the way, we're going to apply time
pressure and grade you on your ability to figure out the big picture.

In that case, learning can turn into a fear-based "tread water because I'm
drowning" activity where rote memorization is the fallback tool to get the
learner to shore alive. The outcome is no longer the joy of understanding and
meditating on those analogies/models to get the fundamentals to click, but
trying to avoid death (err, a failing grade).

It wasn't until I revisited those certain topics later without the time-
sensitive pressure of exams/grades that the broader models for understanding
would "click" and all those rotely memorized fundamentals would fall into
place - which is an indescribable joy.

So while your incapable students may not seem to grasp the big picture now,
it's likely you are still making a difference by implanting those fundamentals
which will snap together later on in life.

~~~
busyant
You make a fair point and my generalization was certainly too sweeping.

One of the things that I tell my students is that sometimes, if they stick
around long enough, things will make sense.

That being said, I'm still at a loss on how to _help_ the students who aren't
making mental models that (to me) seem relatively fundamental. I try to use
visuals and videos when applicable and when possible, but I would use other
approaches if I could think of something that would be helpful.

Finally, I think/speculate there is a continuum of skill with mental model
building. When I was a postdoc, I worked with people who had deep mental
models of statistical mechanics that I just didn't have. So...I know what it
feels like, but I don't know how to fix it.

------
colinbartlett
"There’s a lot of talk about how large software companies find it difficult to
attract talented people who can produce great software, because these
mavericks are so independent that they want to work on their own. "

Still appropriate today!

------
DodgyEggplant
"We’re no longer in the days where every program is super well crafted. But at
the heart of the programs that make it to the top, you’ll find that the key
internal code was done by a few people who really knew what they were doing."

------
taspeotis
"You’re seeing a lot more cases where people can afford to use C, instead of
using assembly language"

God bless Intel Core i7 CPUs that allow me to use JIT'd, GC'd languages
without a second thought.

------
Greenisus
My favorite quote: "the best way to prepare is to write programs, and to study
great programs that other people have written. In my case, I went to the
garbage cans at the Computer Science Center and I fished out listings of their
operating system."

------
ep103
> 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.

Holy shit this is amazing

------
alionfalcon
Really wonder what others think about this line: "INTERVIEWER: What do you
consider the most difficult part of computer programming? GATES: The hardest
part is deciding what the algorithms are, and then simplifying them as much as
you can."

~~~
danellis
Everyone knows the two hardest things are cache invalidation, naming things
and off-by-one errors.

------
nswanberg
Does anyone know of any other Bill Gates interviews of this quality from, say,
1996? I suspect that one doesn't exist, but I'd love to hear what sort of
lessons he learned from ten more years of running Microsoft as the company got
larger and he moved "up the stack".

It's clear, though, he still paid attention to details:

1991: Product review for Excel Visual Basic -
[http://www.joelonsoftware.com/items/2006/06/16.html](http://www.joelonsoftware.com/items/2006/06/16.html)

2003: Critique of Windows usability -
[http://blog.seattlepi.com/microsoft/2008/06/24/full-text-
an-...](http://blog.seattlepi.com/microsoft/2008/06/24/full-text-an-epic-bill-
gates-e-mail-rant/) (the article emphasises the drama, calling it an "epic
rant" and shows how Gates "isn’t immune to the frustrations of everyday
computer users", but that's just some journalism bullshit. What's more
interesting is that he still has a wicked attention to detail, and you still
see that he's the same person that gave the interview in the original post.)

~~~
tanzam75
> _What 's more interesting is that he still has a wicked attention to detail,
> and you still see that he's the same person that gave the interview in the
> original post.)_

I remember seeing this memo back when it originally came out. If I recall
correctly, the problem was not actually fixed after Bill Gates complained
about it. The replies to his email just pointed fingers at each other.

Thus, all the talk of Microsoft needing a Steve Jobs are off the mark.
Microsoft already had a Steve Jobs -- he was named Bill Gates. For whatever
reason, even he couldn't polish out the flaws. There's something in the
culture of the organization that prevents attention to fit-and-finish.

For example: Bill Gates complains about the C:\Documents and Settings\billg\My
Documents\My Pictures folder. This was in 2003. OK, so it got fixed in Vista.
But why couldn't he get this fixed for XP? I doubt he was happy with it when
he ran the XP betas.

My pet peeve: Explorer gives an uninformative "Try Again" dialog when I try to
delete an open file. Why doesn't it tell me which program is holding the lock?
Microsoft bought Sysinternals eight years ago! They just need to integrate the
code from the _handles_ utility, and add a "Switch to" or "End task" button to
make it easier to close the program.

~~~
nswanberg
Agreed, but to become as good a consumer company as Apple, Microsoft would
have needed a Steve Jobs (someone more dedicated to focus and aesthetics of
form and function). It's not clear Gates wanted to be the same sort of
consumer company. I'm sure he'd have taken it if he could've gotten it, but
probably not at the expense of sales of site licenses to businesses.

Thanks for the pointer to _handle_! I've got the sysinternals suite but never
bothered to explore much beyond Process Monitor.

~~~
tanzam75
> _Thanks for the pointer to handle!_

You're welcome, it's a useful tool when you just can't seem to delete a file.
Although you're right -- it's called _handle_ (singular), not _handles_
(plural).

Actually, I think I do this all the time. I type _handles_ , get an error
message, and then think, "Maybe it's just _handle_." After all, multiple
programs can have a file open at the same time, and the _handle_ utility can
actually list more than one program. So why isn't the name of the utility
plural?!

Yet another fit-and-finish issue in a Microsoft product ...

~~~
nswanberg
Oh, for what it's worth, I italicised the name because it's a work, and I
guess I do that for programs in addition to books, not to point out a correct
spelling. Pointing out spelling mistakes and grammar errors on the internet
seems needlessly rude. :)

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

------
pedalpete
"one of those people has to have the proven ability to really absorb a
program. And when that lead person is uncertain about something, he or she
should be able discuss it with even more experienced programmers."

I've always thought as the lead, you're supposed to be the most experienced
programmer.

~~~
UK-AL
If experience was correlated with skills, maybe.

------
jnevelson
Interesting.

"...our present thinking is that we won’t have to increase the size of our
development groups, because we’ll simply be making programs that sell in
larger quantities. We can get a very large amount of software revenue and
still keep the company not dramatically larger than what we have today."

~~~
encoderer
And to think what Microsoft does today, with only 160 programmers and 100,722
salesmen.

Of course, 640k... I kid BillG.

~~~
encoderer
This crowd either lacks a sense of humor or any tolerance of bad jokes. Or
both.

------
mathattack
Very interesting historical anecdotes.

The following shows his move to management: _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._

The following shows pre-agile thinking on development: _I like to think the
whole program through at a design level before I sit down and write any of the
code. And once I write the code, I like to go back and rewrite it entirely one
time.The most important part of writing a program is designing the data
structures. The second most important part is breaking the various code pieces
down. Until you really get in there and write it out, you don’t have the
keenest sense of what the common subroutines should be. The really great
programs I’ve written have all been ones that I have thought about for a huge
amount of time before I ever wrote them. I wrote a BASIC interpreter for a
minicomputer in high school. I made massive mistakes in that program, and then
I got to look at some other BASIC interpreters. So by the time I sat down to
do Microsoft BASIC in 1975, it wasn’t a question of whether I could write the
program, but rather a question of whether I could squeeze it into 4K and make
it super fast. I was on edge the whole time thinking, “Will this thing be fast
enough? Will somebody come along and do it faster?”_

It was a very different time!

~~~
kyberias
> The following shows pre-agile thinking on development

Oh come on! When he says that "until you really get there and write it out..."
shows a lot of agile thinking. Agile does not in any way exclude design before
writing code! He also talks about rewriting (refactoring).

It wasn't that different of a time!

------
brudgers
What struck me was the way in which Microsoft's coding hammer was so
sophisticated that it viewed the design issue of accessing vast amounts of
information by ordinary people as primarily a software problem (the
interactive CD Rom) rather than a bandwidth problem. Though in fairness nobody
was betting on the creation of the commercial internet at the time of the
interview.

Gates and Microsoft saw the future and placed an early bet- much as they did
with embedded and mobile Windows in the 1990's. In both cases, their timely
early solution was made obsolescent when communication infrastructure scaled
and bandwidth further commodified first over wire then over wireless.

In the first case, Microsoft underestimated their success. Computers in every
home made providing cheap bandwidth profitable. With wireless, they simply had
more than a decade of designs intended to minimize bandwidth consumption
rather than actively encourage it. The idea of selling information about their
customers [and Microsoft has always viewed users as customers rather than
consumers though that could change] just wasn't consistent with their pre-
goolified internet age ethics.

------
sreyaNotfilc
Since we are all adding quotes I'd like to add this one...

"No great programmer is sitting there saying, “I’m going to make a bunch of
money,” or, “I’m going to sell a hundred thousand copies.” Because that kind
of thought gives you no guidance about the problems."

Amen brother.

Too many times, especially here on HN, developers create something to make the
big bucks. Usually they find little shortcuts for the things they want. The
final product ends up sacrificing the mission as well as the quality.

I like the adage wise people give to enthusiastic people who want to "start
something".

When starting something, be it a business, learning a skill, etc, make sure
you're doing it for you.

Bill, I feel hit that on the head about BASIC. He saw a problem, and worked on
it for himself. Others liked it and started using it. Reminds me on David
Heinemeier Hansson's talk on why he built Ruby on Rails. It was a means to an
end that ended up helping him and others in the process.
[http://bigthink.com/users/davidheinemeierhansson](http://bigthink.com/users/davidheinemeierhansson)

------
jhallenworld
I've been playing with CP/M recently (on an emulator). It strikes me that
Microsoft had a very clear vision at this early stage: it was to port all of
the popular (to businesses) large computer languages to micros. Hence we have
not only BASIC, but very complete implementations of Fortran and COBOL for
8080/Z-80. I wonder if there is a quote from Bill Gates about this?

------
jordan_clark
This is a great, great article. It gives you insight and makes you realize how
intelligent he really is. Compared to Steve Jobs, I would bet Gates' IQ is a
full 10-15 points higher. However, what Jobs lacked in intelligence he more
than made up for with charisma and ability to relate to people. Highly
enjoyable read.

------
NAFV_P
Nice picture of a young and sprightly looking Bill at the top of the page...
looks like it was created on MacPaint.

~~~
georgiecasey
Nice, you just dissed the father of someone in this thread!

[https://news.ycombinator.com/item?id=7187951](https://news.ycombinator.com/item?id=7187951)

~~~
NAFV_P
Wow, much coincidence...

I'll go and hide in the corner while all onlooking HN readers facepalm.

~~~
Aloha
I thought the same thing - I think its a limitation of the digitization of the
original image.

------
sfjailbird
This once again makes it clear that Bill Gates, although incredibly smart and
successful, was never a visionary. Notice how he expects an immediate trend
towards learning computers, that adapt to the user by learning from their
behavior and a set of rules. Although an enticing idea this resulted in
Microsoft Bob and probably not much else.

Also remarkable is the absence of any mention of the internet, although it was
quite developed and capable already in 1986 - Microsoft famously missed the
boat on this until the 'Cornell is wired' memo.

Finally, in every question about how Microsoft decides _what_ to build, he is
very vague and hardly ever talks about actual users. We now know that the main
methodology employed by Microsoft was to simply rip off existing successful
products and bundle them with Windows.

~~~
laureny
> This once again makes it clear that Bill Gates, although incredibly smart
> and successful, was never a visionary.

He became successful because he was a visionary.

He saw in 1978 that the future was in software, not in hardware (Apple went
the other way and ended up in a hole for two decades because of that mistake).
Then he saw the future of licensing software and bootstrapped Microsoft based
on it.

Then he saw the importance of operating systems and built the company around
it.

Then he saw the importance personal computing with Word and Excel.

You can say a lot of things about Bill Gates but saying he was not a visionary
is absurd.

------
bennyg
Another great interview, from the same time by the guy who created Pac Man:
[http://programmersatwork.wordpress.com/toru-
iwatani-1986-pac...](http://programmersatwork.wordpress.com/toru-
iwatani-1986-pacman-designer/)

------
wikiburner
_INTERVIEWER: What do you consider your greatest achievement ever in
programming?_

I thought for sure it was going to be DONKEY.BAS:

[http://www.youtube.com/watch?v=kymzTlqi1SY](http://www.youtube.com/watch?v=kymzTlqi1SY)

------
kolev
None of the web developers I've interviewed in the States was able to
implement a sorting algorithm of their choice. The one developer who got close
to accomplishing this used min() on array_slice() in PHP.

~~~
sreyaNotfilc
That's not to say that all web developers can't do that. I can. Its not that
tough.

I do honestly wonder what it is they teach in college. I've took 2 years (on
and off) at a Community College and was able to do very well for myself. But,
I have seen many "developers" that had impressive 4 year degrees on the resume
and couldn't create an algorithm that removed duplicate records from a record
set. Lol, some couldn't even tell me what their favorite text editor was ("All
of them" ~Palin).

I'm not sure what to tell you, kolev.

For me, it has come to the point where asking trivial questions during
interviews just doesn't work. You truly know what a dev can do when a dev
develops.

In my shop, we work on classic asp, and asp.net web applications. I'm
currently creating a package that will address the common building and
troubleshooting scenarios pertaining to those frameworks. If the applicant
cannot complete the task to satisfactory, then they don't belong here.

Good developers are out there. But you have to make a decision "Am I willing
to pay a premium for them, or see if I can get just get lucky?"

~~~
kolev
When did I say "all"? I shared my personal experience interviewing web
developers in Southern California. And, trust me, it's a good sample size as
I've interviewed tens over the years! Also, the HN crowd consists of probably
the best software engineers in the industry and that's why HN replaced a lot
of aggregated blog feeds and the comments are especially valuable! Maybe I
should've clarified that my observation certainly does not apply to the
members of this community! :)

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

Wow. This statement is epic in the context of Microsoft today. Seems like
everything they put out is feature rich but overly complicated.

------
BlackDeath3
I didn't realize that he had stopped personally programming so early.

~~~
TrainedMonkey
I think that is part of the price you pay when company you launched turns so
successful. I doubt Zuckerberg codes either.

~~~
wslh
Yes, imagine if you code part of a product, your company makes three branches
and in the middle of the deadline to release a new version they call you to
fix some bugs and merge the code into the branches.

------
suyash
INTERVIEWER: Where do the ideas for programs come from?

GATES: Well, there’s no formal process, that’s for sure. At Microsoft, there’s
usually a brainstorming session at night or on the weekends. Everybody has a
general idea, like, we want to do the world’s best word processor. ....

=> Well now, we have found a better way and companies are internally finding
great ideas by doing hackathons!

------
billiam
For my money the more interesting 1986 PAW interview is linked on the sidebar,
the one with Jaron Lanier, who I remember interviewing around then. Not a lot
about the real work of programming, which Gates talks about like the automaton
we know he was at that time, but many many insightful ideas about what
programming means.

------
anentropic
"I thought we could save a few bytes and tighten things up. We just tuned the
program very, very carefully, and ended up with a 4K BASIC interpreter. 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"

so sad: from that to... Windows

------
elliottcarlson
Somewhat related - I highly recommend checking out the books Coders at Work
and Founders at Work.

------
zequel
"One way is to have small project teams, typically four or five people, and
one of those people has to have the proven ability to really absorb a
program.."

Genesis of the Program Manager @MS? I didn't think it was that old!

------
igrekel
Wonder if anyone has access to those texts from John Norton he refers to?

------
sgt
I love this quote: "You’re seeing a lot more cases where people can afford to
use C, instead of using assembly language.". Yes. Definitely 1986.

------
hifier
I stoppped reading when I got to this:

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

I know things were different back then, and Bill did not have the luxury of
building on the wisdom learned over decades of experience, but 'separation of
concerns' and 'loose coupling' have been central to every design decision I've
made. It's hard to conceive of how one would believe that a tightly coupled,
brittle design was a good one.

~~~
skittles
In assembly language, a sub-procedure can save the state of all the registers
it will use before using them and then set the state back when it is done
(push register values on the stack, do work using those registers, and then
pop the state back). This is the safe thing to do, but it wasn't the best way
to write code back then. People would use unsafe procedures instead to reduce
code size. With that said, I think Bill was talking about the fact that if the
program doesn't repeat itself (by using procedures to abstract common idioms),
then a mistake would be amplified since it would cause problems for all call
sites.

~~~
hifier
Yeah, I could see interpreting this quote that way. However, if taken
literally it implies a very intertwined world. It's probably not fair to to
dissect this so much, however.

~~~
pjscott
It was a different time. Intertwining your world made sense if it could
squeeze a BASIC interpreter into 4k. Now my laptop has 8000000k of memory.

------
etanazir
"You’re seeing a lot more cases where people can afford to use C, instead of
using assembly language."

------
radisb
GATES: "... We knew what programmers wanted, because we’re programmers. So we
wrote BASIC."

Nuff said.

------
nsxwolf
So quaint, talking about "programs" instead of "applications".

------
mortdeus
"The PDP operating system."

Unix?

~~~
justin66
I'm pretty sure he's talking RSX11, VMS, and VAXELN. I believe when Gates says
"Everybody who wrote the PDP operating system influenced me" the everybody
he's talking about is Dave Cutler and friends.

You know, the people he hired to write Windows NT.

------
seivan
Thanks Bill Gates for saying what I always thought...

"choose features to put into programs. To do that, you have to have a
reasonable understanding of what’s easy and what’s not easy to do."

For those Product/UX/Tone Goons who can't actually build....

Also this gem

"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."

Bill knew it back in 86... we still do shit like that.

~~~
sytelus
Today at Microsoft, not many managers actively write code. They had been doing
it "back in the days" but not any more. Many don't even have Visual Studio
installed in their primary work machine. I've seen tons working off of Surface
with their only actively used apps being browser and Outlook. In fact, as
higher up you go you are less likely to find anyone who has written any code
in any reasonable period like past 2 years. It is not uncommon for a developer
who is starting to feel that it's hard to keep up with coding asking for a
management position aggressively. I would wager that more than 70% of the
managers are ex-developers who no longer wants to deal with complexity or
responsibility of writing code.

~~~
rlu
I don't think by "non-programmers" he meant "people who don't actively
program".

I think he meant "people that don't even know how to program".

In this article bill gates says in the first line that he no longer writes
code. But clearly he would not classify as a "non-programmer".

Today's managers can still provide valuable input (e.g. algorithm design -
like Gates did when this article was written) even if they don't code day to
day.

I'm a program manager at Microsoft so I don't actually write code. That said,
I majored in CS and know my stuff pretty well. I don't consider myself a "non-
programmer". That said, I try and increase my credibility among "my" devs by
doing projects outside of work. This also helps me keep up with the times.

------
kimonos
Great post! It's lengthy but I had a great time reading! Thanks for sharing!

~~~
rbanffy
This interview is part of a really great book. The site probably has all the
interviews.

[https://www.goodreads.com/book/show/2092682.Programmers_at_W...](https://www.goodreads.com/book/show/2092682.Programmers_at_Work)

~~~
jmcdowell
Would you know/recommend any books from the early Microsoft era? I enjoyed
Masters of Doom and would love to know if there is anything which goes into
that much detail of the early days of Microsoft, actually any company would be
interesting.

~~~
pjmorris
Three I'm familiar with, all recommended:

'Gates', Stephen Manes [1]

'Show Stopper!: The Breakneck Race to Create Windows NT and the Next
Generation at Microsoft', G.P. Zachary [2]

'Microsoft in the Mirror', Karin Carter [3]

But I agree with the parent that 'Programmers At Work' is a great book.

[1] [http://www.amazon.com/Gates-Microsofts-Reinvented-
Industry-H...](http://www.amazon.com/Gates-Microsofts-Reinvented-Industry-
Himself/dp/0671880748)

[2] [http://www.amazon.com/Show-Stopper-Breakneck-Generation-
Micr...](http://www.amazon.com/Show-Stopper-Breakneck-Generation-
Microsoft/dp/0029356717)

[3] [http://www.amazon.com/Microsoft-Mirror-Nineteen-Insiders-
Exp...](http://www.amazon.com/Microsoft-Mirror-Nineteen-Insiders-
Experience/dp/097252990X)

~~~
jmcdowell
Thank you very much, I'll have a look at those 3. Completely agree about the
parent book, it does seem very interesting. Although potentially only
available in the UK as an import.

