A collection of quotes, fortunes, anecdotes, and quips. Get new quotes everyday on facebook, twitter, and tumblr.

joel on software quotes

We have lots of FogBugz customers who have high-priced Remedy, Rational, or
Mercury products sitting on the shelves after investments of well over
$100,000, because that software isn't good enough to actually use. Then they
buy a couple of thousand dollars worth of FogBugz and that's the product they
really use. The Rational salesperson is laughing at me, because I have $2000 in
the bank and he has $100,000. But I have far more customers than he does, and
they're all using my product, and evangelizing it, and spreading it, while
Rational customers either (a) don't use it or (b) use it and can't stand it.
But he's still laughing at me from his 40 foot yacht while I play with rubber
duckies in the bathtub. Like I said, all three methods work fine. But cheaper
prices is like buying advertising and as such is an investment in the future.

Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)


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"


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)


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"


The recruiters-who-use-grep, by the way, are ridiculed here, and for good
reason. I have never met anyone who can do Scheme, Haskell, and C pointers who
can't pick up Java in two days, and create better Java code than people with
five years of experience in Java, but try explaining that to the average HR
drone.

Joel Spolsky, "The Perils of JavaSchools"
http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html


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"


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"


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


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)


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"


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"


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


When you're setting a price, you're sending a signal. If your competitor's
software ranges in price from about $100 to about $500, and you decide, heck,
my product is about in the middle of the road, so I'll sell it for $300, well,
what message do you think you're sending to your customers? You're telling them
that you think your software is "eh." I have a better idea: charge $1350. Now
your customers will think, "oh, man, that stuff has to be the cat's whiskers
since they're charging mad coin for it!"

And then they won't buy it because the limit on the corporate AMEX is $500.

Misery.

Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)


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)


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"


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


“O frabjous day! Callooh! Callay!” I chortle. We have found the optimum price,
$220, and that's how much you should charge for your software. Thanks for your
time.

Ahem.

Thank you for your time! Nothing more to see here! Move along now!

You're not leaving.

I see.

Some of the more observant members of my audience have detected through careful
analysis of the scrollbar position in their web browser that I might have
something more to say other than "$220."

Well, maybe. There's just a tiny little loose end I left untied which I might
as well tie up now if you're all still up for it. Ok? OK!

Joel Spolsky / "Camels and Rubber Duckies" (on the Pricing of Software)


You can have focus groups and ask people, but they'll lie to you. Some people
will lie to show off their generosity and wealth. "Heck, yeah, I'd buy a pair
of $400 jeans in a New York Minute!" Other people will lie because they really
want your thing and they think you'll decide to charge less money if they tell
you a low number. "Blogging software? Hmm. I'd pay, at most, 38 cents."

Then you ask another focus group the next day, and this time, the first man to
speak has a crush on a pretty woman in the group, and he wants to impress her,
so he starts talking about how much his car cost and everyone is thinking Big
Numbers. And the day after that, you serve Starbucks during the break, and
while you're in the john everyone unbeknownst to you gets into a side
conversation about paying $4 for a cup of coffee, and they're in a real frugal
mood when you ask them about their willingness to pay.

Then you finally get the focus group to agree that your software is worth $25 a
month, and then you ask them how much they would pay for a permanent license
and the same people just won't go a penny over $100. People seriously can't
count.

Joel Spolsky / "Camels and Rubber Duckies" (on the Pricing of Software)


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!)"


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"


Bad Idea #1: Site Licenses.

The opposite of segmentation, really. I have certain competitors that do this:
they charge small customers per-user but then there's a "unlimited" license at
a fixed price. This is nutty, because you're giving the biggest price break
precisely to the largest customers, the ones who would be willing to pay you
the most money. Do you really want IBM to buy your software for their 400,000
employees and pay you $2000? Hmm?

As soon as you have an "unlimited" price, you are instantly giving a gigantic
gift of consumer surplus to the least price-sensitive customers who should have
been the cash cows of your business.

