Quantcast

Selecting a Search Engine Optimization (SEO) Agency

(No Ratings Yet)
Loading ... Loading ...

If you're new here, you may want to subscribe to my RSS feed. So that you can read the latest updates about Web2.0 tools, Making Money Online, Tips in SEO, Ajax and many more. Thanks for visiting ProgramimiCOM!

Many dot-com marketing managers and web-site design staffers face the task of optimizing their web sites’ presence in search engines. Some companies contract with an agency to assist with this effort, and many are disappointed with the results. Perhaps they achieve some decent rankings, but only on a few major search engines and only for keywords and key phrases that were not a high priority.

In general, there are three levels of SEO options:

  • Automated software. The software submits to thousands of sites but results in few good rankings.
  • SEO agencies that use doorway pages and cloaking with hosting external to your site. This is frowned upon by the search engines because they don’t want to have millions of useless pages in their indices. Generally these rankings don’t last more than a few months, so it’s short term at best and can be expensive.
  • Legitimate SEO agencies that focus on increasing the ranking of your pages by optimizing your site for search engines. These firms will suggest editing your pages to increase their popularity and topic-centric characteristics, then help determine keywords for registration in major search engines and directories. This option is more costly, but it’s probably the best long-term solution. And you normally make up the cost of optimization through increased traffic and sales.

Core competency is the first thing you want to look at when selecting a legitimate SEO agency. Most agencies will outsource SEO services, and firms that possess core SEO competencies are rare. The SEO cottage industry has no professional association. There aren’t standardized definitions of industry terms. It’s an environment that changes every day.

So how do you check for core competencies and select the right SEO firm to help you optimize your web site’s presence in search engines? Follow these simple steps.

First of all, it is a very good idea to use your current agency. The people there are most familiar with your advertising objectives, your business model, the terms and definitions of your industry, and your target audience. Although an agency should have the proper resources to investigate, research, and compare SEOs on your behalf, I suggest you request and verify several key points.

Will you have direct contact with an SEO account manager? It’s very important that you be empowered to discuss your SEO plan directly with a qualified search engine technician or account manager who understands the intricate details of SEO. Very often, this one-to-one contact is missing, information is not transferred, SEO benefits or problems slip through the cracks, and clients are left dissatisfied. Monthly contact should be maintained to gain valuable information about what’s happening, what’s being done, what changes have occurred, and so forth.

Will your SEO campaign position not only outside links but also your primary domain name? Many search engine optimization or positioning companies will attempt to contract on a pay-per-click basis. This means they are hosting and designing web pages on your behalf and linking them to your home page. These outside links, when found on page one of search results, either redirect or provide a hyperlink to your home page (domain name). If you don’t renew this type of SEO service, you lose all the links you paid for. Make sure your SEO contract includes the optimization, submission, and registration of your home page into the major engines and directories. Such a service should also include the fees associated with Yahoo and LookSmart editorial reviews.

Are your expectations being met? Either your SEO campaign will fit your expectations or it won’t. You might feel uncomfortable with how long it takes to achieve effective results. If so, you need to ask your account manager about the length of time. You might re-evaluate your expectations or determine whether the account manager knows what he or she is talking about. On the other hand, if you hear what you want to hear, perhaps the SEO account manager is promising too much. In sales, it’s not uncommon to promise everything the client asks for. Be careful. Remember, SEO is an ever-changing, ever-evolving process, and no one can guarantee what is going to happen in the future.

Decide on a budget for SEO services, and ask your agency to find the right model for you. Make sure you review all the options and know what’s best for you and why. There are so many different price points and business models for SEO services that it can become very confusing. Find the model that fits your needs best. It’s a big investment in time and money, so ask yourself the following:

  • If you pay $0.25 per click and feel you’re getting a good deal, but then you receive 250 clicks per month, will you be happy?
  • If you pay $2,000-5,000 per month; get a lot of your key phrases linked on pages 1, 2, and 3 of major search engines; and see a more than 150 percent increase in search engine traffic from your server logs, are you going to be happier?

By Paul J. Bruemmer 

Getting Listed: Doing It Right

(No Ratings Yet)
Loading ... Loading ...

Each search engine and directory has specific requirements when accepting a “request to be listed,” and those requirements are all a little different from each other. It’s not one size fits all. Some things are best done by hand, and you’ll probably find that this is one of them.

When you hand submit your site, it’s a little like leaving your calling card with a client. You’ve met, and you know she has your card because you just handed it to her. It’s an important part of the business ritual. The same thing happens when you resubmit a URL to a search engine or directory. You’re making sure that it knows who you are. Being polite and using the right techniques are important. And repetition is reputation when it comes to search engine database listings.

Here’s why you want to verify and confirm your submissions:

  • You want to know if the “request to be listed” was accepted by the engine.
  • If it was accepted, did it get placed into the database?
  • If it was entered into the database, did it stay in or fall out?
  • If it did stay in the database, is it number 41 or 45,041?

You can do this yourself if you have the time and can keep current on search engine practices. Or you can farm it out to a listing agency. Professional registration services performed by trained technicians will provide you the following:

  • Verification and documentation that the “request to be listed” was accepted by the engine
  • Verification and documentation weekly or monthly to ensure the listing is found in the database
  • If the listing is not found, identification, documentation, and resubmission
  • Verification and documentation to submit additional doorway pages, monitored monthly
  • Position analysis for your home page, sub-pages, and doorway pages

