Focus Hard. In Reasonable Bursts. One Day at a Time.
calnewport.com
calnewport.com
I like this rule. I think that having a whole day off doesn't make as much sense for knowledge workers as it did for factory or farm workers. I think working an eight hour day is extremely exhausting for a programmer, unless we're really enjoying what we're doing. On the other hand, problems tend to simmer in our heads on weekends and sometimes are forgotten by the time Monday rolls around. For me, a little work each day beats trying to work a full day five days a week.
Edit: Oh, and if I didn't have to commute 45 minutes each way, 8 hours might be easier. That's a whole other issue, though.
I agree - commuting means I'm tired before I even start. (Being a night person means I'm tired when I get up for the day job in the morning too, but thats another matter).
The full day off is important to me, but probably a lot less if I didn't get drained from doing 8 hour days.
PS: forgive my bad comment structure, its Friday, long and busy week, I'm pretty drained right now.. see above..
Historically I’ve approached big projects with the nonstrategy of “let them overwhelm you in your head, then put them off till moment when the fear of not finishing exceeds the fear of starting.”
This is well put, and exactly how I handled all of college. It worked OK there because project size was generally reasonably bounded.
The "fear of starting" is pretty insidious. A project often looks hugely different on either side of "started working" line -- it can be a really quick change from "I'm not really sure how this is going to work" to "I'm in a groove, this is going great!"
I think the best advice in that case is just to think about how you eat an elefant: one bite at a time.
We were both in the lab, and she was working on finishing her assignment up for our class later in the day. I was reading Reddit and working on a side project at the time, and she asked how my assignment went. I replied that I wasn't yet finished, and she seemed horrified. I told her I had only about half an hour's worth of work yet, and I just simply didn't feel like doing it. My project was more interesting. She asked why I didn't just finish it and then I could "screw around" with the remainder of the time, because then I'd know I was done, and I couldn't really give her a better answer.
I started twenty minutes before it was due, and finished the work in ten.
Of course, there's lots of other work to do in a day that doesn't require "genius" level.
I liked this comment:
If you sit down at your specified time and are drawing a blank, get a new document/piece of paper and freewrite. Write ANYTHING, even if you just write “I have no idea what to say” over and over. Ignore spelling and grammer. Write stream of consciousness. Just get something on the page. Eventually something will click and you will start to come up with ideas that are more useful. But staring at a blank page is intimidating. You can always delete/throw out what you wrote later but you have to start somewhere.
I'm not sure there's a programming equivalent though. Playing on the REPL?
Alas, our REPLs and compilers won't. Computers are demanding creatures.
Or go reading about other programming languages.
I read Stephen King's book on writing earlier this year. There's similar advice in there as well (and this author references the fact that most writers work in a similar manner).
What I've found is that I've recently slipped into a habit of doing this same exact thing, unintentionally. Every night after dinner, I start up the laptop and shoot to get X, Y and Z done before going to sleep. (...on my programming project...)