One of the hardest habits for me to break has been staying up late writing code. It’s like it’s some sort of addiction because you feel like you’re actually getting things done. The trouble for me is the many side effects that result from staying up late for selfish reasons. A destroyed sleep schedule interferes with the next day’s productivity, it sets you up to be easily irritable and ornery for seemingly no reason, and it’s more difficult to be satisfied with a solid day’s work because you compare it to the night before or the potential of tonight.
On the other hand you have something PG calls the maker’s schedule – a schedule for those of us who produce stuff. Working on large abstract systems involves fitting the whole thing into your mind – somebody once likened this to constructing a house out of expensive crystal glassand as soon as someone distracts you, it all comes barreling down and shatters into a thousand pieces.
This is why programmers are so annoyed when you distract them.
Unfortunately as a member of the living world, interruptions are inevitable. If you’re working on any sort of team they’re guaranteed. I’ve come to the realization that while interruptions are terrible for my productivity in any capacity, I need to train myself to better handle them. If it means asking someone for a few minutes to wrap up a thought, so be it, even if the call for attention itself sent my time in The Zone into outer space. Getting discouraged at that does nothing but harm. Working on a team means being a part of a team and sometimes that means keeping in mind that you’ll soon be the one asking for someone else’s attention.
There are a number of other points that speak straight to my desire to work at night, but as a husband and a father I need to resist that and keep in mind my bigger goal of doing those jobs exponentially better than my day job.