Hand submission can have a definite advantage over random or computer-generated and automated services. When submissions are performed by hand, the procedure is documented and verified during the registration process, ensuring that nothing falls through the cracks. Manual registration is effective and worthwhile.

There are many companies offering to “submit your site,” but legitimate search engine traffic agencies that actually build traffic to your web site through analysis, optimization, linking, and monitoring are hard to find.

Search engine and directory submission is a huge business and a whole new industry on the web. There is no standardization, and the industry is unregulated. Some of these businesses are legitimate, and some aren’t. How can you separate the wheat from the chaff? By asking some very pointed questions:

  1. Does a search engine analyst with at least three years’ experience optimize my home page before submitting it to the engines?
  2. Does a trained technician manually submit my URL individually to each search engine and directory?
  3. Does a trained technician return each month to verify that my submission is registered in the engines?
  4. Do you send me specific documentation verifying that the stated tasks were performed?
  5. Can I receive an individual screen-shot confirmation of each individual submission?
  6. Can I personally visit each individual search engine and directory you submit my site to?
  7. Will you identify the exact category for my submission into each directory?
  8. Can you verify that I am listed (registered) in the search engines and directories specified?

If the answer to all eight questions is yes, then you’re on the right track.

Don’t accept any less of a professional service. You are entrusting a third party to represent your company by submitting your web site for multiple listings on search engines and directories. Your prospective new visitors and potential clients will find you through these listings, so it is critical that the company you select to perform this very important activity is reputable.

By Paul J. Bruemmer 

Seeding the Engines: Part 1

(No Ratings Yet)
Loading ... Loading ...

Have you ever outsourced or self-submitted your site to search engines and directories only to find that you didn’t get listed or well positioned in the engines you wanted? Well, with a good overview of the basic search engine optimization (SEO) process, you can easily attain your goals.

By breaking up the process into the following four key tasks, you can make getting listed where you want a whole lot easier.

  • Analyze, develop, or improve the key phrases used to find your Web site.
  • Optimize your content with these key phrases for search engine compatibility.
  • Submit and register your site correctly to ensure the focus is on all your pages, specific to your key-phrase list.
  • Monitor and audit the results.

This article will address the first two bulleted tasks, while Part 2 will detail how to submit your site and monitor the results correctly — all for a better understanding of the entire SEO process.

Analyze Your Key Phrases

A critical step before you start any SEO campaign is to conduct a thorough keyword analysis. Analyzing, developing, and improving the key phrases used to find your Web site can be more of an art than a science. You’ll want to query employees and customers alike and get adequate input from all relevant sources regarding all possible phrases that might be used.

Traffic-analysis tools, such as WebTrends, can analyze your server logs to determine the key phrases people used to find your Web site. This will give you a preliminary list of key phrases you might consider optimizing for, but you’ll need to do some additional research to develop your best list.

Most professional SEO firms will do the research to develop keywords, providing you with the best list of key phrases. There are tools you can use to help yourself in developing additional key phrases. Tools such as Wordtracker, did-it, WordSpot, and GoTo will offer key-phrase popularity comparisons and perhaps trigger your thought process to generate more possibilities. You can then take your new list to friends or family for additional review and recommendations.

Once you have a semifinal list, prioritize it, and then do some searches with these phrases. See how many similar documents are found and which competitors are showing up. Be sure to scrutinize the relevancy of each key phrase on your list, and plan to optimize for only the most relevant key phrases.

Optimize Your Content for Search Engine Compatibility

Write your content for each individual Web page as designed for a specific key phrase. First, take care of the hidden HTML program language issues:

  • Ensure title head tags are properly installed.
  • Ensure keyword and description meta tags are properly created.
  • Ensure image ALT tags are properly created.
  • If a <noframes> tag is used, insert keywords, descriptions, and content.
  • If using JavaScript links or image map, add text links if possible.
  • Check your search engine compatibility regarding dynamically generated pages (for example, .cgi, .asp, .cf, .php, etc.).

All of the above items should be corrected on your home page, and each of your subpages should be optimized for each key phrase, one phrase per page. None of the above hidden changes will affect the look or functionality of your Web site. All of these changes will make a significant difference in making your site search enginefriendly.

After taking care of the HTML issues, review the visible content on each page, optimizing this text for a specific key phrase. The first paragraph or two should include the key phrase with intelligent, comprehensive, and grammatically correct marketing copy describing your offerings.

This will help the robot engines like AltaVista and HotBot and other crawlers to reach deeper into your Web site to rank more pages. Search enginefriendly HTML program language and well-written content help these engines accept and recognize pages deep within your Web site for inclusion in their databases.

Stay tuned for Part 2: submitting to register your site correctly and suggestions for proper monitoring of your search engine listings.

By Paul J. Bruemmer 

Are You in the Dark About SEO Pricing?

(No Ratings Yet)
Loading ... Loading ...

There are a lot of people involved and there is lots of action taking place in the search engine optimization (SEO) field, which often leads to confusion and a number of questions.

Most marketers today realize the importance of achieving top search engine placement for their Web sites as it’s well established that the majority of Web site visitors come from search engines. But when it comes to the mechanics of fees and pricing methods, most people are in the dark. Even fewer know what to expect regarding customary fees and how they are determined.

In fact, I get many questions on the topic of SEO pricing and have avoided writing about it sooner because I didn’t want to sound like I was promoting my own SEO services. But since this is now becoming such a frequently asked question, I decided to share a request and provide a philosophical response.

