Figuring out how my temporary sleep schedule interacts with programming, writing, and drawing

I was thinking about how I can use these snippets of time to improve in programming, writing, and drawing. I realized that although I can easily imagine how other people can write or draw using fragmented time (writers scribbling in notebooks on top of washing machines, artists doodling on the subway), programming seems a lot less tractable. It doesn’t feel like you can break it up and squeeze it into different parts of your day as much.

It is generally accepted that context switching is evil when it comes to programming. So I’ve been carrying around this idea that Real Programmers are people who can pull all-nighters hacking on tough problems, holding elaborate structures in their heads. Your standard hero programmer stereotype, with the pinnacle being someone either building complex, cool stuff, possibly maintaining large and useful open source software.

Hence this little mental disconnect. I’m pretty certain I can get there someday if I really want to, but probably not if I extrapolate from current circumstances. Even maintaining a tiny piece of software sounds like more commitment than I want at the moment. (Heck, I might go a few weeks without responding to e-mail.)

Fortunately, I spent my first few working years in a corporate environment, where mentors showed me that it’s totally possible to be an Awesome Geek while still working a roughly 9-to-5 job, having families and hobbies, and getting plenty of sleep. Thank goodness. So I have this alternate model in my head, not of a Hero Programmer, but rather of solid contributors who keep making gradual progress, help teams of people become more productive, and who enjoy solving interesting challenges and expanding their skills.

So let’s say that I want to play with my assumption that programming is the sort of thing that’s hard to squeeze into the nooks and crannies of one’s day, at least not the way writing and drawing can. I know that I can go through technical documentation and design resources even if my mind isn’t completely awake, and I can still pick up useful things.

What is it about writing and drawing that make them suitable even in small doses, and how can I tweak programming? Writers can think about stuff during other activities. I can reflect on ideas while walking or cooking, for example. When I program, I still need more of that back-and-forth with a computer and an Internet connection, but maybe I’ll need less of that as I develop more experience. I can set pen to paper during any spare moment, sketching a quick line and seeing where it takes me from there. I might not be able to do that with implementation, but I can use that same playfulness to explore design. Behavior-driven development makes it easier to break projects down into tiny, clear steps, and have a way of verifying progress (without too much backsliding!). Getting deeper into frameworks and tools will help me do more with less effort when I do sit down at a computer.

Okay. I can do this. Worst-case scenario, I just move slowly until I get past this particular phase. I’ve seen role models who’ve pulled that off well, so that’s totally cool. Best-case scenario, I figure out how to hack around some of my current cognitive limitations, and maybe that might help other people who find themselves in the same situation too.

This could work.

  • Part of the key is to set programming work down in such a way that it’s obvious where to start back up and making note of what that next step will be. That lets you hit the ground running the next time you work on it.

    • jwynia: Yeah, that kind of preparation definitely helps me pick things up quickly. =) I’m getting used to writing with outlines and ideas, and programming with outlines, wireframes, and tests. Good stuff for managing small brains!

  • Richard Styrman

    I dont know if you realise this Sacha; But before, like 10 years ago; there was a very negative atmosphere around asking for help, specielly around linux/programming on irc. They pretty much told you to RTFM; I dont think you should super hero; those who can pull all nighters. It just means they have less intrusive things in their head/life for them to pull upon their focus to do it. Nearby subject talk that might be intresting:

  • J. Briggs

    “solid contributors who keep making gradual progress” accomplish exactly that – they make gradual progress.

    The reason programmers need to do all-nighters is for when they’re solving big problems. Examples are writing a server (or adding their first contribution to a server), designing a new API or making a big change to one, etc.

    Of course there’s a cost to that method of working, so reserve it for when it’s worthwhile or there’s no other choice.

    • I suspect I’m much more of an incrementalist than someone who makes big, radical changes. =) I putter. This probably has consequences in terms of local maxima etc., but I think I can offset that a little by giving myself room to explore for the heck of things. I’m just not an all-nighter, long-span-of-concentration sort of person at the moment. I remember doing things like that before, in university, so it’s not impossible for me, but it doesn’t seem like the right fit at this time.

      Fortunately, lots of other people are exploring that particular model of success, so I can learn from that without having to dig into it myself. =) I can go off and focus on things that might be a better fit for me, like some of the other paths sketched out above. Maybe I don’t have to solve a Big Problem; maybe making lots of small tweaks is enough! =)