Friday, July 23, 2004

Software Design: Ease of Use vs. Discoverability

Almost every product you pick up, whether it's a hot glue gun or a $1000 impossibly complex piece of software, says this on it somewhere: "Easy to Use!"

But many products aren't so easy to use, as we all know. So this term has almost lost its meaning, like "intuitive" or "all natural". So what do you say about your product if it truly is easy to use? And what does that mean, anyway?

I want to make a distinction between ease of use, and ease of learning or discoverability.

Here's a simple example in software products: drag and drop. It may be easy to use, but how the heck do you discover that certain areas of certain windows can have things dropped on them? And just what kinds of things can you drop on them? The inverse of this is the File/Open menu item, which brings up an open panel in which you hunt around your hard drive in a tiny little modal window. That functionality is easy to discover (it's right there in the menu) but very tedious to use, particularly if you have a lot of files, in different places.

Another example is the use of styles in programs like InDesign and Word. They're really easy to figure out what they're supposed to do, and really hard to use. The problems range from scope (what in the heck will change when you click Apply) to the tedium of repeatedly selecting text then going back to the palette to click the style. NeXT Computer innovated in this area, it's now in many MacOS X apps, and still nobody has noticed: "Copy Style" and "Paste Style". You can load up the style you want to use and then, with one hand, select text; with the other, you "Paste Style" with the menu key equivalent. It's amazingly efficient and easy to accomplish. Why isn't this idea all over the place, in every product? Or Adobe Illustrator's "Transform Again" menu commmand. Brilliant.

In my view, the right choice is "easy to use, hard to discover", with some way to make it more discoverable. Tool tips, horrible as they are, were invented for this reason, to help you discover stuff that you might not otherwise have noticed. The dreaded "Tips" that pop up, with the handy check box, "Don't show me this again", are actually a really good idea. If they're telling you something you already know, at least you won't have to suffer through it again; and if you didn't know whatever it is they're telling you, often it's truly helpful. Microsoft really pioneered this approach, and, other than overdoing it with dancing paperclips and puppies, did a very good job of integrating it into their products. Their only mistake, I think, was having 38 small opt out preferences, rather than one big giant "leave me alone!" preference (I'm thinking of Word here, with all its helpful grammar checkers, date suggesters, "You seem to be writing a letter; want some help?" and stuff like that).

Ease of use boils down to this: can you remember, a month after you last used something, how to use it efficiently?

Discoverability is a bit different: can you figure out most of the functionality of a program within the first 10 minutes, "cruising the menus"?

I think one of the best (simple) ideas of all time in this category is, I believe, Microsoft's. It's the Recent Documents menu. It does exactly what you want 99% of the time, bringing back the documents you were most recently working on, regardless of where on your computer they might be living—and it is obvious how the feature works.

Thursday, July 15, 2004

Why Big Teams Don't Work

I read somewhere that Microsoft has a 24-hour system for software development with automated builds going on in the night and literally hundreds of programmers on their bigger projects.

The obvious question, then, is why isn't their software dozens of times better than everyone else's? It's not only "not as good" much of the time, or "marginally better" occasionally, but it's full of bugs, expensive, and, well, just not that great. Microsoft has more money than anyone else on the planet. They're doing what they think is best. They have not bought too many copies of The Mythical Man Month, or read them.

So what's on the other end of the spectrum? Probably shareware, which typically has a single author and is a labor of love. There's lots of really good shareware in the world, some of it, frankly, rivals Microsoft's offerings.

So why is it that small teams work better than large ones, or at least anecdotally appear to?

I have a lot of theories, and for the record, I am a proponent of small teams and have never run a software project with more than 5 engineers, including myself.

My principle theory is simply that projects involve human beings, and as a species we don't handle complexity very well. We are wired to simplify: vision simplifies what is really there, recognizing patterns; socially we simplify: you're either Good, or you're Bad, Guilty or Innocent; intellectually we simplify: the scientific method is based on reducing an experiment down to as few variables as possible so you can "control" for them and measure the one you're interested in. Humans can support up to 3 simultaneously contradictory thoughts at once, before melting down into indecision and confusion.

So what happens when you put 400 programmers on one project and try to run it?

The first thing that happens is you need at least 50 managers and project managers and coordinators and cross-functional liaisons and whatever else, just to try to "communicate" about the project. Right, like that's going to help.