Keith Clark of CC Group asked: “I have enjoyed reading your column at ClickZ, and it seems you are on to something. However, I am curious about your past articles where you mentioned the ‘real professional fee’ SEO agencies charge should average $2K to $5K and that charging by the impressions or click-through is not a good way to go. Could you tell me more about how you come up with a price for a client?”

What follows is a philosophical answer and in no way has anything to do with pricing used by my company, Web-Ignite. I’ve made a strong commitment to write for ClickZ honestly and objectively without self-promotion. Here are my candid feelings, based on years of industry experience, about methods of payment for SEO services.

Paul’s Honest Answer

SEO is abstract and dynamic. In other words, it’s unpredictable and ever-changing. I prefer a price point developed around the resources required to sustain and maintain the best positions possible.

A price point would have to be regularly maintained and modified daily, weekly, and monthly. It would include the cost of dedicating the proper resources to a specific client and its objectives. This is normally provided as a monthly ongoing SEO plan, payable month to month as a fixed fee.

The fee in question is best tied to the number of key phrases a client has, which obviously vary from industry to industry or site to site. In some cases, a site or industry may have the capacity for several hundred key phrases; however, its marketing budget may be limited to a few dozen key phrases. Pricing should be based on the long-term resources required per key phrase and the extent of the SEO plan.

Charging SEO services by impressions or click-throughs presents several areas of concern for the success of the client’s campaign. A major concern is fraud or irrelevancy.

Traffic auditing is a very complex technology when combined with search engine referrers and IP addresses, not to mention that the relevancy of a click-through is always under scrutiny by the client. I recall a discovery I made in the early days while auditing search traffic for the term “fat burner.” It was delivered and derived from searches for “Pamela Anderson.” This was both fraudulent and irrelevant. Additionally, only the cloaking server-side log files would know.

When I can see a position report that: a) identifies the engine or directory, b) tells me exactly where my keyword search result is located, c) tells me whether it’s located on page one, two, or three, d) gives me a live link from the engine to my destination page… I am a happy camper. When I pay a monthly fixed fee to maintain and modify these links, I am even happier.

Like I said, these are my own feelings based on years of experience. There are many other opinions, and I continue to welcome your comments.

By Paul J. Bruemmer 

With Search Engines, Money Talks

(No Ratings Yet)
Loading ... Loading ...

Stop me if you’ve been in this situation before…

You want to get your new web site listed on the most popular search engines. So you check out a few “how-to” sites on search engine placement and get right to work.

First, you comb through your page and make sure that you follow all the unwritten rules of search engine spiders meta tags, alt tags, relevant text, etc. Basically, your web page needs to look like a generic typewritten book review from high school. No pictures, no interactivity, no pizzazz.

Then, you must go to EACH search engine and post your URL. At this point, the waiting game begins. Some spiders will actually index your site within the week. Some, however, take four, six, even eight weeks to get to your URL. Ridiculous!

Even then, does that mean your job is complete? Hardly! Finally, after waiting up to two months from your initial submissions, you find your site is listed as number 1,026 on LYCOS. Who has the top listings? It looks like some kid with a sex site tricked the search engine into getting his URL on the first page for just about any search term.

What happened? What did you do wrong? Actually, probably nothing. But since most search engines don’t seem to give a hoot about your situation, or provide useful and helpful hints at what their particular spider prefers, you haven’t got a clue about what to do differently. But you try. You start the process all over again: re-tweaking, re-formatting, re-submitting, crossing your fingers, voodoo dolls, tarot cards, magic eight-balls, rock-paper-scissors, ANYTHING!

Even still, suppose you DO (through some sort of magic karma) get a respectable listing on a search engine. Every other site that is trying for the same listing now takes a lesson or two from your web page. Now, when the spider makes it’s next trip around, you get bumped out of your cherished top spot. Now you’re back to ground zero starting all over again.

To make matters worse, recent months have seen search engines increasingly turn to “indexed” formats, where an actual, real live person reviews the site to determine its relevancy. In this case, the “spider” is taken out of the equation completely.

AOL (and many others) uses the Netscape Open Directory. Excite even uses an “index” to list sites (which preempts its spidered listings). Now, at the click of a button, a human can make the final decision on whether your site is relevant or not. This is basically another crapshoot for that brand-new web site you are trying to give exposure to.

What’s a web site to do?

We at E-Troop.com have found a very successful alternative to this time-squandering, ill-conceived, ridiculous guessing game of search engine promotions.

Pay for Position Search Engines

When search engines like FindWhat.com and GoTo.com started showing up, people at first thought “Why would I want to PAY for listings when I can get my site listed for free on every other search engine? Besides, the Internet is supposed to be about FREEDOM, right? Paying for the top listings is exactly what we were trying to get away from with the World Wide Web!”

That sentiment seemed valid at the time, but quickly gave way to simple economics and business logic. We have found it much more cost effective to simply pay for our search listings. How?

Think about it.

Why pay somebody a nice hourly or salaried wage to sit there and “optimize” a site in Notepad? So you pay somebody several hundred dollars a week to do promotions, and wait months for results that may actually never come. This is certainly not efficient or cost effective. Why?

Because now you have gone for a month or more without good search engine listings. That costs you money. In addition, you are paying somebody to sit there and submit to search engines (that may not even list you anyway) like some sort of latent, ineffectual little drone. That also costs you money. All that time wasted, all that money spent, and what do you have? Nothing certainly not listings!

FindWhat.com, GoTo.com and other pay-for-position sites have easy-to-use web interfaces that allow you to bid on keywords and monitor the activity 24 hours a day. You only pay for people who “click through” to your web site from a paid listing. This means that you actually get “qualified traffic” the best kind you can get!

