Coding Horror

programming and human factors

The Technology Backlash

Riding the waves of technology in the computer industry is exhilarating when you're twenty, but there's a certain emptiness that begins to creep in around the edges by the time you're forty. When you've spent the last twenty years doing nothing but frantically hanging ten on the latest, biggest, coolest waves of technology, fatigue inevitably begins to set in. There's an increasing sense of Dj vu - of doing the same thing over and over, with only small improvements to show for it each time. On a bad day, you can feel like you're living the movie Groundhog Day, and you've just woken up to the melodic strains of Sonny and Cher singing "I've Got You, Babe". Again.

Groundhog Day clock, 6 AM

Don't get me wrong. As a child, I believed that computers would change the world for the better. I still believe computers are changing the world for the better. But that doesn't mean we should accept them unquestioningly into our lives, either. Software developers are almost by definition technologists. So we love this stuff. To us, technology is its own reward. But sometimes it's healthy, even for us technologists, to push back and ask hard questions about whether a particular technology is making our lives better-- or worse. For every single Tivo or iPod, there are hundreds of also-ran Microsoft Bobs and iSmells. People found entire careers on the shifting sands of technology, often on technologies that become utterly obsolete. It's easy to make the wrong choice, and devilishly hard to predict what will still matter ten years from now.

Instead of investing so much time in technology, as Rick Strahl points out, why not invest in the one technology guaranteed to pay dividends -- ourselves?

Is your quality of life really better because of the gadgetry? Cell phones are bringing connectivity to us anywhere and everywhere. Good because you can be in contact whenever necessary. But bad because you can in fact be in contact anywhere and everywhere. It takes all sorts of self-constraint to implement the 'just say NO' policy on cell phones and turn them off. Always on, always connected, always surrounded by the constant media buzzsaw. When's the last time you connected with -- oh I don't know -- yourself? Or nature?

A similar sentiment is echoed by a technology worker in this recent San Francisco Chronicle article; don't neglect the human beings behind all these computers.

Ray Carlson, 46, of Hayward worked as a help desk analyst for software companies and found that "technology for its own sake" was the unquestioned workplace edict. "There was always a constant learning curve that could only be fully ascended by those whose first love was technology," he said. "One had to be willing to allow one's career to run roughshod over any sane boundaries between work and home. People bragged about how many hours they worked and that they had no life outside of work."

In retrospect, he said, "The dot-com bust was the best thing that ever happened to me up to that point. It caused me to recognize that people, not machines, are my passion.

Perhaps the original purveyor of this "tune in, turn off, and drop out" policy is Cliff Stoll. His book Silicon Snake Oil dates back to 1996, the veritable dark ages of the internet. He followed it up in 1999 with High Tech Heretic: Why Computers Don't Belong in the Classroom and Other Reflections by a Computer Contrarian. Lest you think Mr. Stoll is some kind of computer hating luddite, consider that he's an astronomer and a hard-core UNIX hacker from way back. I remember reading excerpts from his book The Cuckoo's Egg in Byte. It's a gripping narrative of Mr. Stoll tracking a wily KGB hacker who infiltrated the Lawrence Berkeley Labs systems-- along with hundreds of other military and education sites-- in the mid 1980s.

Mr. Stoll's reservations are based on extensive use of the internet, all the way back to its formative years; he's been online since 1976. Familiarity, in this case, breeds contempt. You can get a sense of Stoll's position in this 1996 interview:

One of the lies of the Internet is that it is an information superhighway and that we need lots more information. But I have never met anyone standing on a street corner, sign in hand, saying we need more information. Just the opposite, many of us, especially those of us working in technical fields, say, "I've got all the information I need. Give me less, but give me higher quality information." And that's what's missing from the Internet, quality. When it doesn't cost anything to post the stuff, people naturally post anything they wish. As a result, when I need quality information, I turn to that which is published on paper for the obvious reason that it costs money to publish on paper. Because of that, there is a built-in filter. They are called editors. Because it costs money, they will only allow that which has quality content. So when I want quality, I look on a piece of paper. I look at that which has been edited. And that's what is grossly and desperately missing from the World Wide Web: editors, critics, reviewers, reporters.

