This is the second in a two part series.
In my previous blog (Web Development vs. Web Marketing), I discussed some of the ways project specifications can interfere with the business reasons for the project. Today, I will take a look at just how technical implementations, while being technical correct or acceptable, can hinder and even hurt a Web site's ability to fulfill its purpose. To illustrate, I am going to use the sample "why oriented project specification" that I laid out in the previous article. To repeat it:
* Must appeal visually to our target audience: [insert target market demographics here]
* Site must be extremely usable by our target audience, and very usable by non-target audience members
* Site must present the most useful and interesting product information up front, but allow visitors to get as much product detail as they need, to simultaneously encourages sales, as well as minimize the need for customers to contact us before making a purchase
* Site must be consistent with our corporate "look and feel" in a manner that does not compromise usability
* Site must be a secure as possible
* Site should foster a trust relationship between our company and the customers, particularly new customers
* Site must have search engine optimization baked in from Day 1
This is actually the basic skeleton for any good project specification. Note how it focuses upon why the Web site is being created in the first place: to sell products as efficiently as possible! A site that looks great and have cool widgets all over the place, but is totally unusable and baffles search engines will not make much money at all.
Must appeal visually to our target audience
I would have hoped that garish websites, graphics heavy websites, and so forth would have died with the late 90's. Sadly, this did not happen. Thanks to the broadband boom, Web designers and developers now feel free to load a Web site with 200KB worth of graphics. I guess these developers all live in major cities. Most parts of the state I live in (South Carolina) are still on dialup. Too much of the population either has no cable, or is so sparsely populated that the phone company is not going to put Cos for DSL all over the place. At best, these users are on satellite, which I have found to be unreliable and slow from my days of network management. South Carolina is not an isolated exception. Do you think that a farmer in the Midwest or someone in the Dakotas is likely to have a fast Internet connection? Even if your Web site is aimed at business users, you should keep in mind that many companies frequently under provision their offices. Most users simply do not (or should not) need to spend much time outside of the LAN, and what bandwidth there is, is frequently filled up with inter-office communications. In other words, when you have 20 users on a single T1, the bandwidth available to each user is not so much. Web sites should still be extremely lightweight, end of story.
Site must be extremely usable by our target audience, and very usable by non-target audience members
This is another pain point, on many levels. Those nifty menus that you designed may work for you, but they probably confuse a user. If they drop down automatically on a mouse hover, that is different from how desktop applications do things, and is confusing. If they need to be activated by a mouse click, you have confused your user because a mouse click in a Web site is "supposed to" (in the user's mind) take them to a new page. Even worse, did you break the user's right-click functionality, such as the ability to open the link in a new tab or window? Will the top level menu item take the user someplace useful as well, or is it just an access method for the menu? Can a screen reader read the resulting menu, so that vision impaired users can use your site? Will my mother be able to figure out your menu system? Avoid those drop down menus, they are simply a crutch for Web designers and developers who do not know how to construct a useful, usable navigation system.
AJAX is another usability breaker. It is nearly impossible for vision impaired users who use screen readers to work with. Anything requiring drag/drop or right clicking (they are acceptable if they are not the only way of using the site) is a bad move too. In fact, anything that requires any type of input other than single clicking with the left mouse button is an utterly unable system. You do not want to require your users to experiment beyond the lowest common denominator of input (single left mouse click) to use your site.
Sites that look like desktop applications are another usability disaster. You are confusing your user. Even if the whole Web went to "desktop-esque" sites tomorrow, there is still the problem of everyone having a different idea of how to make their pseudo-rich clients look and function. If you want your users to give up and walk away from your Web site, try to make it look and act like a desktop application and not a Web site. When the user opens their Web browser, they expect Web sites, not applications. That means standard form widgets and links only. That means that text or graphics that look like links should function like links, including retaining the browser's right-click functionality. That means that saving the page as an HTML file should work, and the user's copy/paste functionality should not be impaired. It means a lot of things. Keep your Web page a Web page; if you want to add additional functionality, it should be marked as such so that the users knows that they are using an application. Microsoft made this mistake with the new MapPoint web site; the site is useless and unusable now.
Site must present the most useful and interesting product information up front, but allow visitors to get as much product detail as they need, to simultaneously encourages sales, as well as minimize the need for customers to contact us before making a purchase
This one should be obvious. Many Web sites fail on this one, not due to over engineering the site, but due to under engineering. Products that only have a small thumbnail image of the product, database schemas that do not allow detailed product information, or force the information display to be so universal that products with special features do not have those features highlighted, short descriptions that are just truncated versions of the long description; these are all ways that an under engineered Web site can fail to present the right information to visitors at the right time.
Site must be consistent with our corporate "look and feel" in a manner that does not compromise usability
Frequently, Web sites try to incorporate too much of the companies non-Web branding into the site in a way which kills usability. For example, putting a Flash intro (or any kind of intro page) is a disaster. It is also a waste of time. Chances are, your users are coming from a search engine and will bypass that page anyways. What works for print and what works on screen are two entirely different things, right down to the choice of fonts. For example, Arial is more readable than Verdana in print; but Verdana is more readable than Arial on the screen. Times New Roman is even worse on the screen, while still being a great choice in print. Splitting the main text into columns is another items that works in print and fails on the screen. Sidebars, light watermark graphics under the text, "splash graphics" all over the place; these are all things that work great in print but fail on the screen. Similarly, the way your customer presents itself in television ads is not how you should be designing your Web site. TV ads are meant to get the audience's attention before they duck into the kitchen or bathroom (right down to having a higher sound volume, so they can be heard in another room). Your Web site does not need to be doing this; if it is on their screen, it does not need to gain their attention. They have already chosen to view it. And for the love of all that is good, do not force your users to watch your TV ads on the Web site.
Site must be a secure as possible
Every new feature you add to a site, if it involves sending data to the server, is a potential security hole. Too many "perpetual beta" pieces of software have security bugs. Even worse, updating third-party Web applications is usually an absolutely nightmare. In a nutshell, go ahead and use some "super cool alpha release" piece of code from SourceForge. But be prepared to sit on top of that application, checking their bug tracker, looking for updates, performing security audits, and so on. Constantly. It will be like 1997, all over again! Woo hoo! Go ahead, add an RSS aggregator to your Web site; just be prepared to take the blame when malicious code is dumped to your users (or your servers) via the feed. Use that third party survey system (which no one fills out anyways) if you want; but when a poor use of sprintf() lets some malicious user take over your server, accept the blame. Install some goofy search system, I will not be offended. But I will not have any sympathy if you chose a product that kindly offers your database information to users when it bombs out, and has a SQL injection hole in it to boot. To repeat myself, every new feature you add to a site, if it involves sending data to the server, is a potential security hole.
Security and usability also do not play nicely with each other. It can be a fine balancing act. I am indeed sympathetic to it. But when make your users have a strong password, but do not help them make it (the MSDN site has an excellent system for this, by the way; it has a little "security meter" that goes from red to green in real time, to indicate that you are meeting the requirements), then they are quite likely to give up and go to another site to make their purchase.
Even things like user comments or reviews can kill a website. All it takes is to have a poor filtering mechanism that allows someone to put in some CSS code to make your site look bad, or to be spammed, and make the system worse than useless. Captchas are not the solution either; there are plenty of tools out there to break them. If your site involves trading money for a product or service, you can be sure that someone will try to rip you off.
Site should foster a trust relationship between our company and the customers, particularly new customers
Site must have search engine optimization baked in from Day 1
This one is the ultimate killer. A five percent increase in traffic from organic search results is a five percent increase in sales. A site in the Top 10 of the major search engines will outsell a site on page ten of results by a disgusting amount. To put it bluntly, anything other than pure, static, standard compliant HTML is going to hurt your rankings in the search engine. Sure, your super nifty Flash application may look awesome. But how is the Marketing Director going to react when he finds out that if he wants top search engine placement, he will need to spend thousands of dollars a month on pay-per-click ads? Even worse, pay-per-click ads are not nearly as effective as organic search results; an organic search result listing is about twenty times more likely to be clicked, and around 14% of all pay-per-click page views are click fraud. Do the math. Is taking that kind of hit to your search engine ranking worth that kind of loss of search traffic? Are you hoping to make up for it by having other sites link to yours? If so, ask yourself this: how are those other sites going to find out about you in the first place, if you are not well positioned in the search engines? There is a reason why Google, Yahoo, MSN, and other sites earn billions of dollars in revenue from their ad systems. Search engines are that important.
Unless you are a site like Amazon or eBay, where everyone who is looking for what you sell is going to go to your site first, you simply cannot let technological wizardry stand in the way of your search engine rankings. A site that gets zero visitors makes no money, it is a simple equation.
What does this mean for the Web designer? It means that anything that is dynamically generated should come out as static HTML code. It means that your URLs need to be search engine friendly (which is also bookmark and email friendly too, another usability item). It means using CSS responsibly, to separate presentation from content. It means properly marking up your code, particularly with the header tags, strong and emphasis, etc. so that the search engines know what each page is about. It means providing ALT tags on your images (good for screen readers, too). As a shortcut, try out your site in Lynx or use a screen reader on it. If the site works great in those environments, the search engines will love it.
I designed a site about eight years ago that has been in Google's Top 10 for its keywords (very generic terms). It is pure static HTML. We recently redesigned the site, the customer told me one thing: "whatever you do, make sure that it does not hurt the Google rankings. I don't care what kind of features we might not use, just use the same techniques you used last time, and I am happy." I would say that this is a pretty strong endorsement of my techniques. At the end of the day, that customer is spending pennies on pay-per-click advertising (he likes to appear twice on the search engines!), while his competitors are spending a fortune. Users tell him that they like his site because it is to the point and easy to use. He likes the site because updates are easy to make. All of these benefits came from eschewing fancy programming for plain, static, boring HTML. And it was easier too!
So, before you write a single line of code on your next Web site project, ask yourself: does this code address why I am working on this project? Or am I just following the current trend, or having how I do this be dictated to me with no business purpose behind it? Otherwise you may find out that you met all of the project specifications, and have an extremely unhappy customer as a result. Remember, you are the expert on these things, not the customer. They may have some idea of what they want, but at the end of the day, you are supposed to know how to build a Web site. To let a customer make these kinds of decisions without you letting them know what the ramifications of those decisions is simply irresponsible, and your customer will appreciate you more if you work with them to make the best Web site for their business.
Justin James is an OutSystems MVP, architect, and developer with expertise in SaaS applications and enterprise applications.