This means that if you have a shoe store on the web, every visitor from a pay-for-position search engine listing is brace yourself looking for shoes! You can even cap the amount you wish to spend on keywords, thus ensuring that you stay within your allotted advertising budget for a given month or year.

Speaking of traffic, what kind of traffic do these search engines get, anyway?

A lot. According to its latest press release, FindWhat.com gets almost three million searches per day! In addition to the main FindWhat.com site, its search engine listings are featured on such sites as Go2Net, Dogpile, Mamma.com and others.

Traditional search engines will probably remain an important part of Internet promotions for a few more years and simply cannot be ignored. Admittedly, we still tweak our pages and jump through the hoops to appease the whims of most major search engine spiders out there but we don’t get bent out of shape anymore when our listings defy logic. It will take a mass exodus from these ridiculous, marginally-useful spiders for them to change their tune and provide truly useful search results.

In the meantime, our success continues to be with the pay-for-performance model, and we expect it will continue this way for quite some time.

Besides, who doesn’t want qualified traffic?

Don Makoviney is the Technology Director for E-Troop.com, Inc., a privately held company in Fort Myers, Florida that specializes in streaming media solutions for businesses. In addition, he also created and maintains an Internet news site called Makovision.com, which sorts through all the PR hype and bloated news stories to provide truly useful news to Internet professionals. 

Repositioning the Doorway: Part 1

(No Ratings Yet)
Loading ... Loading ...

You know the drill. Two doors confront you. Behind door No. 1 is online marketing nirvana. Behind door No. 2 is a salivating lion that hasn’t eaten in days.

The search engine optimization (SEO) community confronts a similar dilemma. It’s at a crossroads and must choose which of two distinct paths it will follow.

So where is the SEO industry headed?

Well, there’s good news and bad news. The bad news is that the SEO community has not only opened the wrong door, it’s already going down the wrong path.

There is good news, though: It’s not too late to turn back.

Doorway Pages

In life, metaphoric doors open if you do the right thing. Here are a few things the SEO industry should consider to ensure it’s on the path to prosperity in the new year. Let’s start with doorway pages, or doorways.

A lot of confusion and many myths surround doorway pages. In truth, doorway pages are not the root of the problem in the industry, but they’re a symptom of a larger problem.

I believe that the merits of the SEO industry are being overshadowed by industry-wide inconsistencies. Doorway pages are a case in point.

The SEO industry is divided not only on whether to use doorways but also over the actual definition of what a doorway page is. If the folks in the SEO community can’t agree on something as fundamental as doorways, how can they ever convince prospective clients of the legitimacy of search engine optimization?

Put yourself in the client’s shoes. An online business decides it’s time to hire an SEO specialist. It confers with a number of seemingly credible SEO consultants. These prospects are going to be confronted with a choice that splits the optimization community right down the middle: to use or not to use doorway pages.

It’d be simple if credible SEO companies said one thing and dubious companies said another. But that’s not the case. Respected SEO companies are polarized regarding doorway pages. Some say they’re important; others advise against using them. Still others bristle at how their peers define a doorway page.

The result? Prospective clients are turned off. Doors are closing.

One thing SEO specialists agree on is that doorways are created to increase the odds of a site turning up at the top of search results. Beyond that, views become distressingly divergent.

Differing Views

On the essence of what a doorway page is, one of the industry’s most visible and respected voices, Shari Thurow, says the following: “Most doorway pages need to be cloaked because they often contain only a few lines of HTML text. Many doorway page companies create thousands of pages with only a few lines of text and submit those thousands of pages to the engines. Doorway pages definitely pollute the search engines’ databases. The main goal of doorway pages is to get a ranking without any other consideration. Doorway page people and cloakers are in it for the money…”

On the other hand, there’s FirstPlace Software, makers of the award-winning and much-heralded WebPosition Gold software. It defines a doorway as “a page on your web site that you have optimized or fine-tuned to rank well on a certain keyword. Since people end up finding your site through these pages, they act as ‘doorways’ to your site… Search engines do not have a problem with doorway pages as long as you follow their various rules.”

Jill Whalen, who comoderates the Rank Write Roundtable, lambastes the use of doorway pages altogether. In her article “The Myth of Gateway Pages,” Jill argues that pages rank highly “because they are filled with great content.” Not because of doorways. Jill goes on to critique doorways by adding, “The main thing typical gateway pages do is create clutter in the engines. If you already have a web site, and it’s more than one page, then you have your own built-in, natural gateway pages. Each and every page of your current site is a doorway to the rest of your site.”

Let’s try Paul J. Bruemmer, the CEO of Web-Ignite Corporation and a ClickZ columnist. He says the following about doorway pages: “When designed and used properly for content-relevant linking, doorway pages are no different than any other web page or subpage of a web site. A ‘doorway’ or ’subpage’ can be linked to a specific web page or location, either IP cloaked, Java redirected, meta-refreshed, or with a visible ‘click here’ link. Neither the ‘doorway’ nor the technology nor the delivery method are the problem. It’s the design and linking of irrelevant or disingenuous key phrases to any web page with the intent to mislead (bait and switch) a viewer that is the core problem.”

All very interesting. But all very different.

A Problem, and a Solution

Who do we believe? What does this disparity mean?

For one thing, it means there’s a problem. And the problem’s not only restricted to doorway pages. There are other inconsistencies. Unless these inconsistencies get resolved, that hungry lion behind door No. 1 is going to have the SEO industry for dinner.

