Monday, August 6, 2012

Chores

I was thinking about chores today.  Maybe a strange thing to spend much time thinking about, sometimes your mind wanders to weird stuff when you're not paying attention.  Anyway, I was thinking about chores; specifically household chores.  You know, stuff like:
  1. Vacuuming
  2. Doing the dishes
  3. Unpacking the groceries
  4. Taking out the trash
  5. Putting stuff away
These chores kind of fall into a few different categories:
  1. Regularly recurring (trash)
  2. Sporadically recurring (groceries, dishes)
  3. Uncompelled recurring (vacuuming, putting stuff away)
With regularly recurring you have to take out the trash on trash day, every trash day, on the same day every week.  Sporadically recurring is, well, sporadic.  Some nights there aren't any dishes to do.  But when there are dishes to do, those dishes have to be cleaned.

But uncompelled recurring is different.  There's no fixed external requirement that forces you to vacuum the floors, or clean all the stuff off the coffee table.  You could do these things on a regular schedule, but that would simply be your option, it's not an innate requirement.  And unlike the sporadically recurring chores, the line at which the chore must be done (the dishes are dirty) is not as clear (the floor is dirty?).  How dirty does the floor have to be before I *have to* vacuum it?  How much stuff must be laying on the coffee table before I clear it off?

I'd like to illustrate another interesting thing about the uncompelled recurring category with a story.  When I was growing up, my dad used to harp on my brother and I about putting stuff away after we'd used it, especially tools.  This was one of those classic dad things, he NEVER put his tools away, but he'd be on our case to clean up our stuff.  One day we'd just finished some project around the house, and he was going into the whole "lets get this cleaned up" routine, but then he did something different than usual and explained why he was on our case about it.  He said was that he personally had the bad habit of leaving stuff out, which not only meant stuff was cluttered but also meant he could never find anything when he needed it, and he hoped that he could instill in us a better habit, which he wished he had himself, of keeping everything it's right place, so we wouldn't have the same trouble. And to this day, I'm pretty fastidious about putting stuff back where it belongs, especially tools.

I take a couple of things away from that.  One is, explaining your motivation can be a more persuasive and effective method than just telling people to do something.  But the one that's relevant to this discussion is that with uncompelled recurring chores, you don't have to wait for the chore to pile up and do it all at once, you can proactively do a little bit of the chore a lot.

Can you believe I just wrote a whole blog post about chores?  Ridiculous!  But my point is really simple, keeping code clean is a lot like keeping a house clean.  It's a chore, and different parts of it may fall into the same categories.  But I think it's clear that most code related chores are of the uncompelled recurring category.  That means there is no clear event at which the chore must be done (like trash day).  And there is no obvious state which forces your hand (like dirty dishes).  Which means it's all discipline.  But also means you can do a little bit all the time and stay fairly well on top of it.

To be honest, I think this a better metaphor than "technical debt."  Which is really too bad, because I hate doing chores.

2 comments:

  1. I like that you DO all those chores. Sarah is a lucky lady!

    ReplyDelete
    Replies
    1. Oh I'm sorry, did I imply that I actually *do* the chores?? My bad. ;)

      Delete