I had a manager that would repeatedly use this type of remark. We had this particular application that on one could touch without breaking something. It was always a mess. He would often remark "I wrote the whole thing over a weekend, why can't you guys make a tiny little change without breaking it?" One day I finally got fed up with him and replied "Because it's the quality of work you'd expect from an entire application written over a weekend."
I think the real lesson here is that every time you add a feature, you are adding development overhead to every other feature, leading to exponential development time. I'm sure if segment tuning was one of the first thing to go into windows, it would have been much simpler to implement. However, at later stages in the development you have to account for how different, already-written applications are loading their memory, and thus the feature needs handle far more edge cases than it would have if this was an earlier-implemented feature. I'm not saying the overall time to develop segment-tuning would be shorter, in the long run had it been developed first, but the perception of development-time for this feature would be shorter (since any segment tuning edge cases that you ran into while writing an application would be considered part of the app's development time, not segment-tuning's development time).<p>I'm sure that if Mr. Gates had implemented FAT at a later date, he would have needed a <i>much</i> longer plane ride.
Gates is one of those rare people who is at a time a good developer, good manager and a cunning businessman. I started to appreciate him after watching <i>Triumph of the Nerds</i> documentary series. I literally loled for 5 minutes after watching Gates in an event parodying IBM which was organised by Jobs <a href="http://youtu.be/riyAe4BKAng?t=20m1s" rel="nofollow">http://youtu.be/riyAe4BKAng?t=20m1s</a>.
From 12BitSlab in article's comments<p>> I don't mind if billg gets a little arrogant at times. One merely has to look at how he wrote the ROM code for the Altair to realize his abilities.<p>> Also, ALL of the concepts embodied in modern tablets and smartphones were "invented" by billg when he wrote the code for the Tandy 100. Things like "instant on", data stored in non-volitile memory, small productivity apps, continue from the same point after power down, etc. Persoannly, I put billg in the Top 5 of all-time CS people who contributed to computing.<p>This is an interesting claim, I was always under the impression that while Gates could code, he wasn't at all a CS giant.
So the FAT story may be an exaggeration, but does Brandon Eich's Javascript-in-10-days (<a href="http://www.quora.com/JavaScript/In-which-10-days-of-May-did-Brendan-Eich-write-JavaScript-Mocha-in-1995" rel="nofollow">http://www.quora.com/JavaScript/In-which-10-days-of-May-did-...</a>) still count as a "STFU-I'm-the-boss" feat?
Am I the only one who didn't interpret the quote as him showing off? If I used that line, it would be a way of telling them that the problem of segment tuning is an artificial limitation imposed by a format that hasn't gotten enough attention. "I wrote FAT on an airplane" would be my way of saying, "don't come up with better ways to work around my half-assed implementation. spend time improving the implementation so segment tuning isn't even something you have to worry about."
When he says "He wrote FAT on an airplane" he means with pencil and paper since FAT is so old that there were no laptops to do that on. Which maybe he figured out all of the specs, but he didn't put code down and debug it. Of course in those days writing it on paper was quite common before people typed it into the computer. And that is quite impressive in and of itself. Most of the time people treated that activity as if they were coding so they were very precise. Now a days we're fast, but we aren't as precise.
Bill Gates complains that people aren't doing real programming and people berate him to shut him up. Steve Jobs throws the first iPod into a fish tank and he's revered as a God.<p>I guess it's no wonder why the mainstream of Apple and Microsoft is what it is.
To be honest I can't afford to commute and do nothing, I have to plan new features for my products, redesign existing ones, or at least read a tech book/article, otherwise I feel really frustrated because I dislike to stay still.<p>The best ideas I have ever had happened during my commute, so I feel familiar with the "I wrote FAT on an airplane" statement.
Isn't this basically Bill Gates exemplifying the "Rockstar Programmer" persona?<p>"I did X in Y time so why don't you follow my lead" may have been a motivational tactic at the time, but it did backfire. I'm forced to wonder if this is how the motif began.
About "optimization", Gates likely had
a point. That problem of assigning
code blocks (subroutines/functions) to
memory segments
does suggest a
significant role for optimization.<p>What is optimization? For a very
sparse description,
for the set R
of real numbers,
positive integers
m and n, functions f: R^n --> R
and g: R^n --> R^m, find x in R^n
to solve<p>minimize f(x)<p>subject to<p>g(x) >= 0<p>So, set up a mathematical description
of the problem based mostly just on the
'cost' function f, that is, what want
to minimize, and 'constraints' g
that keep the solution 'feasible', that is,
realistic for the real problem. Then look
for a solution x. Yes, easily enough such
problems can be in NP-complete and
still difficult otherwise.<p>Likely what Gates wanted was function f
to be the execution time and function
g to force honoring the 64KB limit per segment,
etc.<p>Then a big question would be, assuming
what software to have its segments
assigned?<p>So, for an answer, just take some
Windows and/or Office code and
get the total execution time on
a <i>typical</i> workload.<p>Might also want to be sure that
on any of several workloads, the
optimal solution was no worse than
some factor p in R of the best
solution just for that workload.
Then keep lowering p until the
f(x) starts to rise significantly
and come up with a curve of f(x)
as a function of p. Present the
curve to Gates and have him pick
a point.<p>Gee, should we rule out having
the same subroutine/function in more than
one segment? Hmm ....<p>Just where Gates learned about optimization
would be a question, but he had a point.
You can read it a couple of ways, you can take it as Gates showing off that he did something hard quickly, which is certainly valid, or you can take it as Gates saying 'stop fiddling whilst Rome burns and get it done'. You can hammer out complex ideas quickly and lose your life twiddling the details, or just do it and move on.<p>Or more likely he was being a bit of a jerk.
Am i not getting something i thought that fat was created by Marc Macdonald?
<a href="http://en.wikipedia.org/wiki/File_Allocation_Table#Original_8-bit_FAT" rel="nofollow">http://en.wikipedia.org/wiki/File_Allocation_Table#Original_...</a>
It took me a while to realize that it didn't mean writing code that ran aboard an airplane, but code that was written while on an airplane. Somehow the latter didn't even cross my mind as something that could be considered impressive.