Fortunately, there’s a way out.

In fact, if we adopt one simple principle, we’ll be able to reposition the SEO industry in a much more positive light.

It boils down to one word. And that word is “standards.” Setting standards isn’t a new idea. Nor is it without controversy. But I’ll continue this discussion next week, when I’ll tell you what Danny Sullivan, the Internet consultant and journalist who created Search Engine Watch, wrote in 1998 about standards.

Sid Herberman is the President of Optimize-This.com, a search engine optimization (SEO) firm that believes online businesses really can achieve ROI. Prior to specializing in SEO, Sid was the Online Marketing Manager of LOUDtunes.com/MyMusicFactory.com, a B2C turned B2B e-commerce solutions provider. Sid is a former ad agency copywriter and sometimes enjoys writing articles that challenge the status quo.

Another Crucial SEO Element: Web Site Credibility

(No Ratings Yet)
Loading ... Loading ...

Part of making a site a success from an SEO standpoint is making it credible and trustworthy. Being trustworthy means a site is more likely to draw high quality organic links, more likely to be mentioned in the press, and more likely to convert for consumers in your target market.

Background research on web site credibility

What are some of the overall elements that go into creating a trustworthy site? We can start by looking at past documents outside of the realm of SEO that discuss web site credibility. In 2002, Stanford did a study on web Credibility (PDF), and in January of 2006 Karen G. Schneider published Beyond Algorithms: A Librarian’s Guide to Finding web Sites You Can Trust. Let’s dig into some of the ways to help make your site as credible as we possibly can.

Design & other trust cues

Is the design unique? Does it help convey a sense of trust? Design is an easy way to get more people talking about your site. My blog design only cost $1,500, and it was cited by Danny Sullivan as a good design. If I had to try to buy those sorts of citations I probably couldn’t, and if I could, they would probably cost more than the design did. And on top of more links, the design helps sell day in and day out.

Is the site easy to use? Or does it trap information under layer after layer of ads mixed with confusing navigation? If you feature ads above your content you are telling users those are more important and better than your content is.

Critical information

Do articles have publication dates and list the names of their authors on them? Anyone looking to get cited needs to make it easy for people to cite them.

Does a site have an about section and list a physical address on it? How old is the company? Lacking these details makes an organization seem less like an organization and more like a person sitting in their underwear in a basement somewhere.

Background information

Does the URL describe the offering? Is the site hosted on the name of the business or a third party URL? Being descriptive, unique, and memorable makes it easier to sell.

Does a site offer free useful information on it, or is it similar to a thousand other web sites? Why would people chose to cite this type of business over more remarkable competitors?

Does a site freely link out to other useful sites, or is it stuck thinking it owns the visitors? It is hard to look credible on the web if you never use a hyperlink to cite other sources.

Availability & user interaction

Do people have exposure to your site and a positive experience from past exposure? Do people freely recommend your web site to friends? Are media members citing your site?

Authority is not something you take, but something that is granted. Gaining authority makes it easier to gain more authority, and eventually it becomes a self fulfilling prophecy. In many instances appearing as though you are credible is more important than actually knowing what you are talking about, especially on a network that has no respect for copyright and where just about everything is freely available.

Aaron Wall is the author of SEO Book. He also works with Clientside SEM to help large corporate clients improve their search engine rankings. The 100% Organic column appears Thursdays at  Search Engine Land. 

The Top Ten List of Programming Advice NOT to follow

(No Ratings Yet)
Loading ... Loading ...

A friend of mine is just beginning his professional programming career and he asked me recently f I had any specific programming advice for him.
I found that I couldn’t really think of anything interesting to say. There are lots and lots of programming advice on the web. Some of it good, some of it less so. But most of it is simply plain obvious or just too general to be interesting.
Then I thought well, since I feel that I do have something to say in that area, why not try and address some of the most common things people are being told with which I disagree?
So here goes,
The top ten list of programming advice not to follow:

10) “Use error codes instead of exceptions”

Okay, I just had to throw in this particular one because it keeps showing up over at Joel’s.  Joel feels strongly about this and since he is read by many, I think he is considered somewhat of an authority in the area. However, exceptions are in my opinion superior to error return codes for many reasons.
This discussion relates to programming language discussions which tend to be dead ends, so I’ll step carefully. I think the number one reason why I like exceptions is that they help me convince myself that my invariants are enforced. Joel says: “Every time you call a function that can raise an exception and don’t catch it on the spot, you create opportunities for surprise bugs caused by functions that terminated abruptly, leaving data in an inconsistent state, or other code paths that you didn’t think about.” I would argue the exact opposite: everytime you call a function that merely returns an error code, you risk such surprises, simply because you may not react to this error code. Throwing exceptions is a way to ensure that code is not executed with a broken precondition. Error codes rely on the programmer’s discipline. In C++, Java and C#, constructors are the most obvious example. If something goes wrong during the construction of an object, throwing an exception is the only way to back out, unless you want to leave behind a zombie object. Granted, throwing an exception will cause your entire program to explode if you don’t catch it but at least, you will have valuable information about where things went wrong. Zombie objects on the other hand, are like bombs with a timer set to go off in maybe a second or so, when code that relies on that particular object fails. Now, a second may not be a lot to you and me but to the computer, this is millions of instructions away from the erroneous code. Tracking that is a lot harder.

9) “Use unsigned integers for values that can only be positive”

