What effective websites should have - Part I

Thursday, December 28, 2006

Introduction
In all my years leading the design and creation of business websites, people have often asked me "How do you know a good website?" Getting little positive response to "I just know!", we started to document "our techniques" over the years - the things we had tried that worked and the things we had observed didn't work when omitted. In doing so, we have developed certain Best Practices that we always follow to ensure we provide the best business website possible to our clients. We will attempt to summarize our Best Practices in this series of BLOG entries.

A word of caution, though, this is a work in progress! Times change, websites change and search engines change too! You have been warned. :-)

By the way, you may be wondering who this BLOG is for. Well, web designers and html programmers will definitely benefit from this post (no thanks needed guys & gals of web design). However, this post is mostly for "clients". In other words, this is for the business owner who has finally realized that their business website is just as important (if not more important) than their phone! In this day and age, "anyone" can be a web designer. We figure the best client is an educated one.

As it comes to website best practices, we always talk in terms of the following areas:
  1. Business best practices represent the "content" every website should contain (at a minimum).
  2. Design best practices covers what we feel are the design rules to follow.
  3. eCommerce best practices (if applicable to the website) defines how to better "sell" a product or service interactively.
  4. Marketing best practices defines the rules to follow in order to maximize the marketing results for a business.
  5. Technical best practices are the HTML rules we like to follow.
  6. Finally, SEO best practices (a bit of black magic) specifies the techniques we like to use so that Search Engines will rank a website better.
In this entry (Part I), we will discuss Business best practices. Check our other BLOG entries for the other parts.

Business Best Practices

