Reginald Braithwaite writes consistently great stuff on his blog, but I think my absolute favorite thing he's ever written is We Have Lost Control of the Apparatus.
But we programmers have lost and we must be realistic about things. The fact of the matter is this: people own their own computers, and our applications are no longer the primary way they learn how computers ought to work. I know, I know, they stare at our work for eight, ten, or twelve hours a day. So you would think that we would set the standard for how computers ought to be. But the Good Old Days when most of users had never seen a computer before work have gone. Some of our users, fresh out of school, have already been using computers for ten years!
As if that wasn't enough, the really bad news is, when our users go home they have this thing called the Internet. I know, IT locked that down in the office. But we can't stop them from getting on it at home, on their mobiles, and now even on those insidious Apple iPods! And when people use the Internet, they are actually using other people's applications. I'm not kidding. Our users are being exposed to applications we don't control. And it messes things up. You see, the users get exposed to other ways of doing things, ways that are more convenient for users, ways that make them more productive, and they incorrectly think we ought to do things that way for them.
Over the last five years, the internet has evolved from a traditional HTML content delivery system into an application delivery platform. One that competes with every sort of software application, not just other websites. Every bit of software we write, on any platform, is judged against things users are already doing on the internet. We're all competing with the internet.
Reg provides a number of specific examples where internet applications have raised users' expectations. Possibly the greatest shift in expectations is around search:
[Google] is practically the home page of the Internet. Which means, to a close approximation, they are the most popular application in the world.
And what have they taught our users? Full-text search wins. If you give them a search page with a field for searching the account number and a field for searching the SSN and a field for searching the zip code and a field for searching the phone number, they want to know why they can't just type
4165558734and find Reg by phone number? And right after we make that work for them, those greedy and ungrateful sods'll want to type
(416) 555-8734and have it work too. Bastards.
I have tried explaining that there's an ambiguity if an account number is also
4165558734. They think we should just show them what we find and let them sort it out. They're idiots, obviously, but they're our idiots and I'm pretty sure that if we fire them all we'll have to clean our own desks out the following day.
This is particularly hard on the internal applications Reg seems to be focusing on here. Internal apps are already the shakiest part of the software ecosystem; as Joel points out, lots of internal software sucks pretty badly. (I know because I've certainly written my share of it.) Having this pervasive, instantly accessible world of reasonably good software available through your browser-- and it's only one tiny click away -- is like pouring salt in the user's wounds. It's impossible to justify the pain of badly written internal software when there's a universe of better choices practically beating down your door, even on locked down corporate desktops.
If I was a user, I'd be angry, too. If you're writing software that you want users to actually use, then no matter what kind of software you're delivering, you better pay attention to your online competition. It's going to be rough, even for commercial desktop applications. I'm not sure many internal applications can legitimately compete with superior options emerging on the internet every day. It's survival of the fittest alongside a vibrant new species of internet competitors -- does your software deserve to survive?