The second thing that happens is nobody can really get work done any more. You try to edit a file, make some changes, add a new parameter to an API somewhere. You can't just check the file into CVS (or SourceSafe, in the Microsoft case). You have to find all the people who are using the API and let them know. You have to figure out if anybody else is modifying the same file, for different reasons. You have to stop working, and talk about working instead. God forbid it turns into 3 or 4 meetings, a few specifications, and, conservatively, about 50 email messages.

I am a programmer, among other things. I've changed API's many times. With a good search-and-replace tool and a thorough understanding of all the places an API is used, you can make a sweeping, and I mean sweeping change, without any errors, fully validated and tested, in a couple of hours.

So efficiency is part of it. Confusion, cross-currents, communication, and all the things that fall out from that: backlash, politics, sandbagging, employee turnover, morale problems, managers on a tirade trying to "fix" it; you may have seen some of this. It's preventable, believe it or not.

Just use small teams. Small teams are how the best work in the world gets done. Even if it's a "big project". How many people do you think it took to build the Golden Gate Bridge? I don't know, unfortunately, but I bet you it was at most a couple hundred. If Microsoft built the Golden Gate, do you think they'd put fewer than 2,000 people on it? Do you think it would be on schedule?

I don't mean to pick on Microsoft, though they're the biggest, most resource-heavy example of large-scale product development on Earth. They're certainly not unique when it comes to large-team molasses-style development.

Maybe this is why "outsourcing" is becoming popular. Hey, maybe if we abdicate this project completely and give it to a team in Russia (translation: 1 or 2 really smart people) it will come in on time and under budget?!

Here's a suggestion: outsource it to your 2 best engineers instead. Set them up in Marin with no phone lines. They'll get it done, I promise.

Monday, July 12, 2004

File Sharing through Email

So I'm working on a spreadsheet and I email it to 10 people. I fix a formula, widen a column, and send another revision around. One more change, and ... maybe I'd better send it to only the 4 people who ever actually open it and give me any feedback, until it's done. You send an IM to one of them: "Did you get the updated file I emailed you?"

You've been there. You do a few more revs, and you rename the file, "Final 1", "Final 2", "Final 3". And finally you're done. You send one more email out to the group of 10, "Final 5.xls".

A week goes by. You start getting email from some of those 10 people. "Do I have the latest version?" or "Can you send me that spread sheet you're working on?"

This is how most people share documents and work on them as a group. The above scenario generates 54 (fifty-four) copies of the spreadsheet (including the 5 final and one draft revisions I kept on my machine), and distributes it over at least 11 computers.

No wonder we need 200GB disk drives.

There is a better way. It's called centralized file sharing. The problem is, nobody uses it, because it's too much of a hassle, another password to remember, somebody else has to set it up, maintain it, back it up, etc. It just doesn't really work, does it?

"I sent you the final version yesterday, Final 6.xls; did you get it?"

Saturday, July 10, 2004

Putting the File Cabinet Next to the Water Cooler

There is a lot of software out there in the world. Much of it falls into three categories, as I see it:


  1. Document-Centric Apps: This category of software includes spreadsheets, word processors, Photoshop, CAD/CAM, and a host of other applications.

  2. Communication: Email, chat, conferencing, even phones.

  3. Web-based: This has become a category in itself, and is not quite "software" in the traditional sense, but replaces some kinds of traditional software. Its distinguishing characteristic is that there is a server in the sky that is where things live, and you upload things to it (blog text, for example, or photo files, or form data) or, more frequently, download things from it (news, information, weather reports, dictionary entries, dance steps, and just about everything else that has existed throughout history).

Occasionally software in one category attempts to take on some of the functionality of the others. Email has evolved "attachments" to carry a payload, Word attempts to do web publishing, Fractal Design's Painter had a mostly useless "NetPainter" feature added onto the side of it. Web sites, originally all "download", have been adding "upload" capabilities bit by bit. Even document creation, to a small degree. Blogging software is, at the end of the day, just an HTML authoring tool that makes it easy to create/edit/upload a bit of text. It's not all that different from HTML editors that have gone before, other than being web-based. As I type this, I'm manually typing <li><b> tags and hitting the Preview button in blogger.com's posting window to see what it's going to look like. What happened to WYSIWYG editing?

These are, for the most part, evolutionary cul-de-sacs. They suggest the missing functionality in the application category, but don't really move the software into a different category.

