Brett has written up instructions for upgrading PHP to the latest version and getting it working with FogBugz. These instructions should be useful to anyone who needs to upgrade PHP due to the recent security flaw.
Tomorrow is the fifth anniversary of Joel on Software!
Organize my life and run the office at Fog Creek Software:
Executive Assistant / Office Manager (filled).
And don’t forget, when you’re home for the holidays and you see all your cousins, siblings, and aunts who have been away at college: we have great summer internships, so please encourage them to apply!
Mercury News: “Accounting rule makers handed down long-awaited final guidelines Thursday that will force companies to deduct the value of billions of dollars of employee stock options from reported profits starting in mid-2005.”
Here’s some old discussion of what this means.
The old Silicon Valley hands are unhappy with the general concept of expensing stock options, and one reason they often give for this is the difficulty of figuring out the value of stock options. But anybody in the investment industry, and indeed, anyone with a rudimentary understanding of financial accounting knows that accounting for the value of an illiquid asset is always a problem yet something you always have to do anyway, and just because the value of stock options changes over time or because it is not possible to fix exactly does not mean it shouldn’t be accounted for consistently.
“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!’”
You’ve just released your latest photo-organizing software. Through some mechanism which will be left as an exercise to the reader, you’ve managed to actually let people know about it. Maybe you have a popular blog or something. Maybe Walt Mossberg wrote a rave review in the Wall Street Journal.
One of the biggest questions you’re going to be asking now is, “How much should I charge for my software?” When you ask the experts they don’t seem to know. Pricing is a deep, dark mystery, they tell you. The biggest mistake software companies make is charging too little, so they don’t get enough income, and they have to go out of business. An even bigger mistake, yes, even bigger than the biggest mistake, is charging too much, so they don’t get enough customers, and they have to go out of business. Going out of business is not good because everybody loses their job, and you have to go work at Wal*Mart as a greeter, earning minimum wage and being forced to wear a polyester uniform all day long.
So if you like cotton uniforms you better get this right.
The answer is really complicated. I’m going to start with a little economic theory, then I’m going to tear the theory to bits, and when I’m finished, you’ll know a lot more about pricing and you still won’t know how much to charge for your software, but that’s just the nature of pricing. If you can’t be bothered to read this, just charge $0.05 for your software, unless it does bug tracking, in which case charge $30,000,000 for it.
Now. Where was I.
Some Economic Theory
Imagine, for the moment, that your software costs $199. Why $199? Well, because I have to start somewhere. We’ll try other numbers real soon now. For now, imagine that you charge $199 and that gets you 250 customers.
Let me plot that:
This little chart I made means that if you charge $199, 250 people will buy your software. (As you see, economists are very odd people, and they like to put the quantity sold on the x-axis with the price on the y-axis. If 250 people bought your software, it must mean that you charged $199!)
What would happen if you raised the price to $249?
Some of the people who might have been willing to pay $199 are going to think $249 is too much, so they’ll drop out.
Obviously, people who wouldn’t even buy it for $199 are certainly not going to buy it at the higher price.
If 250 people bought at $199, we must assume that less than 250 people would buy it at $249. Let’s guess, oh, 200:
What if we charged less? Say, $149? Well, everyone who would buy it for $199 will certainly buy it for $149, and there will probably be even more people who think $149 is affordable, so let’s say we could sell 325 copies at $149:
And so on and so forth:
In fact rather than graphing a few discrete points here, let’s draw the complete curve that includes all these points, and while I’m at it I’ll fix the x-axis so it’s to scale:
Now you can tell me any price between $50 and $400 and I’ll tell you how many people will buy your software at that price. What we have here is a classic demand curve and the demand curve is always downward-sloping, because the more you charge, the fewer people will be willing to buy your software.
These numbers are not, of course, real. The only thing I’m asking you to believe, so far, is that the demand curve is downward sloping.
(If it’s still bothering you that I put the quantity on the x-axis and the price on the y-axis, when clearly the quantity is a function of the price, not the other way around, please take it up with Augustin Cournot. He probably has a blog by now.)
So how much should you charge?
“Uh, $50, because then I sell the most units!”
No no no. You’re not trying to maximize units, you’re trying to maximize profits.
Let’s calculate profits.
Assume each unit of software that you sell costs you an incremental $35.
Maybe it cost you $250,000 to develop the software in the first place, but that’s a sunk cost. We don’t care about that anymore, because the $250,000 is the same whether you sell 1000 units or 0. Sunk. Kiss it goodbye. Set any price you want, the $250,000 is gone and therefore not relevant any more.
At this point all we can worry about is the incremental cost of selling each additional unit. That might include shipping and handling, that might include tech support, bank service charges, CD duplication and shrinkwrapping, whatever; I’m going to be really hand-wavy here and use $35 as my incremental cost.
Now we can whip out our handy-dandy copy of Visicalc:
Here’s how to read that spreadsheet. Each row is a scenario. Row 3: If we were to charge $399, then we would sell 12 copies, making $364 profit per copy, for a total profit of $4368.
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!
In this chart the actual data is shown as little blue diamonds, and I’ve asked Excel to draw a nice polynomial trendline on top. So now all I have to do is drop a line straight down from the peak of the hump to find out the price I should charge to make a maximal amount of profit:
“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.
Thank you for your time! Nothing more to see here! Move along now!
You’re not leaving.
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!
You see, by setting the price at $220, we managed to sell, let’s say, 233 copies of the software, at a total profit of $43,105, which is all good and fine, but something is distracting me: all those people who were all ready to pay more, like those 12 fine souls who would have paid a full $399, and yet, we’re only charging them $220 just like everyone else!
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!
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.
Let’s do this. Instead of charging $220, let’s ask each of our customers if they are rich or if they are poor. If they say they’re rich, we’ll charge them $349. If they say they’re poor, we’ll charge them $220.
Now how much do we make? Back to Excel:
Notice the quantities: we’re still selling the same 233 copies, but the richest 42 customers, who were all willing to spend $349 or more, are being asked to spend $349. And our profits just went up! from $43K to about $48K! NICE!
Capture me some more of that consumer surplus stuff!
But wait, that’s not all. After selling all these 233 copies, I felt kind of bad about the people who were only willing to spend $99. After all, if I could sell a few more copies to those guys at $99, I’d still be making some money, since my marginal cost is only $35.
What if we called up all the customers who said “no thanks” at $220, and offered them the software at $99?
At $99, we have 450 potential customers, but don’t forget that 233 of them already paid full price, leaving us with 217 extra customers who just wouldn’t go along with the program and pay the full price:
Babymosesinabasket, I think we just made $62K in profit! All in all, an extra twenty thousand buckeroos, cash spendable money, which goes a loooong way towards a down payment on that fishing boat you’ve had your eye on. All from the power of segmentation: separating your customers into different groups according to how much they are willing to pay, and extracting the maximal consumer surplus from each customer. Holy Segments, Batman, how much money could we make if we ask every customer to tell us their maximum willingness to pay and then charge them that?
Surreal! Almost $80K! That’s almost double the profits we made having just one price! Capturing the consumer surplus is clearly quite profitable. Even the 350 annoying people who only want to give me $49 each are making some contribution to the profits. All these customers are happy because we’re asking them to pay the amount they were willing to pay already, so it’s not like we’re ripping anyone off. Kind of.
Here are some examples of segmentation you’re probably familiar with:
- Senior citizen discounts, since older people tend to be living on a “fixed income” and are willing to pay less than working-age adults
- Cheap afternoon movie matinees (useful only to people without jobs)
- Bizarre airfares, where everyone seems to be paying a different price. The secret about airfares is that people who are flying on business get their company to reimburse them, so they couldn’t care less how much the ticket costs, while leisure travellers are spending their own money and they won’t go if it costs too much.
Of course, the airlines can’t just ask you if you’re travelling on business, because pretty quickly everyone would catch on and lie to get the cheaper fares. But business travellers almost always travel on weekdays, and they hate spending a weekend away from home. So the airlines instituted policies that if you’re staying over a Saturday night, you’re probably not travelling on business, and they give you much cheaper fares if you stay over a Saturday night.
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.
There are other ways to segment. You can market your products under different brand names (Old Navy vs. The Gap vs. Banana Republic) and hope that the rich people conveniently remember to buy their clothes at the Banana while the po’ people go to Old Navy. In case there was any risk of people forgetting and going to the wrong store, the Banana Republic stores are conveniently situated in neighborhoods full of $2,000,000 condos while the Old Navy store is near the train station where you haul your poor tired ass back to New Jersey after a day of hard manual labor.
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!
Quick trick: if you’re going to try to pull the segmenting idea, you’re probably going to be better off offering a discount to certain users rather than trying to charge some users a premium. Nobody likes feeling ripped off: people would rather buy a $199 product for $99 than a $59 product for $79. Theoretically, people should be rational. $79 is less than $99. Realistically, they hate feeling like someone is ripping them off. They’d much rather feel like they’re getting a bargain than feel like they’re getting gouged.
That was the easy part.
The hard part is that everything I just told you is sort of wrong.
Working my way backwards, this business about segmenting? It pisses the heck off of people. People want to feel they’re paying a fair price. They don’t want to think they’re paying extra just because they’re not clever enough to find the magic coupon code. The airline industry got really, really good at segmenting and ended up charging literally a different price to every single person on the plane. As a result most people felt they weren’t getting the best deal, and they didn’t like the airlines. When a new alternative arose in the form of low cost carriers (Southwest, jetBlue, etc.) customers had no loyalty whatsover to the legacy airlines that had been trying to pick their pockets for all those years.
And God help you if an A-list blogger finds out that your premium printer is identical to the cheap printer, with the speed inhibitor turned off.
So, while segmenting can be a useful tool to “capture consumer surplus,” it can have significant negative implications for the long term image of your product. Many a small software vendor has seen their revenues go up and the amount of customer bickering about price go way down when they eliminated coupons, discounts, deals, multiple versions and tiers. Somehow, it seems like customers would rather pay $100 when everyone else is paying $100 than pay $79 if they know there’s someone out there who got it for $78. Heck, GM made a whole car company, Saturn, based on the principle that the offered price is fair and you don’t have to bargain.
Even assuming you’re willing to deal with a long-term erosion of customer goodwill caused by blatant price discrimination, segmentation is just not that easy to pull off. First of all, as soon as your customers find out you’re doing it, they’ll lie about who they are:
- Frequent business travellers rearranged their tickets to include dual Saturday-night stays. For example a consultant living in Pittsburgh and working in Seattle Monday through Thursday would buy a two week trip from Pittsburgh to Seattle and then a weekend trip home in the middle. Both trips included Saturday night stays, it was the same flights they would have taken anyway, just much cheaper.
- Got an academic discount? Everyone who is even vaguely related to someone vaguely associated with academia will start using it.
- If your customers talk amongst themselves, they’re going to find out about the price you’re offering the other people, and you’ll find yourself forced to match the lowest prices for everyone. Especially the big corporate purchasers who theoretically should have the “maximum willingness to pay” since they represent rich customers. Corporations have full time purchasing departments staffed with people whose entire job is whittling down prices. These people go to conferences where they learn how to get the best price. They practice saying “no. cheaper.” all day long in front of mirrors. Your sales guy doesn’t stand a snowflake’s chance in hell.
There are two forms of segmentation that slightly-too-clever software companies engage in that are not such great ideas:
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.
Bad Idea #2: How Much Money Do You Have? Pricing.
This is the kind used by software startups founded by ex-Oracle salesmen where the price isn’t on the website anywhere. No matter how much you search to find the price, all you get is a form to provide your name, address, phone number, and fax number, for some reason, not that they’re ever going to fax you anything.
It’s pretty obvious here that the plan is to have a salesman call you up and figure out how much you’re worth, and then charge you that much. Perfect segmentation!
This doesn’t work so good either. First of all, the low end buyers are just going to move on. They will assume that if the price isn’t listed, they can’t afford it. Second, the people who don’t like salesmen harassing them will just move on.
Worse, as soon as you send a message that your price is negotiable, you’re going to end up reverse segmenting. Here’s why: the big companies you sell to, the ones who should be willing to give you the most money, are incredibly sophisticated about purchasing. They’ll notice that your sales guy or gal is working on commission, and they’ll know that he’s got quarterly quotas, and they’ll know that both the salesperson and the company are going to be incredibly desperate to make a sale at the end of the quarter (the salesperson to get his commission, and the company to avoid getting their knees shot off by their VCs or Wall Street). So the big customers will always wait until the last day in the quarter and end up getting a ridiculously good price which somehow involves weird accounting shenanigans so the company can book a lot of revenue that they’re never really going to get.
So, don’t do site licenses, and don’t try to make up prices as you go along.
Do you really want to maximize profits? I glossed over something. You don’t necessarily care about maximizing profits this month. You really care about maximizing all your profits, over time, in the future as well. Technically, you want to maximize the NPV of the stream of all future profits (without ever having your cash reserves dip below zero).
Diversion: What’s an NPV?
What’s worth more, $100 today or $100 in one year?
Obviously $100 today, because you can invest it, say, in bonds, and at the end of the year you’ll have, like, $102.25.
So when you’re comparing the value of $100 in one year to $100 today, you need to discount the $100 based on some interest rate. If the interest rate is 2.25%, for example, those $100 in the future should be discounted to $97.80, which is called the net present value (NPV) of $100 one year in the future.
Go even further into the future, and you need to discount even more. $100 in five years, at today’s interest rates, is worth only $84 today. $84 is the net present value of $100 in five years.
Which would you rather earn?
$5000, $6000, $7000 over the next three years
$4000, $6000, $10000 over the next three years
Option two sounds like a better deal, even after discounting the future earnings. If you take the second option, it’s like investing $1000 in year one and getting $3000 back two years later, which is a very respectable investment!
The reason I bring this up is because software is priced three ways: free, cheap, and dear.
Free. Open source, etc. Not relevant to the current discussion. Nothing to see here. Move along.
Cheap. $10 – $1000, sold to a very large number of people at a low price without a salesforce. Most shrinkwrapped consumer and small business software falls into this category.
Dear. $75,000 – $1,000,000, sold to a handful of rich big companies using a team of slick salespeople that do six months of intense PowerPoint just to get one goddamn sale. The Oracle model.
All three methods work fine.
Notice the gap? There’s no software priced between $1000 and $75,000. I’ll tell you why. The minute you charge more than $1000 you need to get serious corporate signoffs. You need a line item in their budget. You need purchasing managers and CEO approval and competitive bids and paperwork. So you need to send a salesperson out to the customer to do PowerPoint, with his airfare, golf course memberships, and $19.95 porn movies at the Ritz Carlton. And with all this, the cost of making one successful sale is going to average about $50,000. If you’re sending salespeople out to customers and charging less than $75,000, you’re losing money.
The joke of it is, big companies protect themselves so well against the risk of buying something expensive that they actually drive up the cost of the expensive stuff, from $1000 to $75000, which mostly goes towards the cost of jumping all the hurdles that they set up to insure that no purchase can possibly go wrong.
Now, a quick glance around the Fog Creek website reveals that I’m firmly in camp #2. Why? Selling software at a low price means that I can get thousands of customers right away, some small, some large. And all those customers are going to be out there using my software and recommending it to their friends. When those customers grow, they’ll buy more licenses. When people working at those customers move to new companies, they’ll recommend my software to those new companies. Effectively I am willing to accept a lower price now in exchange for creating grassroots support. I see the low price of FogBugz as being an investment in advertising that I expect will pay off many times over in the long run. So far, it’s working very well: FogBugz sales have grown more than 100% for three years without marketing, solely based on word-of-mouth and existing customers buying additional licenses.
By comparison, look at BEA. Big company. Big price tag. The price alone means almost nobody has experience with their product. Nobody comes out of college and starts a dotcom using BEA technology, because they couldn’t afford BEA technology in college. A lot of other good technologies have doomed themselves with high prices: Apple WebObjects was irrelevant as an application server because it started at $50,000. Who cared how good it was? Nobody ever used it! Anything made by Rational. The only way these products get into the hands of users is with an expensive full-frontal sales pitch. At these prices, the sales pitch is made to the executive, not the techie. The techies may well actively resist bad technology with good sales that the executives force down their throats. 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.
Where was I.
Oh yeah, before I started frothing at the mouth, I was picking apart the logic of deriving a demand curve. When I walked you through that whole discussion of the demand curve, you were probably asking yourself, “How do I know how much people are willing to pay?”
That’s a problem.
You can’t really find out what the demand curve is.
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.
Or you ask some aircraft designers how much they would pay and they sort of think $99 would be a maximum price, even though aircraft designers regularly use software that costs on the order of $3000 a month without being aware of it, because someone else does the purchasing.
So from day to day you get radically, and I mean radically different answers when you ask people how much they’re willing to pay for something. The truth is, the only way to determine how much someone will pay for something is to put it up for sale, and see how many people actually buy it.
Then you can try twiddling the prices to measure price sensitivity and try to derive the demand curve, but until you have something like 1,000,000 customers and you are absolutely sure that customer A will not find out you are offering a lower price to customer B, you will not get statistically meaningful responses.
There’s a real strong tendency to assume that experiments done on large populations of people should work out just like experiments done with chemicals in a high school lab, but everyone that has ever tried to do experiments on people knows that you get wildly variable results that just aren’t repeatable and the only way you can be confident in your results is to carefully avoid ever doing the same experiment twice.
And, in fact, you can’t even be sure that the demand curve is downward sloping.
The only reason we assumed that the demand curve is downward sloping is that we assumed things like “if Freddy is willing to buy a pair of sneakers for $130, he is certainly willing to buy those same sneakers for $20.” Right? Ha! Not if Freddy is an American teenager! American teenagers would not be caught dead in $20 sneakers. It’s, like, um, the death penalty? if you are wearing sneakers? that only cost $20 a pair? in school?
I’m not joking around here: prices send signals. Movies in my town cost, I think, $11. Criminy. There used to be a movie theatre that had movies for $3. Did anyone go there? I DON’T THINK SO. It’s obviously just a dumping ground for lousy movies. Somebody is now at the bottom of the East River with $20.00 cement sneakers because they dared to tell the consumer which movies the industry thought were lousy.
You see, people tend to believe that you get what you pay for. The last time I needed a lot of hard drive space I invested in some nice cheap hard drives allegedly designed by Mr. Porsche himself that went for about $1 a gigabyte. Within six months all four had failed. Last week I replaced them with Seagate Cheetah SCSI hard drives that cost about $4 a gigabyte because I’ve been running those since I started Fog Creek four years ago without a glitch. Chalk it up to “you get what you pay for.”
There are just too many examples where you actually do get what you pay for, and the uninformed consumer is generally going to infer that the more expensive product is better. Buying a coffee maker? Want a really good coffee maker? You have two choices. Find the right issue of Consumer Reports in the library, or go to Williams-Sonoma and get the most expensive coffee maker they have there.
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.
The more you learn about pricing, the less you seem to know.
I’ve been nattering on about this topic for well over 5000 words and I don’t really feel like we’re getting anywhere, you and I.
Some days it seems like it would be easier to be a taxi driver, with prices set by law. Or to be selling sugar. Plain ol’ sugar. Yep. That would be sweet.
Take my advice, offered about 20 pages back: charge $0.05 for your software. Unless it does bug tracking, in which case the correct price is $30,000,000. Thank you for your time, and I apologize for leaving you even less able to price software than you were when you started reading this.
All these people griping about how writing software isn’t fun anymore probably didn’t notice that here in the northern hemisphere, we’re only about a week away from the shortest day of the year. Install some bright lights, drink some coffee, take a vacation in Tahiti, and tell me in April if you still think software development is depressing.
I had to change my home page back to regular Google due to a fairly blatant usability bug in Google Suggest. Repro steps:
- Move your mouse so it’s over the “Google Search” button
- Type “Joel”
- Click the mouse button immediately
The bug: often, the timing is such that the Google Suggest popup appears after I type Joel but before I click the mouse, so I think I’m clicking on the “Google Search” button intending to search for, say, Joel, not that I would search for myself, after all, I’m right here, but I’m really clicking on the popup listbox item for “Joel Turner”, whoever that is. Any relation to Tina? Or Bachman?
I still think Google Suggest is important—I’m sure they’ll fix this little problem. It’s important not for searching, but because it’s going to teach web users to expect highly responsive user interfaces:
- If you have a website that shows a map, and the user clicks to zoom in, they’re going to expect the map to zoom in, quickly—they will no longer tolerate the full-page-reload-and-scroll-to-the-top that Mapquest has conditioned them to accept.
- If you show a list, and let people click on the column headers to sort by different columns, they’re no longer going to tolerate the full-page-reload-and-scroll-to-the-top that certain unnamed bug tracking applications have conditioned them to accept.
- If you have an email application, and you show people a list of email and give them a button to delete email as spam, they’re going to expect virtually instantaneous response time, not the full-page-reload-and-scroll-to-the-top that most web email programs have conditioned them to accept.
That’s what I meant by “raising the bar.”
Attention, FogBugz competitors: a court has ruled that you are welcome to continue to advertise your products when people search for FogBugz on Google. I actually don’t think there’s anything wrong with this although it does show a certain lack of class, mm, don’t you think? You don’t see Wal*Mart advertising when you search for Tiffany.
I didn’t think I’d be changing my startup page again for a long time.
Looks like I was wrong. Check out Google Suggest.
Lemme explain why this is so cool. First of all, it saves you keystrokes entering your search terms. That’s the externally cool thing.
The internal cool thing is that it’s one of the first prominent uses I’ve seen of the
IFRAME XmlHttpRequest technique of going back to the web server for more data while the user interacts with a page. This has been possible for a long long time, but web developers have been mostly ignoring it. Rob Whelan explains how it’s done.
The latency of web UIs, in which everything you do is a slow round-trip that requires completely refetching and rebuilding the web page, is one of the reason web UIs feel so clunky compared to native GUIs. Google is very publicly raising the bar on the quality of interfaces that people will expect from web pages.
Scott Rosenberg interviewed me for Salon. “The connection between software and Yiddish humor may not have been evident until Joel Spolsky began writing his Joel on Software essays and blog in 2000.”