The answer to me is self-evident. It's economic. You get what you pay for. When it's cheap or free to publish something on the World Wide Web, you will naturally publish that which costs the least, has the least and has the least economic value. If you have a catalog or parts list, you put it online. When you have something you want people to study and think hard about, you'll put it on paper. Quality writing takes time. Somebody who puts time and money and effort into it... are they going to give it away for free? Maybe, but I doubt it.

Some of his criticisms are prescient. Still, I don't think the internet is anywhere near as destructive and devoid of value today as Mr. Stoll imagined it would be ten years ago. If anything, quite the opposite. But it's not the specific criticisms that matter; it's his spirit of healthy skepticism that I admire most:

This much is certain: Unless we debate these questions in public, we move blindly. We listen to some cyberguru who says this is the way the future is, close your eyes and trust me. I don't believe in gurus. I believe in skepticism, in discussion, in public debate. It's our responsibility as citizens, as technologists, to debate where this stuff is likely to go and to ask difficult questions.

Too often, we get so heads-down in the digital rat race that we forget to get off the treadmill for a moment and ask those hard questions. We lose perspective and don't bother questioning our assumptions. We forget to take time out to be analog for a little while. As a person who all-too-willingly spends nearly all his waking life in front of a computer* It might be a little disingenuous for me to talk about using technology in moderation. But I think that's exactly what the doctor ordered: moderation in all things, including moderation. The analog world is an essential part of a balanced digital information diet.

Now if you'll excuse me, I have to go check my email.

* I spend the remaining time dreaming about computers.

Discussion

Rethinking Design Patterns

Many developers consider the book Design Patterns a classic.

Design Patterns book cover

So what's a design pattern?

A design pattern systematically names, motivates, and explains a general design that addresses a recurring design problem in object-oriented systems. It describes the problem, the solution, when to apply the solution, and its consequences. It also gives implementation hints and examples. The solution is a general arrangement of objects and classes that solve the problem. The solution is customized and implemented to solve the problem in a particular context.

It's certainly worthwhile for every programmer to read Design Patterns at least once, if only to learn the shared vocabulary of common patterns. But I have two specific issues with the book:

  1. Design patterns are a form of complexity. As with all complexity, I'd rather see developers focus on simpler solutions before going straight to a complex recipe of design patterns.
  2. If you find yourself frequently writing a bunch of boilerplate design pattern code to deal with a "recurring design problem", that's not good engineering-- it's a sign that your language is fundamentally broken.

In his presentation "Design Patterns" Aren't, Mark Dominus says the "Design Patterns" solution is to turn the programmer into a fancy macro processor. I don't want to put words in Mark's mouth, but I think he agrees with at least one of my criticisms.

But Dominus also digs deeper into the source material than most. He cites Christopher Alexander's book A Pattern Language, which was the inspiration for Design Patterns.

A Pattern Language, Towns Buildings Construction, book cover

Dominus summarizes the book thusly:

Suppose you want to design a college campus. You must delegate some of the design to the students and professors, otherwise the Physics building won't work well for the physics people. No architect knows enough about about what physics people need to do it all themselves. But you can't delegate the design of every room to its occupants, because then you'll get a giant pile of rubble.

How can you distribute responsibility for design through all levels of a large hierarchy, while still maintaining consistency and harmony of overall design? This is the architectural design problem Alexander is trying to solve, but it's also a fundamental problem of computer systems development.

That's the key insight that drives both books. Unfortunately, Dominus believes that the Gang-of-Four version obstructs Alexander's message, replacing actual thought and insight with a plodding, mindless, cut-and-paste code generation template mentality:

The point of the talk is this: The "design patterns" you get from the Gang-of-Four book are not the same as the idea of "design patterns" that are put forward in Alexander's books. People say they are, but they aren't the same thing. Alexander's idea is a really good one, one that programmers might find useful. But very few programmers are going to find out about it, because they think they already know what it is. But they actually know this other idea which happens to go by the same name.

So (once again) we need to take a fresh look at Christopher Alexander. Forget what I said about the damn iterator pattern, already.

I know it's not technically a software development book, but consider this advice from Don Park:

If Eclipse is a boomtown which countless developers and companies continue to pour into, it now looks like LA, tiny downtown surrounded by endless expanse of suburban neighborhoods indistinguishable from each other other than by their names. Although one of the key pioneers behind Eclipse is Eric Gamma, one of the four authors of the infamous Design Patterns book, I feel that not enough attention is being paid to the original concepts that inspired the book, concepts captured in books by Christopher Alexander.