I’m a bit nervous about this one because it is used in the STL and if there is one thing that I have learned it is that those guys thought things through. STL is an example of strikingly good design. However, in STL, size types - *::size_type are unsigned integers just like the old C size_t was. Why that is I simply don’t understand. Unsigned integer types seem nice at first because they feel safer. They have a constraint that says “this variable will never become negative” which makes perfect sense for a number of variables, such as sizes. Problem is, this constraint is enforced by wrapping rather than bounds checking (at least in C and C++ - in C# you can turn on overflow checking and as far as I know, Java doesn’t have unsigned integer types). Hence, you simply end up having no way to tell whether it has been violated or not - the bit which could be used for error indication is now used to gain size. But we’re talking one bit here, people. If you’re stretching your code so far as to require the size gained by that one bit, you are probably in the danger zone of introducing errors of more serious kinds.
Update: As it has been pointed out to me, the reason for STL to use the unsigned type is obvious: being standard, an STL container must be able to address the entire space. However, I think this makes the point even stronger. Unless you are writing something as general purpose as the STL, chances are that you won’t have to rely on this last bit.

8) “Design classes parallel to their physical counterparts”

I believe that one of the reasons why OO is so popular is that it is so easy to grasp. Inheritance and specialization really does seem to occur in real life and the concept of classes fits nicely into real life phenomena. A Ford is a car is a vehicle. Only this does not map very well to software. You’re not implementing a car. You’re probably implementing a record of a car which can carry a number of stock items from one city to another, with a certain mileage and speed. This is not a car, it is a virtual reference to a certain car. Thinking of it as a car will lead your design in the wrong direction. Even if you’re designing a model of a new prototype of car for Ford, which will be rendered in 3D with physical modelling and all, you’re still not implementing a car. People who think in such parallels are likely to find themselves confused if they run into the “a square is a rectangle” problem. In math, squares may well be subclasses of rectangles but making square inherit from rectangle is plainly wrong.
But while I’m on the topic, I want to bring in a favourite nit of mine, namely that inheritance is overrated. It used to be the case with C++, though it seems most of the deep hierarchy people have moved to Java and C#, leaving the C++ community to evolve in a direction that I think is more promising. Danny Kalev puts this rather precisely.
Update: The square/rectangle problem is commonly described using circles and ellipses. Check out these links for elaboration: http://www.parashift.com/c++-faq-lite/proper-inheritance.html#faq-21.6 and http://ootips.org/ellipse-circle.html.

7) “Make sure your team shares a common coding standard”

Not quite going to tell you not to do this, simply that I think it is much less important than people make it. Programmers can see through indentation and naming conventions, really. But alas, some don’t want to (I didn’t for a long time - I would actually spend a lot of time reformatting source code to fit my liking if I had to use it. Sigh).
Consider these two versions of the same function:

public string FormatAsHeadline(string sourceText)
{
string resultCode = “<h1>” + sourceText + “</h1>”;
HeaderCount++;
return resultCode;
}public string format_as_headline (string source_text) {
string result_code=“<h1>”+source_text+“</h1>”;
headerCount++;
return result_code;
}

Now tell me, is there one of the versions of the code above you could not immediately decipher? Of course not. The two pieces are semantically identical but they look different. But not so different that they would fool a programmer. Now, if you’re going to tell me that style is important, at least have the guts to admit that they only really are because of your aesthetical nit picking desires.

6) “Write lots of comments”

Make sure you comment your code. Otherwise, it will be impossible for anyone to understand - including yourself in a year or so. I have heard that many many times and thought that it was probably right. It makes sense after all, and I have often found use of comments when trying to find meaning in somebody elses code. Particularly, I have struggled with comment-less code and sworn that I would never make that mistake. However, this is mostly the case when the code is not self explanatory. Which it should be. If you feel the need to write comments in your code, I suggest you try to refactor instead, so comments won’t be needed. Renaming some variables or introducing a function call will probably do the trick. Context is better documented using assertions. In fact, a context that cannot be described using assertions is probably a bad sign!
There are times when comments serve a pupose though. Algorithmics can be hard to grasp and yet impossible to simplify through further abstractions. In such cases, you can explain yourself with comments. I think my colleague Lars Thorup pointed out a very good test for comments: they should contain the word “because”. This way, you know that you are answering a why rather than a what.
Oh, and my favourite specialization of the comments advice: keep a history of changes and author info etc. in the top of each file.
I’ve never actually heard anyone say that you should do this but I have seen it so many times that there must be people out there recommending it. Why on earth you would clutter the code with information that so obviously belongs in the version control system is just beyond me.

5) “Use accessors or properties rather than public fields”

We’ve all learned this. Public fields are no good. Which is true, they’re not, because they break encapsulation. However, supplying accessors gives you but a tiny bit more encapsulation. What you need to do is determine why somebody from the outside needs to manipulate the inner workings of your class. Often, you will find that there should really be a method or set of methods that do the manipulation. Otherwise, your class might be the victim of what Martin Fowler calls “feature envy”, which means that other classes seem to wish they had the fields that your class does. Maybe they should, then?
Update: Read Why getter and setter methods are evil by Allen Holub for an in-depth discussion.

4) “Use the singleton pattern for variables that you KNOW you should have only one instance of”