Joel Spolsky
"Camels and Rubber Duckies" (on the Pricing of Software)


A lot of software developers are seduced by the old “80/20” rule. It seems
to make a lot of sense: 80% of the people use 20% of the features. So you
convince yourself that you only need to implement 20% of the features, and
you can still sell 80% as many copies.

Unfortunately, it's never the same 20%. Everybody uses a different set of
features. In the last 10 years I have probably heard of dozens of companies
who, determined not to learn from each other, tried to release "lite" word
processors that only implement 20% of the features. This story is as old as
the PC. Most of the time, what happens is that they give their program to a
journalist to review, and the journalist reviews it by writing their review
using the new word processor, and then the journalist tries to find the
"word count" feature which they need because most journalists have precise
word count requirements, and it's not there, because it's in the "80% that
nobody uses," and the journalist ends up writing a story that attempts to
claim simultaneously that lite programs are good, bloat is bad, and I can't
use this damn thing 'cause it won't count my words. If I had a dollar for
every time this has happened I would be very happy.

Joel Spolsky
"Strategy Letter IV: Bloatware and the 80/20 Myth"


Imagine that we had a way of sending actors from Broadway to Hollywood that
involved putting them in cars and driving them across the country. Some of
these cars crashed, killing the poor actors. Sometimes the actors got drunk
on the way and shaved their heads or got nasal tattoos, thus becoming too
ugly to work in Hollywood, and frequently the actors arrived in a different
order than they had set out, because they all took different routes. Now
imagine a new service called Hollywood Express, which delivered actors to
Hollywood, guaranteeing that they would (a) arrive (b) in order (c) in
perfect condition. The magic part is that Hollywood Express doesn't have any
method of delivering the actors, other than the unreliable method of putting
them in cars and driving them across the country. Hollywood Express works by
checking that each actor arrives in perfect condition, and, if he doesn't,
calling up the home office and requesting that the actor's identical twin be
sent instead. If the actors arrive in the wrong order Hollywood Express
rearranges them. If a large UFO on its way to Area 51 crashes on the highway
in Nevada, rendering it impassable, all the actors that went that way are
rerouted via Arizona and Hollywood Express doesn't even tell the movie
directors in California what happened. To them, it just looks like the
actors are arriving a little bit more slowly than usual, and they never even
hear about the UFO crash.
Joel Spolsky's Analogy of TCP, "The Law of Leaky Abstractions"


In Usenet, whenever a single newsgroup got too large, it tended to fork. So
from comp we got comp.sys.ibm.pc which split into smaller and smaller groups
like the unloved comp.sys.ibm.pc.hardware.video, created because people were
sick of talking about video drivers on the main group.

I didn't like forks, because they make discussions less interesting. I mean,
it's bad enough there's a comp.software.windows.nt.40.microsoft.notepad,
does there have to be a
comp.software.windows.nt.40.microsoft.notepad.helpfile.index? Seriously now.

Joel Spolsky, blog entry of September 2, 2004
http://www.joelonsoftware.com/oldnews/pages/September2004.html


Let's look at a small example. The Unix programming culture holds in high
esteem programs which can be called from the command line, which take
arguments that control every aspect of their behavior, and the output of
which can be captured as regularly-formatted, machine readable plain text.
Such programs are valued because they can easily be incorporated into other
programs or larger software systems by programmers. To take one miniscule
example, there is a core value in the Unix culture, which Raymond calls
“Silence is Golden,” that a program that has done exactly what you told it
to do successfully should provide no output whatsoever. It doesn't matter if
you've just typed a 300 character command line to create a file system, or
built and installed a complicated piece of software, or sent a manned rocket
to the moon. If it succeeds, the accepted thing to do is simply output
nothing. The user will infer from the next command prompt that everything
must be OK.

Joel Spolsky, "Biculturalism"
http://www.joelonsoftware.com/articles/Biculturalism.html