Every programming job I've had has required me to track my hours, entering them into a system once a week. I've never been good at it. For the past few years, I've been running Timesnapper* on all my machines, and on the night before hours were checked I'd slog through the records and painstakingly enter the hours in.
The alternative, of course, is to enter the time as I work, but I've never been able to stick to that. I get busy, or in the zone, and I forget about it.
What do you recommend?
*Timesnapper has some timesheet integration, but I haven't been able to get it to work with my development work, since some of my time spent browsing the web is development related, while some of it isn't.