http://www.perlmonks.org?node_id=610928

I've been putting various nuggets of software live recently. Either directly or handing over to the client. In all cases I've kept to my personal rules about launching or handing over major work and I wondered what rules of thumb people followed here.

This isn't about programming practise per se. At this stage you've built and (hopefully) tested the software.

So, I generally do this:

Never put it live on a Monday or a Friday
There is more to this than the Monday drag or the excitement of the impending weekend
Where I work changes to systems occur over the weekend, should they affect your work you'll need Monday to check. Also, people may be ill and you'll need that day to recommunicate to the intended management/audience.
No one likes working late on a Friday. Ideal world aside, if something goes wrong with your deployment you need help around to help diagnose and fix it. You have an extra working day where most people will be in the office.
Avoid going live at a specific time
Picking a time of day is fraught with danger. If you can, make the system 'pre-live' where only the most minor of changes are required at this point in time. Like switching internal ip addresses (etc). DNS changes always take time to propagate so a fixed time launch for a site would need a launch page (hence the minor change rule).
Don't put things live first thing in the morning
Well for a start you don't know if anyone is going to be late for work. Traffic (etc).
If you can, have the existing system still in place
Sometimes, the best contingency is to be able to fall back to the existing system while you fix any problems. Back out any minor changes and you are back where you started. Diagnose, fix and try again.

So for me, currently, Tuesday to Thursdays from 11:00 to 4:00 are the ideal times to put things live. I am lucky, though, that I do have a major say in how these things proceed.