Good Software is not just about algorithms

If you weren’t familiar with software development and you saw one of Google’s billboards or their “aptitude test”, you might think great sofware is all about writing great, complex algorithms. But good software is about much more than that – its ultimately about solving problems and saving people time. If you write great algorithms but can’t hide them behind a user interface that mere mortals can understand, then you don’t have great software.

Google’s core product is their search engine. This happens to be a piece of software that has a very complicated algorithmic component, but a very simple user interface. Because of that, it is an ideal problem for PhDs to work on. These PhDs are smart. They can apply tremendous engineering vigor to the algorithms they work on. But, when it comes to making software “easy to use”, your PhD degree probably won’t help you much. Making software easy is about understanding your customer and being able to relate to real people’s problems. Its not about teaching the customer how your algorithm works. Its about allowing the user to use the computer naturally, and then applying your algorithm transparently underneath.

And in some of Google’s products, this lack of understanding really shows. For example, their AdWords product is downright abysmal to use. Any business person trying to understand the nuances and complexities of this techno-driven software will recognize that this is software built by geeks for geeks, with little understanding of their target customer.

My case in point today is their adwords campaign daily budget. To the end user, this should be a simple thing. “After I’ve spent $50, stop displaying my ads today”. Simple, right? Not with adwords. Long before you ever reach your $50 limit (in fact, you may have spent only $0.05 of that limit!) you’ll start getting warnings about your ads being “on hold” or “in trial” and your daily limit potentially being “wrong”. It will ask that you please reset it to the “recommended value”, but the recommended value may be $17,000!! After having played with it long enough, I think I understand why these exist. But, if it were good software, I wouldn’t have to. This is a clear case where the user is getting exposed to the wierd stuff going on to make the algorithm work.

Another example is their “status” of an ad. As the user, I know of two statuses – enabled and disabled. I can even think that google might put a new status like “stopped” (due to underperformance or failure to comply with advertising guidelines). But Google gives statuses like “in trial” and “on hold”, and provides no explanation or statistics to support why its been auto-classified into these unexpected statuses. As the end user, you are left to read through scanty documentation and try to understand what the engine is doing at a low level. Within seconds of creating a few of my keywords, google moved them into the “In trial” status. I guess In-trial means I wrote a “low quality” ad. But the ad looks perfectly fine to me. What is low quality about it? I’ve still never figured out how an ad that was never run went into “in trial” status.

Another problem for google is the way you pick your prices. Unlike Overture, Google requires that you pick a price for your keywords first, and then click submit, Google analyzes them, and then finally notifies you what position your ad will be displayed in (and also estimates how many clicks you will get each day for the keyword). This setup is okay, but it forces the user into a trial-and-error retry loop, constantly trying one value, then going “back” and trying another. Wouldn’t you rather have an interface that allowed you to get this done with one setting? I’d like to just see a list- to be the #1 ad, you need to spend 10cents, to be the number 2 ad, you need to spend 8 cents, etc etc. I can definitely see how an algorithmic-thinker may have thought this was actually a good interface, despite its obvious flaws.

To their credit, Google has made significant improvements over the past couple of years to the user interface. Originally, it was just as complicated and obtuse, yet didn’t contain any help! Now, at least it has help, and tries to tell you why their product isn’t working. Now the only problem is that the application is so complicated that reading the help doesn’t even help. Or maybe I’m just too dense.

So, for the time being, I think Google will remain great at solving highly techie problems. The search engine works well, because it needs so little user interface. Likewise, GMail will fare well, because its an application used more heavily by engineers than any other profession (the engineers don’t have to relate to customers- just their own understanding of their own email usage goes a long way). But Google is going to have a hard time transitioning into main-stream email or business applications. These applications require a much better understanding of how to simplify problems for end users. And this is one thing that Google has not demonstrated an ability to do yet.

The point of this blog entry is not to bash Google. There are thousands of whacky interfaces out there. The point is that great software has to have an element of understanding your customer’s needs, and also understanding how to hide algorithmic complexity from end users. Algorithms are fun for us software folks to talk about, but it really sucks when they are exposed to the end user.

Leave a Reply

Your email address will not be published. Required fields are marked *