Hacker News new | ask | show | jobs
by ant5 5819 days ago
As addicted to programming as I am, I can't sustain the same levels of intelligent programming as I can the consumption of media, be it playing a game or reading a book.

When programming, I can stay on-task for 12 consecutive hours a day with enough caffeine, but after the first ~5 hours, I'm doing it by rote, and hopefully I've made good design decisions earlier in the day. After around 8 hours of it, I'm just a zombie. I'll be producing poorly factored and poorly tested code, I won't be considering the corner cases, and I there will be a lot more bugs. If I do this for enough days in a row, I'll start the day a zombie.

When playing Diablo II, I can easily spend 6 hours playing it in a row without noticing that my skin has gone pasty-white and I've ordered my second pizza ;) I may not be as intelligent towards the end, but the game is nowhere near as demanding as programming and it really doesn't matter.

2 comments

At work I structure my days by doing the difficult coding problems at the start of the day and then doing progressively easier things or stuff I know by rote.

Ideally I'd be updating documentation, running some tests, organizing a project at the end of the day. Although it rarely goes like this ofcourse.

If I run into a nasty problem when I'm way past my daily mental peak and there is time I'll just wait for the next morning. Experience has shown that nine times out of ten I see the solution the next morning so I won't be wasting time on it.

Same.

I think the key here is persistence. Recently, it took me over four days to solve a certain 3D animation problem. It was frustrating when it wasn't working, but because I threw all of my spare time at it, it eventually got done, which is very satisfying.

I don't know how to want to be persistent. I just am. Getting started each day is usually the hardest part. If I give in to the temptation of playing a game, it's almost a guarantee that I won't be getting anything done for a few hours, if at all.

It helps a lot to be very interested in the problem domain. If you're avoiding a task, try re-framing it to make it fun. For example (I'll use a gamedev example since that's my field), instead of writing a way to play a 3D animation, write a way to blend between a bunch of different animations simultaneously, then play the result. Sure, it's more challenging, but it's also more fun. That kind of "re-framing" is very valuable.