Display "Contact Information" clearly and on every page - How many times have you visited a website and navigated numerous pages before you found a contact phone number or email? This is one of the most common website mistakes and one of my biggest PET PEEVES. Just a few weeks ago (I am writing this in December of 2006) 60 minutes (the CBS show) did a feature on NetFlix with their CEO and ON THE AIR (as they taped) they could NOT find a customer service phone number! (It's there now, right at the bottom of the home page - by the way). The bottom line, do NOT assume that site visitors know your website and know where to look (like in a "contact us" page). If you are interested at all in attracting "business" and communicating with your customers, YOU MUST INCLUDE contact information clearly and EVERYWHERE. A good website designer can make it an un-intrusive part of your design, but it must be there! Also, don't forget to represent ALL your communication channels: email, phone, chat, messenger pigeons, etc.

Be clear and concise about your content - I know you've seen the sites I am referring to. You know, those sites that just go ON and ON and ON and then some more! Did you know that statistics show that users DON'T PAGE DOWN (they don't scroll down)? If a website visitor does not see what he or she is looking for in what they first "see" on a website page, they are gone! Now, am I saying that every page should be short and sweet? Well, not necessarily, but your content (and your design) should lend itself to carry the most important message of each page clearly and concisely as close to the top of the page as your design allows! Of course, make sure you cover the bases: What is your website (read "business") about? Who is your website (read "product or service") for? Now, here's a contradiction: In a website, CONTENT is king! The key is, distribute the content correctly and you will have lots of page views and happy visitors.

Optimize your page titles (we are talking about the page title displayed in the "browser", the TITLE tag in HTML) - Did you know that every page can have (read "should have") its own title? This is another common error. People will spend lots of time thinking about their "content" and will then stamp the SAME title on EVERY page. Even worse, most times the title is so generic that you can't even tell why it was used on a page! Here's the tip: Every page should have a relevant and rich title that speaks to the content of the page. Why? Two answers: (1) Users will feel more "in place" if they can figure out what to expect on a page and (2) Search engines love titles!

Provide a clear call to action, everywhere - OK, so maybe not everywhere, but definitely as much as possible! What is a "call to action"? Well, what is it that you want that website visitor to do: purchase a product, hire you for a service, sign up for a newsletter? Whatever it is you want your visitor to do, you must provide them an OBVIOUS way to do this, in as many places as it makes sense! Again, think back to how many times you've been to a site where you could not figure out how to "sign up" for something or purchase an item?

Include a Site Map page - This goes in line with making sure your site visitors find their way around your website. Most web designers and programmers should be able to provide you a site map "mechanically" meaning little work has to be put into it. But even if whomever is creating your site does not have automated tools, insist that a static site map page be created and simply cover your "important" pages, at least. Site maps not just help users, though. Search Engines will love site maps as well!

Consider your audience - You would not have a childish looking website if you were interested in selling to Doctors, would you (maybe to Pediatricians)? The same way, you need to consider who you want to attract or service and you need to talk to "them" in their words, their way, their style. We like to say "Educate, explain, then sell" because we believe that the best website for an audience is one that helps that audience clearly understand a problem or situation they may have then why they need you to provide something or solve a problem (not just that you are able to provide a product or service). Tell them that you "understand" their need or their problem, then tell them "Why are you better than your competition?"



Of course, are these all hard and fast rules? Of course not. There are many times when you have to do things differently because the need arises! The best rule to follow is, look at each site from the unique perspective that it may bring you, then apply the rules that make sense and think outside the box to establish "other" rules that you may have never thought of.

Coming up in the next BLOG entry: Design Best Practices.



Use Microsoft's Virtual PC or other virtualization to develop projects. (For Developers)

Saturday, November 11, 2006

If you develop many applications or websites for any x86 platform (Windows, Linux, etc), you have a common problem: your development environment needs to change from project to project. Is there a way to easily "switch" back and forth between environments / projects?

The Scenario:

Say you've spent a few months working on a project. You have setup your workstation in very specific ways. You've installed specific software tools, specific drivers. You've setup areas in your hard drive(s) for code and for testing. You may have spent countless hours tweaking and configuring this very special environment. On "delivery day", you rollout your application with great success. The boss is happy, the customer is happy! A job well done!

Now, you get your next assignment. It's a complete 180 from the previous project. You need different drivers, you may even be developing for a different OS! Of course, you are still expected to support the previous project. What do you do?

The Technology: Software Virtualization using Microsoft Virtual PC

So, what is Microsoft Virtual PC? The answer to that question is not a short answer so the Microsoft website (http://www.microsoft.com/windows/virtualpc/default.mspx) explains their product in great detail. However, in a nutshell, the Virtual PC software allows you to run a computer within your computer. This "virtual" computer, the Virtual PC, acts and behaves just like a normal computer. It has drives, network cards, etc. As a matter of fact, if you choose to do allow it, the Virtual PC can even connect to the network and from the network, the Virtual PC and your "host" PC (the real computer hosting the virtual computer) will look like two separate computers!

Because you can install software to this Virtual PC, just like you can to any computer, you can configure the Virtual PC in any way you need, including the installation of any software tools you may need for your project. Furthermore, the Virtual PC is stored in two files in your host computer, which you can move from computer to computer or archive easily.

At present, Virtual PC supports virtualization of the "sanctioned" Microsoft operating systems (including good old DOS). Also, although not listed in the supported operating systems, it is a well known "secret" that certain Linux distributions can also be virtualized on VPC. I've never installed one, though, but I've heard that others have!

A Solution: Virtual PCs for each (or like) projects:

Now going back to the problem, topic of this post. If you are a developer (especially a developer for hire) the above scenario is one that you are familiar with. Of course, I introduced Virtualization technology above for a reason. A great way to be able to manage different projects with different workstation needs is to use different Virtual PCs (VPCs) to work on different projects, calling up the different virtual environments where needed.

For example, say you have the following projects you are responsible for:
  1. An ASP.NET web application that relies on Active Directory for user registration (Production Target: Windows 2003 with Active Directory).
  2. An ASP.NET web application that makes extensive use of a certain vendor's components (Production Target: Windows 2000).
  3. A legacy Coldfusion / PHP web application that you are stuck supporting for a client that won't chage (Production Target: Windows 2000).
  4. A VB.NET Windows application, targeting Windows XP.

To support the above, you could have a few VPCs configured as follows:

  1. Windows 2003 with Active Directory and IIS (project #1 above)
  2. Windows 2000 with IIS (projects #2 & #3 above)
  3. Windows XP (project #4 above)
Conclusion:

Through the use of Virtual PC technology, specifically Microsoft's Virtual PC 2004, you can have an unliited number of environments "ready" to satisfy the need of any old (and new) projects that you are responsible for. Although there is a little more required to execute the strategy here correctly (for example, managing what can sometimes be very large VPC "image" files), the concept is simple yet powerful enough to be used to your advantage.