Global variables are evil. And just because you put a such into a class which in turn is put into a design pattern from nothing less than the GoF book, it is no less so. Variables should live in the innermost scope possible, since this makes every scope more deterministic. A method that relies only on local variables is easier to analyze than one that also relies on members of the class. Because instead of having to look around the method for places where manipulation takes place, you now have to look around the entire class. And guess what happens if you pull the variable even further out? That’s right - if global variables are used, you have to look around the entire program for manipulation.
On a more philosophical level, what is “global”? The date could be said to be a global variable, if one doesn’t consider timezones and such, but that is hardly what you mean. Neither is it what you get. “Global” in programming terms means per process. Which is sometimes fine but it is actually a rather arbitrary resolution given the distribution of many software systems. A software system can consist of many processes running on many machines - and each process may internally run many threads. In this perspective, process-level variables are really somewhat of an odd size.
I should note that this goes for mutable variables only. I think. Global, immutable variables - constants - are okay. For the simple reason that since they do not vary, determinism is maintained and, they can safely be accessed by all threads as well as multiple processes.

3) “Be tolerant with input and strict with output”

Yet another piece of advice that seems intuitive. My program or function should be able to accept almost anything but produce a very deterministic and streamlined set of results. This seems like really diplomatic behaviour, however, it easily conflicts with a principle that is of greater importance: fail fast. A function that accepts a vast variety of input formats is harder to test and harder to validate. Also, it allows for problems to propagate down the system - if a calling function supplied invalid data, this is less likely detected. This brings us back to the exceptions point. You will want to fail as soon as you realize something is wrong - and fail as effectively as possible. Not pleasant to the user, perhaps, but much easier to find and debug.
If you want to allow for various formats, for instance if you input is entered by the user, you should split your function into two: a normalization function and a processing function.

2) “Code all the corner cases immediately, cause otherwise you’ll never go back and fix things”

Why do we programmers feel guilty when not finishing a function? We’re simply keeping focus! First of all, the “you’ll never go back and fix it” argument is just silly. If you don’t then it’s obviously because it’s not necessary! But this point is part of an entirely different discussion about whether you focus on aesthetics or economics, which I will not bring up here.
Known hacks and incomplete code can be documented, preferably with a failing test. But you can write a todo-item in your taks list for all I care. Getting the broader picture together first is important because it shows you whether your solution is on the right track or not. When you are certain, focus on the details, but not before that. Which brings us to my number one piece of advice not to follow:

1) “Design first, then code”

Okay, things are going political now, but even though you will find many many people who disagree, I still feel that this is the single most valuable lesson that I have learned. Designing first and then coding simply doesn’t work. The problem is that this is so counter intuitive that you more or less have to find it out for yourself.
I think every programmer has experienced a project with no planning turning into a mess. Changing such code can only be done with hacks and patches to everyones great frustration. It is at that time that you realize that the only decent way to code is by designing things right from the start. Only now the frustration is even greater when you realize that your beautiful design isn’t prepared for exactly this new feature that you are to implement now. What to do then?
You should think before you code. Go ahead, but think for hours, not days. Don’t kid yourself into believing you can sketch an entire design document with UML diagrams and everything without making mistakes. At least, don’t think you can do so any faster than you could have simply written the code.
Now, if you’re not familiar with agile methodologies such as eXtreme Programming, the whole concept of evolving design sounds like the very problem programmers are trying to solve with all their clever ways of abstracting things out. And indeed, evolving design only works well if you follow a number of practices. Short iterations, automated testing and frequent refactoring being the most important.
I suggest you read Martin Fowler’s excellent article Is Design Dead? which explains it all a lot better that I am capable of.

Why do you Need Web Stats?

(No Ratings Yet)
Loading ... Loading ...

Once you are listed in the directories and have gained indexing by the search engines you will need a way to check your web site statistics.

A site without statistics is like running blind through a maze. You
absolutely must have access to statistics on every page of your
website. If you do not compile site statistics then you have no way of telling how successful your site, as a whole, or individual pages of your site are performing.

Why do you need statistics?

1. To track popular site entry points

Without statistics you would have no way of knowing where visitors are entering your site. Visitors will not always enter through your home page because you will be indexed for pages deeper in your site.

By knowing where visitors enter, you can devise monetization
strategies based on popular entry points. You may need an opt-in form on a popular page so visitors can join your mailing list, you may need an advertisement on that page. Whatever the case may be, it is vital that you know all of your sites most popular entry points.

2. Track where visitors are coming from

There is no way to gauge your SEO success if you don’t know where
your visitors are coming from. You wouldn’t know whether you are
gaining visitors from Google, Yahoo or MSN or any of your link
partners. You wouldn’t know who is linking to you at all. This is no way to run a serious online business. If you are serious then you need stats. Knowing where your visitors come from is called your referrers and can be easily accessed in your servers referrer logs.

3. Track the keywords that visitors use to find your site

You should also be keeping a record of the keywords that your visitors are using to find your site. These are keywords that you may not find in your favorite keyword research tool. Keep a log of all of these keywords as they may indicate new content that needs to be added to your site. These keywords can be found in your servers referrer logs.

4. Find out where visitors are navigating within your site

It is very important to know where visitors are going within the
navigation of your site. What is your most popular entry point? Where do visitors navigate within your site? What is the most popular area of your site? A good statistics program can shed light on all of this. You will rank better if the search engines see that visitors navigate to more than one page on your site. The more the better.

5. Find out how long visitors are staying on your site.

To the search engines, a good indicator of quality content is how long a visitor stays on your site. A good statistics program will tell you this vital information. If a visitor is staying on your site less than 5 seconds, then you have some work to do on your content. You have worked hard to get that visitor now ensure that you have good content to keep your visitor there as long as possible.

6. Expose weak content due to low visit time

A sure indicator of weak content is fast exit from the entry page by
your visitors. Expose and work on all of your weak points.

7. Expose exit points