You could read Design Patterns like any number of other software developers before you. But I humbly suggest that you should go deeper and read A Pattern Language, too, because ideas are more important than code.

Discussion

Avoiding Walled Gardens on the Internet

I occasionally get requests to join private social networking sites, like LinkedIn or Facebook. I always politely decline. I understand the appeal of private social networking, and I mean no disrespect to the people who send invites. But it's just not for me.

I feel very strongly that we already have the world's best public social networking tool right in front of us: it's called the internet. Public services on the web, such as blogs, twitter, flickr, and so forth, are what we should invest our time in. And because it's public, we can leverage the immense power of internet search to tie it all-- and each other-- together.

In comparison, adding content to a private, walled garden on the internet smacks of the old-world America Online ideology:

While at Sony in 1994, I was sent to Virginia to learn how to build a Sony "app" on AOL (the #3 online service, behind Compuserve & Prodigy at the time) using AOL's proprietary "rainman" platform. Fast forward to Facebook 2007 and see similarities: If you want access to their big base of users, develop something in their proprietary language for their people who live in their walled garden.

It was so clear to me back in 1999 that AOL was doomed. But at the time, any criticism of AOL was heresy. For a lot of companies, AOL was the internet. You had to accommodate AOL users in your web design and business decisions because of their immense user base and perceived power. Ten years later, is AOL is even relevant? Does anyone care?

hanging gardens of Babylon

The lesson I take from this is that no matter how wonderful your walled garden is, it can't compete with the public, open internet. Jason Kottke explains:

As it happens, we already have a platform on which anyone can communicate and collaborate with anyone else, individuals and companies can develop applications which can interoperate with one another through open and freely available tools, protocols, and interfaces. It's called the internet and it's more compelling than AOL was in 1994 and Facebook in 2007. Eventually, someone will come along and turn Facebook inside-out, so that instead of custom applications running on a platform in a walled garden, applications run on the internet, out in the open, and people can tie their social network into it if they want, with privacy controls, access levels, and alter-egos galore.

Jason Kottke's equating of Facebook to AOL is intended to provoke. You might even say it's incendiary. But it's absolutely true, and a much-needed wakeup call. Have we really forgotten the lesson of AOL's walled garden so soon?

Faced with competition from this open web, AOL lost. Running a closed service with custom content and interfaces was no match for the wild frontier of the web. Maybe if they'd done some things differently, they would have fared better, but they still would have lost. In competitive markets, open and messy trumps closed and controlled in the long run. Everything you can do on Facebook is possible using a loose coalition of blogging software, IM clients, email, Twitter, Flickr, Google Reader, etc. Sure, it's not as automatic or easy, but anyone can participate. The number of things to see and do on the web outnumbers the number of things you can see and do on Facebook by several orders of magnitude -- and always will.

Facebook is an intranet for you and your friends that just happens to be accessible without a VPN. If you're not a Facebook user, you can't do anything with the site. Nearly everything published by their users is private. Google doesn't index any user-created information on Facebook. All of the significant information and, more importantly, interaction still happens in private. Maybe we shouldn't be so excited about the web's future moving onto an intranet.

If you want to join my friends list, let's do it in public. Post a link to one of my blog entries. Enter a comment right here. Reply to one of my tweets. Send me an email or an instant message. I'll even collaborate with you, as long as it results in a public artifact of some kind.

Just don't ask me to enter your private walled garden. There's no future in it.

Discussion

The Three Faces of About Face

I bought my copy of Alan Cooper's classic About Face in 1995. I remember poring over it, studying its excellent advice, reveling in its focus on the hot new UI paradigms standardized in Windows 95-- toolbars, menus with icons, tabbed dialogs, and so forth. Seems quaint now, if not borderline obsolete, but this was 12 whole years ago. That's almost a lifetime in computer dog-years.

About Face cover About Face 2.0 cover About Face 3 cover
About Face
1995
Alan Cooper
About Face 2.0
2003
Alan Cooper, Robert Reimann
About Face 3
2007
Alan Cooper, Robert Reimann, David Cronin

I had no idea that there was a new edition of About Face until late 2003, when I saw the new cover sitting on a coworker's desk. I rushed out to get my own copy, and I found the book much improved over the original. I love Cooper, but he can be awfully bombastic at times. Having a second author dilutes Cooper's natural bombast and adds another viewpoint for a broader perspective. The new version was better and more up to date. My old copy was officially obsolete.

I was surprised to see a comment on my recommended reading post about yet another new edition of About Face released this year. Again, I rushed out to get my own copy. Cooper is obsoleting his own books at a frantic pace; it's almost as bad as software. If, like me, you're wondering what's new in About Face 3, there's a summary in the introduction:

  • The book has been reorganized to present its ideas in a more easy-to-use reference structure. The book is divided into three parts: the first deals with process and high-level ideas about users and design, the second deals with high-level interaction design principles, and the third deals with lower-level interface design principles
  • The first part describes the Goal-Directed Design process (pdf) in much greater detail than in the second edition, and more accurately reflects current practices at Cooper, including research techniques, the creation of personas, and how to use personas and scenarios to synthesize interaction design solutions.
  • Throughout the book, we attempt to more explicitly discuss visual interface design concepts, methods and issues, as well as issues related to a number of platforms beyond the desktop.
  • Terminology and examples in the book have been updated to reflect the current state of the art in the industry, and the text as a whole has been thoroughly edited to improve clarity and readability.

I'll vouch for the readability improvement in text and layout -- this is a much better designed book overall. Adding the third author has improved the book even more, definitively obsoleting the previous version. About Face 3 is the best edition of this classic yet. If you've never owned a copy, consider yourself lucky on two counts:

  1. You don't have to waste money on old editions; you can start with the latest and best edition.
  2. You're about to read one of the best books ever written on interaction design. Enjoy.

I envy the experience you're about to have. For the rest of us, time to pony up the upgrade fee. Again.

If you like About Face, you'll also enjoy Cooper's The Inmates Are Running The Asylum. Originally released in 1999, it was similarly refreshed with a second edition in 2004. I own the first edition, so it looks like I'll be upgrading, too.

Discussion

Why You Don't Want an iPhone -- Yet

Let me start by saying up front that I am a fan of the iPhone.

The mobile phone market is a sad, pathetic wasteland in desperate need of improvement. I'm hoping iPhone will the collective kick in the pants the smartphone market needs to finally stop making user hostile products.

But before you rush out this Friday, June 29th to be an early adopter and buy a shiny new iPhone, I have a cautionary tale for you.

iPhone v1: Just say no.

My work generously provides me with a Samsung Blackjack smartphone. I wasn't thrilled about the idea of owning a smartphone. My mobile phone needs are modest, and I thought the Windows Mobile 5.0 based Blackjack would be overkill for what I do. But I was pleasantly surprised. The hardware is wonderful; smartphone design has really come into its own in the latest generation. The software, well... not so much. Windows Mobile 5.0 has a huge number of rough edges, real head-slapping "what were they thinking" moments. You'd think they would have figured this mobile stuff out by now, after five full versions. But Windows Mobile is servicable, if not great. And I found two specific features incredibly addictive:

  1. Mobile access to my email
  2. Mobile access to the internet

It's gotten to the point now where I get the shakes if I can't bust out my Blackjack and look up something on Wikipedia, any time, any place. It's like having the sum of the entire world's knowledge in the palm of your hand, wherever you happen to be. I can't overstate how powerful this is. It completely and utterly spoils you.

A lot of the fancy things Apple is showing in the iPhone ads I was already doing with the Blackjack. For example, when I was on vacation in Chicago recently, this scenario played out:

  • We were walking down the Magnificent Mile when we realized we should try to get Second City tickets.
  • I grabbed my Blackjack, navigated to the Second City website, and saw that there were seats available for the 8pm show in about an hour.
  • I clicked through to automatically dial the number for the Second City box office. I was told to come down and get on the standby list because the last few tickets had just been snapped up.
  • I then launched the Windows Live mapping application and quickly mapped a route to the nearest L station.

Could I have done all this more smoothly on the iPhone? I'm sure of it. The Windows Mobile web browser is pretty crappy, and unlikely to render websites that aren't at least a little mobile frendly. It's hardly Safari. But still, we got into that 8pm Second City show on standby, thanks to my phone and judicious use of the internet. It's no "calamari", but it'll do, pig. It'll do.

The Blackjack supports both 3G and EDGE data connections. 3G data connections are amazing. When you're connected via that little "3G" icon in the upper-right hand corner of your mobile phone screen, it's like a beautiful, golden river of bytes flowing into your cell phone. Web sites blast on to your mobile screen. 3G is darn near a cable modem experience. It makes using the internet on the go an absolute pleasure.

EDGE data connections, on the other hand, are none of those things. When my Samsung Blackjack is using an EDGE connection, it's like downloading the internet through an overclocked dialup modem. It's, in a word, unbelievably painful. It's the difference between "hey, let me whip out my phone and look this up really quick on wikipedia" and "eh, isn't worth the time investment." For reference, when downloading files, I see data rates of around 10 kb/sec with EDGE, and easily five times that (or more!) with 3G. Every time I see my phone displaying that little "E" icon that denotes an EDGE connection, I frown. It's a warning sign that using the internet will now be an unsatisfying, tedious, dialup era chore, instead of the fun, tiny-little-cable-modem experience it could be with 3G.

So you might be more than a little concerned, as I am, that the iPhone only supports EDGE data connections-- and doesn't support 3G data connections at all! It's a cruel oversight for a phone that has such an outstanding web browser. Jobs' answer to this criticism is that the iPhone supports WiFi, and iPhone users should seek out WiFi connections instead of suffering through EDGE cellular connections.

If you think reliance on WiFi is an advantage of the iPhone, check your reality distortion field. I've lived the WiFi lifestyle when I've travelled, and it's not pleasant. Free, public WiFi points are a dying breed. Most WiFi points these days are locked down tight with passwords and encryption. And if they're not locked down, they want to charge you exorbitant rates for a few measly hours of WiFi access. It's like this at every single airport I've been at in the last year. And every Starbucks. And pretty much every other commercial venue. The only places I've had luck at are smaller non-chain coffee shops, public libraries, and so forth. If you're counting on the availability of free WiFi for reasonable data speeds on your iPhone, you're in for a rude awakening.

I've found that not being tied down to WiFi access is an incredible blessing when I travel. One of my favorite features of Windows Mobile is that you can tether via USB and use it as a cellular modem for your PC. The 3G cellular data network frees me from dependency on expensive, unreliable, hard to find WiFi hotspots. It's saved me at least fifty bucks on WiFi access fees in the last two months alone-- and I could do it from anywhere I had cell coverage, not just in a small hotspot huddled around the altar of WiFi.

I'm no Walt Mossberg. It's not my goal to crush anyone's dreams of owning their first iPhone. I know you've heard this a million times, but never, never has it been more true for any technology product: wait for version 2.0 before buying.

Merlin Mann on the iPhone

Consider the fate of the original iPod, which was a far less ambitious product. This isn't just yet another small hard drive strapped to a tiny LCD display-- it's Apple's first cell phone ever. Maybe you remember this choice Jobs quote:

"You keep on innovating, you keep on making better stuff," Jobs said, in response to a question from Williams about why a new iPod might seem outdated as soon as you take it out of the box. Then Jobs offered a bit of advice to consumers: "If you always want the latest and greatest, then you have to buy a new iPod at least once a year."

If we use history as our guide, we can expect that Apple will introduce a new iPhone within 12 months. It's likely to address the most glaring flaws with the original: it'll probably have 3G, more storage, longer battery life, and so on.

I'm all for competition. I'm even what you might call an early adopter. But I think buying the very first iPhone model is a terrible idea unless you're the type of person who has a $500/month discretionary fund set aside solely for gadgets. The lack of 3G alone should be enough for serious pause, as it's such an obvious, painful omission from a phone with such powerful internet capabilities. I know I'd rarely use my Blackjack to access the internet if I was limited to brutally slow EDGE connection speeds, and I fear the same of the iPhone.

That said, not all buying decisions have to be rational. It is fun to own the latest gadgets, and as gadgets go, there's no doubt that the iPhone is a doozy. If you're willing to live with the crippling WiFi and EDGE limitations, then have at it. But at least go in knowing what you're getting into. And mark your calendar, because you'll probably be upgrading to the second generation iPhone within 12 months.

Discussion