Wednesday, January 30, 2013

Distractions, or how I learned to shut up and love the list

I hate getting distracted.  I always amaze myself when I get "in the zone" and slam out some really great code.  Unfortunately, I'm in a college dorm (one of the most distracting places in the world) with an internet connection.  What's a poor ADD kid to do with all this information overload?

I've tried lots of things.  Post-it notes, coffee, regular sleep schedules, moving to the library, giving myself too many breaks, not giving myself enough breaks (fine line there) Writing Things Down, Pomodoro, etc, etc.

There's a zillion "productivity" websites, books, what-have-you out there each claiming that they've got "the best" way to Get Things Done.  (Spoiler: they're all wrong).  One of the awesome things about us humans is that we are all different.  There's no best way.  We've all got our own way of doing stuff, from The Four Hour Workweek to coding six days a week because we're having a blast.  Thus, take my advice with a grain of salt.  This is just what works for me.

I tend more toward six days a week.  I love building stuff.  My work usually can be divided up into two categories:

Stuff I don't want to do
Sadly, this is the majority of work I've gotta do.  While it's less of a majority every passing year, there's still a whole lot of it.  The big problem is that I'll spend most of my time inventing creative ways to avoid this kind of work.  In my mind, I've got a gigantic ball of homework, errands and todo to get done.  Creating a list of some sort (my favorite style is to put each task on a Post It, that way I can tear it up when I'm done) helps me conceptualize my workload.  It's a lot more realistic when I've got everything written down.

Stuff I want to do
Coding.  Lots and lots of coding.  Also, some learning and other coding-related activities.  While this is the "fun" stuff, it's still difficult to avoid distraction.  Good coding requires good focus which requires few distractions.  The advantage here is that I can get in "the zone" once I've started.  It's much harder to start than one may think.  The trick is to keep a todo list - it's much easier to overcome my stagnation when I have a goal.  I also semi-organize my list by the size of task.  It's great to start off with a quick, easy task to get that immediate sense of accomplishment.

Once I've started, it's easier to keep going.  The cycle of success pushes me onward to achieve more.  That is, until I hit a bug.  Bugs are evil.  Some bugs are simple and are only the result of my inability to type.  Others are fiendish little things that explode into an entire afternoon lost to misconceptions and other idiosyncrasies.  As time drags on with no new progress, it becomes harder and harder to rationalize continued work.  It'd be nice if I could just "work on something else" but these sorts of bugs usually block a large segment of the project.  We'll see if this changes as our codebase grows (don't worry, we're keeping it modular).

Stuff I want to do but gets in the way of stuff I really should be doing.
Hacker News is great.  You guys have a way of promoting absolutely fascinating articles.  I just spent half an hour watching and reading about lots of 0s and 1s blowing each other up in spectacular fashion.  There's two dozen inspiring articles that hit the front page every day all of them begging to be read.

Truth be told, I only actually needed to know about .5 of these articles, maybe more depending on what stage my startup project is at.  This is where I could use some improvement.  I've got to figure out a way to limit the amount of time I spend reading blogs.

Got any suggestions?  I'd love to hear them.

1 comment:

  1. Drop to text mode if you can.
    No, seriously.

    Everything a programmer *needs* is available in text mode, while most of the distractions are not.
    (Damn you, IRC!)