By monitoring your statistics you will find your sites most popular exit points. Are these natural exit points or do they indicate a content issue? Without stats you will never know. A good statistics program will shed light on all of this.

Easy Stats Tools

There are several programs that make checking site statistics very
easy. Our favorite is Stats 20/20.

Stats 20/20 has been designed with the crucial 7 elements above. It allows you to quickly and easily see what is going on with your website at any time.

There are no complicated charts and graphs, only the information that is vital to your success as a webmaster.

Check out web stats from Stats2020.com.

Stats 20/20 is free to try and the trial is 100% functional. Plans then start at $4.95/mo.

Other Good Web Stats Tools

Statcounter.com http://www.statcounter.com

123LogAnalyzer http://www.123loganalyzer.com

OneStat.com http://www.onestat.com

SiteStats.com http://www.sitestats.com

55 Reasons to Design in XHTML-CSS

(1 votes, average: 5 out of 5)
Loading ... Loading ...

In no particular order 55 reasons for me to do “tableless” websites using valid XHTML for markup, CSS for layout and Flash sparingly, only as an ingredient. By tableless I mean avoiding tables (or a tagsoup of unnecessary divs substituting table trs and tds) for layout purposes and aiming towards as semantic markup as possible. Some of the reasons are “over HTML”, some “over Flash full monty” and some over both.

I know this topic has been discussed a plenty, I just needed to reaffirm myself :)

Here we go:

  1. You can get free links from showcase sites like zengarden, stylegala, cssimport or cssbeauty
  2. You don’t have to spend extra thought and time deciding on styling the mark up of your document (upper- or lowercase, quotes or no quotes on attributes)
  3. You don’t need to spend extra thought on which tags should be closed and which can (or should) be left open
  4. You “help” the search engines to deliver more relevant content using semantic markup
  5. You can save in bandwidth costs and visitors will see them faster by making slimmer pages
  6. It’s going to be easier for you to switch to XHTML 2.0 which will give you more semantic tools
  7. Once you’ve practised enough, coding pages becomes a whole lot simpler and faster than any table/tr/td tagsoup
  8. When the coding is faster you can spend more time on thinking about the user experience
  9. Thinking about semantics of a document helps you to make design and information architecture decisions
  10. You can quickly make a dummy site to test your sites information architecture and append a look and feel later with only minor code changes
  11. You can do the design after most of the backend is done which will help your client (or boss) to think realistically about how much work is still needed
  12. It’s possible to link directly to your content pages (compared to Flash)
  13. browser controls like text-size and back and forward buttons work (compared to Flash)
  14. Redesigns and realigns over the whole site are simpler
  15. it’s simpler to make small last minute changes to your designs
  16. Clean markup makes it easier or even unnecessary to build a CMS
  17. Clean markup makes it easier for another developer to jump on board
  18. You can make the backend almost totally independently from the frontend design, by completely different person
  19. You have plenty of ways to play with the markup trying to optimize for search engines, without affecting visible layout
  20. You have total control on print layouts of your pages
  21. Your sites are automatically accessible to all kinds of browsers
  22. Promoting web standards will help your work in the future, not having to code differently to each browser
  23. With all elemets closed you mark up look cleaner
  24. Well-formed code ensures your site works in more browsers
  25. Well-formed code would help browser coders to spend more time on useful features than rendering engines that try to understand borken code
  26. Your website will work in future browsers
  27. Your website works in mobile (and other new) devices
  28. You learn the basics of XML which has many other uses
  29. CSS files are saved in browser cache for fast retrieval and less bandwidth use
  30. Your documents are easy to convert back and forth another format using XSLT
  31. Thinking semantics makes you think more about the content
  32. Learning semantics makes you appreciate organization and write your other documents (even emails) in more organized way
  33. You can write new technologies in your CV or portfolio
  34. Modern browsers render a valid document faster
  35. You feel better about yourself when you are making sites “the right way”
  36. They are doing it: Dan Cederholm, Jeffrey Zeldman, Jason Santa Maria, Shaun Inman, Cameron Moll, Douglas Bowman, Dave Shea
  37. You will belong in a “movement”, make good contacts etc.
  38. You learn to appreciate newer browsers which makes for more competition and later for better browsers
  39. Blink tag is gone
  40. Strict coding makes you learn to see mistakes quicker
  41. You can aim to making some money writing a book about it
  42. There are more job opportunities if you know these new ways
  43. You learn better to understand how a browser works
  44. You can use hacks and techniques with cool names like “be nice to Opera”
  45. you start to care more about metadata, document and character types
  46. With more people making slimmer pages, the amount of data moving in the whole web will be smaller and all connections faster
  47. XHTML has a cooler name than HTML
  48. There are more people thinking about the advantages and disadvantages and coding tricks of XHTML which makes for a bigger learning forum
  49. You can use basically same markup template for many different websites
  50. Learning to read and write it fast makes it possible to use cheaper tools (notepad)
  51. Google knows this:
    • 4,380,000 xhtml better than html > 4,370,000 html better than xhtml
    • 206 “xhtml is better than html” > 87 “html is better than xhtml”
    • 2,130,000 xhtml sucks < 10,300,000 html sucks
  52. When all browsers start to understand the correct MIME-type (xml), you don’t have to convert all your websites from html, just to switch to correct MIME
  53. By more people using xhtml you ensure that in the future IE will need to understand the correct MIME-type
  54. Accessibility is enforced with requiring Alt attribute for images
  55. There just aren’t this many reasons to use HTML or entirely Flash instead