The next revolution is to truly integrate these disparate kinds of technology. I like to think of it as putting the file cabinet next to the water cooler. So you're communicating--emailing, chatting, maybe authoring documents as well, but all in different places, with different kinds of software. What you really want is to have your communication built around your documents, and keep them in a global place where you can refer to them, revise them, share them, and there is just one definitive version of the document, not 13 revisions with names like "Budget 02 final-1.xls" and "Budget 02 final-3-Glenn.xls".

This requires a new breed of software altogether. A new network. A new protocol. A mini-revolution. HTML and web servers created a revolution by simply adding a little structure to file transfer. I think there is another revolution brewing by adding two-way communication and real-time aspects to the model, throwing in peer-to-peer capabilities, and seasoning to taste.

Wednesday, July 07, 2004

Yahoo and AOL: out of business

Both Yahoo and AOL recently announced their exit from the "enterprise instant messaging" category of software. This comes as no surprise to some of us; they were never really in it to begin with.

But not everyone saw this coming, and many are at a loss for a business instant messaging solution. I personally see this as a big opportunity, because we offer Workgroup Instant Messaging, a dramatic improvement upon simple text messages back and forth. It's group-based, and it has built-in file sharing.

But it's more a sign of a regime change. Instant Messaging is huge, but it's a victim of its own success. AOL and Yahoo are losing money every day supporting vast networks of people chit-chatting on their IM networks. You'd think that this would drive them toward business users, but their products and company DNA just don't support that.

YIM and AIM and MSN are consumer apps. Perhaps even "teenager apps" or "young-adult apps". The feature set reflects that. They're even launching things like love.com and yahoo personals and various flavors of dating services, thinking perhaps that people might actually pay for those services. Did I mention checkers? I don't know anybody above the age of 8 who plays checkers. It's just not that interesting a game. Do we really need to play checkers over the internet now? What exactly are they thinking?

Meanwhile, for people who are just trying to get work done and communicate with people, what to do?

I say embrace the future and look around for something new and better. We hope you'll consider our software, of course, but this is an evolving world and it does get a lot better than YIM and AIM. If nothing else, you won't miss the advertising.

Tuesday, July 06, 2004

How do you say goodbye?

I use Instant Messengers, several of them, even though I don't like shortcuts and acronyms by nature. Luckily, I type fast.

But there are some funny social aspects to it that suggest that it's a technology in its infancy. Take the issue of "saying goodbye".... There is no convention for this yet on IM. I do it differently with each individual, as you probably do as well.

"See ya."
"OK. Bye."
"Have a good evening."
"Thanks, you too."
"Talk to you tomorrow."
"Definitely."
"Thanks for IM'ing me."
"Glad you were there."
"Bye."
"ttfn"

And still both of you leave the window open, pushed to the side a little, to avoid the dreaded "Glenn has left the chat", which seems a little cold and almost insulting.

Imagine a telephone call where neither party is quite sure when the conversation is over. You say your goodbyes, listen a little to see if the other person is really done, say goodbye a few more times, then gently lay the phone down on your table and wait for a half hour or so, and if it stays quiet, you hang it up.

That's what IM is like, and it's just weird. One friend of mine draws a horizontal line with dashes ------------------ as if to say "don't you dare type past this line." Another friend writes "VCD" (for 'via con dios'). Doesn't that mean "goodbye forever?" I'm not quite sure :)

So we fumble along, inventing our own solutions. If you have a suggestion for how this is supposed to be done, or if you think this is already solved and I'm just missing something, add a comment....

Saturday, July 03, 2004

The Interconnected World

I started Five Across because I thought that Instant Messaging was a very primitive technology with a lot of promise, and I saw a way to dramatically improve it. In just six months I have learned an amazing amount about the interconnected world we live in, which is exploding like the first galaxies, at an incredible rate of speed, headed in every direction at the same time.

Blogs are part of it. Messaging is part of it. Email is part of it. Even FTP and SSH are part of it. The internet is here to stay, and the wires now are everywhere, in all of our homes, in our collective consciousness. Even the African subcontintent is blossoming with bloggers, as a Stanford Fellow friend from South Africa is helping to make it happen.

We at Five Across intend to change the world, or at least part of it. I had a hand in changing the world at Apple Computer, where I was the driving force behind iMovie and iPhoto. Those applications are personal, consumer-oriented media tools, but their purpose is to share your life with friends and family, and when we added the Share tab to iPhoto, it changed everything.

People live and work in teams, in groups, and we're building that right into the core of the Five Across network. It isn't just a menu item, it's an architecture, and it's incredibly powerful. We hope you'll check it out, use it, love it, and recommend it to your friends and co-workers.