joel on software quotes
Recent Love
NOW WE'RE GETTING SOMEWHERE!
This is really cool. I think we're on the verge of solving the problem of how
much to charge for software! I'M SO EXCITED!
The reason I'm so excited is it looks like if you plot price against profit,
you get a nice curve with a big hump in the middle! And we all know what humps
mean! Humps mean local maxima! Or camels. But here they mean local maxima!
Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)
I would have been perfectly happy to leave it at that. If the Apps
Architecture team needed care and feeding and wanted to argue about stuff,
that was OK, I would argue with them as much as they wanted as long as they
left the programmers alone to do their work. But then something even more
interesting happened that blew my mind. I was sitting at lunch with some
coworkers, in the Redmond sun, when Pete Higgins came up to me. At that time
Pete was the general manager for Office -- I knew who he was, of course, but
didn't expect that he knew me very well.
- "How's it going, Joel?" he asked. "I hear you've been having some issues
with the App Architecture group."
- "Oh no!" I said. "Nothing I can't handle."
- "Say no more," he said, "I understand." He left. By the next day the rumor
had gotten back to me: the App Architecture group was disbanded. Not only
that, but each member of the group was sent to a different department at
Microsoft, as far apart as possible. I never heard from them again.
I was blown away, of course. At Microsoft, if you're the Program Manager
working on the Excel macro strategy, even if you've been at the company for
less than six months, it doesn't matter - you are the GOD of the Excel macro
strategy, and nobody, not even employee number 6, is allowed to get in your
way. Period.
Joel Spolsky, "Two Stories", http://xrl.us/i8ef
We're programmers. Programmers are, in their hearts, architects, and the
first thing they want to do when they get to a site is to bulldoze the place
flat and build something grand. We're not excited by incremental renovation:
tinkering, improving, planting flower beds.
Joel Spolsky
"Things you Should Never Do, Part I"
I want to tell you two stories from my career which I think are classic
illustrations of the difference between tech companies that are well-managed
and tech companies that are disasters. It comes down to the difference
between trusting employees and letting them get things done, versus treating
them like burger flippers that need to be monitored and controlled every
minute, lest they wander off and sabotage everything.
Joel Spolsky, "Two Stories"
http://www.joelonsoftware.com/articles/TwoStories.html
Have you ever heard of SEMA? It's a fairly esoteric system for measuring how
good a software team is. No, wait! Don't follow that link! It will take you
about six years just to understand that stuff. So I've come up with my own,
highly irresponsible, sloppy test to rate the quality of a software team.
The great part about it is that it takes about 3 minutes. With all the time
you save, you can go to medical school.
Joel Spolsky
"The Joel Test: 12 Steps to Better Code"
I sent them [= the Application Architecture group] a copy of my spec and went
to meet them, in case they had something interesting to say.
"Blah blah!" said one of them. "Blah blah blah, blah blah blah!" said
another. I don't think they quite had anything interesting to say. They were
very enamored of the idea of subclassing and sort of thought that people
making macros in Excel wanted to subclass a lot of things. In any case, one
of the fellows said, "Well, this is all very interesting. What's next? Who
has to approve your spec?"
I laughed. Even though I had only been at Microsoft for a few months, I knew
that there was no such thing as somebody approving my spec. Hell, nobody had
time to read my spec, let alone approve it. The programmers were bugging me
every day to get them more pages so that they could write more code. My boss
(and his boss) made it very clear to me that nobody else understood macros
or had time to work on macros, so whatever I did, it better be right. And
here this PhD working in a strange research group at Microsoft assumed that
things were a bit more formal than that.
Joel Spolsky, "Two Stories"
http://www.joelonsoftware.com/articles/TwoStories.html
TRS-80 Level-I BASIC could only store two string variables, A$ and B$.
Similarly, I was born with only two bug-storing-slots in my brain. At any
given time, I can only remember two bugs. If you ask me to remember three,
one of them will fall on the floor and get swept under the bed with the dust
bunnies, who will eat it.
Joel Spolsky
"Painless Bug Tracking"
There's a subtle reason that programmers always want to throw away the code
and start over. The reason is that they think the old code is a mess. And
here is the interesting observation: they are probably wrong. The reason
that they think the old code is a mess is because of a cardinal, fundamental
law of programming:
<<<
It's harder to read code than to write it.
>>>
Joel Spolsky
"Things you Should Never Do, Part I"
There are more subtle ways to segment. You know those grocery coupons you see
in the paper? The ones that get you 25 cents off a box of Tide detergent if you
clip them out and remember to bring them to the store? Well, the trouble with
grocery coupons is that there's so much manual labour involved in clipping
them, and sorting them out, and remembering which ones to use, and choosing
brands based on which coupons you have, and so on, and the net effect is that
if you clip coupons you're probably working for about $7.00 an hour.
Now, if you're retired and living off of social security, $7 an hour sounds
pretty good, so you do it, but if you're a stock analyst at Merrill Lynch
getting paid $12,000,000 a year to say nice things about piece-of-junk Internet
companies, working for $7 an hour is a joke, and you're not going to clip
coupons. Heck, in one hour you could issue "buy" recommendations on ten
piece-of-junk Internet companies! So coupons are a way for consumer products
companies to charge two different prices and effectively segment their market
into two. Mail-in rebates are pretty much the same as coupons, with some other
twists like the fact that they reveal your address, so you can be direct
marketed to in the future.
Joel Spolsky / "Camels and Rubber Duckies" (on the Pricing of Software)
To make people happy, you have to let them feel like they are in control of
their environment. To do this, you need to correctly interpret their
actions. The interface needs to behave in the way they are expecting it to
behave.
Thus, the cardinal axiom of all user interface design:
<<<
A user interface is well-designed when the program behaves exactly how the
user thought it would.
>>>
As Hillel said, everything else is commentary. All the other rules of good
UI design are just corollaries.
Joel Spolsky
"User Interface Design for Programmers - Chapter 1"
The difference between $399 and $220, i.e., $179, is called consumer surplus.
It's the extra value that those rich consumers got from their purchase that
they would have been perfectly happy to do without.
It's sort of like if you were all set to buy that new merino wool sweater, and
you thought it was going to cost $70, which is well worth it, and when you got
to Banana Republic it was on sale for only $50! Now you have an extra $20 in
found money that you would have been perfectly happy to give to the Banana
Republicans!
Yipes!
That bothers good capitalists. Gosh darn it, if you're willing to do without
it, well, give it to me! I can put it to good use, buying a SUV or condo or
Mooney or yacht one of those other things capitalists buy!
In economist jargon, capitalists want to capture the consumer surplus.
Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)
I pretty rapidly realized that the App Architecture group knew even less
than I did about macros. At least, I had talked to a handful of macro
developers and some Excel old-timers to get a grip on what people actually
did with Excel macros: things like recalculating a spreadsheet every day, or
rearranging some data according to a certain pattern. But the App
Architecture group had merely thought about macros as an academic exercise,
and they couldn't actually come up with any examples of the kind of macros
people would want to write. Pressured, one of them came up with the idea
that since Excel already had underlining and double-underlining, perhaps
someone would want to write a macro to triple underline. Yep. REAL common.
So I proceeded to ignore them as diplomatically as possible.
Joel Spolsky, "Two Stories"
http://www.joelonsoftware.com/articles/TwoStories.html
Brett also snuck in a feature he's been itching for: lots and lots and lots of
keyboard shortcuts. There's only one keyboard shortcut you have to memorize,
though: Ctrl+; switches FogBugz into keyboard mode and little letters light up
reminding you what the shortcuts are for various commands around the screen.
It's really pretty cool to be able to work through a bunch of cases, assigning,
editing, and reprioritizing, without ever reaching for the mouse. Combined with
the speed and responsiveness from Ajax, FogBugz has almost reached the level of
speed and fluidity of my dry cleaner's DOS 2.0 character mode database
application. And that's pretty darn responsive for a web app.
Joel Spolsky, "FogBugz 4+1/2 and Subjective Well-Being"
http://www.joelonsoftware.com/articles/FB4.5.html
A common misconception, I assume popularized by Hollywood, is that as you
get closer to shipping software, activity becomes frenetic as everybody
scrambles to finish all the things that need to be done in time for the
deadline. In the typical crappy movie, there's a mad rush of typing in a
room full of cool alterna-dressed programmers with found-object earrings and
jeans jackets. Somebody stands up and shouts to the room in general "I need
the Jiff subroutine! Somebody give me the Jiff subroutine!" A good looking
young woman in Vivienne Tam urbanwear throws a floppy disk at him. "Thanks!"
As the second hand swoops towards the :00, the whole team waits
breathlessly around Ryan Phillipe's computer and watches the "copy" progress
indicator as the final bits are put onto a floppy disk with less than a second
to spare before the VC cuts off funding.
...
On good teams, the days before shipping just get quieter and quieter as
programmers literally run out of things to do one at a time. (Yesterday I
took the day off to explore New York City with my wee niece and nephews.)
Joel Spolsky, "Working on CityDesk, Part One"
When I was 6 and my dad brought home one of the world's first pocket
calculators, an HP-35, he tried to convince me that it had a computer inside
it. I thought that was unlikely. All the computers on Star Trek were the
size of a room and had big reel-to-reel tape recorders. I thought that there
was just a clever correlation between the keys on the keypad and the
individual elements of the LED display that happened to produce
mathematically correct results. (Hey, I was 6).
Joel Spolsky
"User Interface Design for Programmer - Chapter 2"
In the world of software, you can just make a version of your product called
"Professional" and another version called "Home" with some inconsequential
differences, and hope that the corporate purchasers (again, the people who are
not spending their own money) will be too embarassed at the thought of using
"Windows XP Home Edition" at work and they'll buy the Pro edition. Home Edition
at work? Somehow that feels like coming to work in your pyjamas! Ick!
Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)
My first assignment at my first job was working at Microsoft, where I was
told to come up with a new macro language strategy for Excel. Pretty soon, I
had the first draft of the "Excel Basic" spec (which later evolved into
Visual Basic for Applications, but that's another story). Somehow, this
mysterious group of people at Microsoft called the "Application
Architecture" group got wind of my spec, which must have concerned them,
because for some reason they thought that they were in charge of things like
macro language strategies, and they asked to see my spec.
I asked around. Who's the Application Architecture group? Nobody seemed to
think they were very serious. It turns out that they were a group of just
four people, recent hires with PhDs (very unusual for Microsoft). I sent
them a copy of my spec and went to meet them, in case they had something
interesting to say.
Joel Spolsky, "Two Stories"
http://www.joelonsoftware.com/articles/TwoStories.html
Version 5.0 of Microsoft's flagship spreadsheet program Excel came out in
1993. It was positively huge: it required a whole 15 megabytes of hard drive
space. In those days we could still remember our first 20MB PC hard drives
(around 1985) and so 15MB sure seemed like a lot. By the time Excel 2000 came
out, it required a whopping 146MB ... almost a tenfold increase! Dang those
sloppy Microsoft programmers, right?
Wrong.
In 1993, given the cost of hard drives in those days, Microsoft Excel 5.0
took up about $36 worth of hard drive space. In 2000, given the cost of hard
drives in 2000, Microsoft Excel 2000 takes up about $1.03 in hard drive
space. (These figures are adjusted for inflation and based on hard drive
price data from here.)
In real terms, it's almost like Excel is actually getting smaller!
Joel Spolsky
"Starategy Letter IV: Bloatware and the 80/20 Myth"
But the idea of unifying the mess of Visual Basic and Windows API
programming by creating a completely new, ground-up programming environment
with not one, not two, but three languages (or are there four?) is sort of
like the idea of getting two quarreling kids to stop arguing by shouting
"shut up!" louder than either of them. It only works on TV. In real life
when you shout "shut up!" to two people arguing loudly you just create a
louder three-way argument.
Joel Spolsky
"How Microsoft Lost the API War"
So I have an announcement to make: if you are a programmer working in 2003
and you don't know the basics of characters, character sets, encodings, and
Unicode, and I catch you, I'm going to punish you by making you peel onions
for 6 months in a submarine. I swear I will.
Joel Spolsky
"The Absolute Minimum Every Software Developer Absolutely,
Positively Must Know About Unicode and Character Sets (No Excuses!)"
