I have been frustrated at the several website launches (heavy on the
technology - not just static stuff) that my company has performed. I think
this is primarily because customers don't understand technology or project
management. So here are several launch tips and why I think they are
important:

1) Do not wait until a site is perfect to launch.

This is important, because a site will never be perfect. But what's great is
that a website can always be changed. If you wait until a site is perfect to
launch it, then it will be forever delayed, the developers will be frustrated, the
customer will be frustrated (why haven't you launched my site? Because
you're being unreasonably picky!).

People often get the false impression that writing code is like writing a book.
The editorial process should be fairly predictable and at the end everything
should work. But this is a false analogy. If you were to liken a software
launch to a book launch, and demanded the same standard of perfection, you
have to remember that if your code is off just a little then the site doesn't
work. That's like saying that a book must not only not contain any
typographical errors, but that it must also not contain any factual or logical
errors. In that case, you would need to vet each book by several
practitioners, philosophers, and the like, and not release the book until the
full content of the book was agreed by all that it is logically sound. As you
can see, this could take a while, and there is no predictable way to tell when
this process will be finished.

So what you _have_ to do, to finish at all, is decide that at a certain point
below perfection, it is reasonable to launch. Most importantly, your real bugs
will be found by your customers after you launch anyway. So trying to clean
up something that you're going to have to rewrite later is just a waste of time.

Not only that - as you spend your time "perfecting", the client will spend their
time thinking -- and coming up with new ways that the site is lacking,
thereby postponing the launch almost indefinitely.

So the long and short of it is, LAUNCH. Even if small problems remain,
launching is the only way to move forward. Without a strong ethic of
launching, the site will sit forever in purgatory.

2) Launch only when people will be around to watch it break. That means
that you should NEVER launch on Friday, and NEVER launch in the evening.

The problem is that #1 and #2 are in constant conflict. Clients usually have to
be "ready" to launch. They don't get "ready" to launch until the evening. I
have countless experiences with this. If they are "ready" to launch in the
evening and you wait a day, then in the morning they will no longer be
"ready" to launch. What's worst is if they are ready to launch thursday
evening, because then, if you delay it, you wind up on friday, which you
should NEVER EVER launch on. Then, if you delay until Monday, not only
have you lost pretty much a whole week, but the client has 4 DAYS to think
about new ways in which they don't like the website! This will take at least
until Thursday to implement, at which point you are in the same boat.

How to Solve It?

I'm really not sure. The only thing I can think of is to stress to the client (a)
the importance of launching, (b) that just because you launch doesn't mean
that it can't change or be fixed, and (c) that sometimes you just need to get
something out the door for real-world feedback, and that endless speculation
does not help to improve a site, it only delays its launch. Also, I should add
(d) that you should launch early in the day because you the client should
expect some initial issues. I've never done a large-scale web
technology launch that didn't need some first-day post-launch fixes.

Having said that, I must admit that I will launch a site in the evening and on a
friday, for the simple fact that if I don't I know that the project will never
really end. A project _can_ be successful if it has starting bumps. A project
can _never_ be successful if it is never launched.