Short Question, Long Answer

In my previous entry, Mike Dartt asked me "how I did it". I tried to
answer in a reply, but it was so long LJ wouldn't let me post it. So,
here's another top-level article for you all, describing how I've gotten
organized and what I've been doing.



I've read lots of books on time management. None of them really helped.
I had to reduce this to the bare minimum, because I certainly couldn't have
paid attention to anything longer than this blog entry when I was trying to
get organized. If I could have, I probably wouldn't have needed it. So
here's my schedule:




  1. 8:30: Get up
  2. grab a Red Bull from the fridge and drink it
  3. Check email before the call
  4. 9:30: time for the group call, discuss what I'm going to do today.

    The morning is a little nebulous, as I've reserved this time for meetings with co-workers and planning discussion. I also update the issue tracker to reflect what I'm really doing, writing any new to-do items down and assigning them an appropriate priority.


  5. 12:00: break for lunch even if I am in the middle of something.
  6. 1:00: "close my door". My office doesn't actually have a door, so it's a bit of an act of will to do this properly.
  7. 6:00: "leave the office".

    Again, I often can't literally leave the room where I work, because that is where pretty much all of my stuff is, but it is time to mentally shut down for the day. I start writing a description of what I've done, since this usually takes me about an hour.



Since I'm responsible for "managing the team", I thought long and hard about
what had been effective for me in the past, and I took a leap of faith. I
didn't know that this sort of simplistic "management" technique would work on
anyone else, especially because I have been historically unsuccessful with such
plans, but it was my responsibility and I had to try something. So,
the three axioms and two corollaries I used to put together this schedule for
myself and the strategy for the team are1:



The fourth point, which is entirely personal, is "keep my body chemistry from interfering with my day". I have been attempting to force myself to eat snacks on a regular basis, drink caffeine at regular intervals, so that my blood sugar doesn't drop precipitously and my ADD doesn't start acting up at around 2pm (right as I should be getting into the thick of work) as it generally does. I am of course also trying to eat right and exercise but the main point I am trying to get to is just that my body's state of activity remains relatively consistent throughout the day, so that I'm not struggling with having huge bursts of energy when I'm supposed to be asleep and then exhaustion when I'm trying to focus on work. That's far more important to me, on a practical level, than the ability to run several miles at a good speed or do 100 pushups in a row.



To be honest, most everybody on the Divmod team is better at
self-management than I am, so this has made a bigger difference for me than
for everyone else. I doubt that most of them are desperately trying to
manage their glucose intake just so they don't collapse. I think it's
helping all around though, especially the carefully maintained group to-do
list. Now when I make a request of someone, I'm sure about what I'm asking
them to stop work on, so I can avoid interrupting important things.



Some of this is probably specific to working in a self-scheduled group environment, responsible for your own tasks, on creative projects. I hope it helps you with something. I'm just about out of time on my email/blog time budget, and this is only tenuously on-topic for work, so I'll have to stop here :).





1. I sure am loving these itemized lists today.

in bed on time

I think it's been a good week for me, and by extension, for the company.

It has been a rare occurrence in my life to be working regular hours, sleeping at the appropriate time, eating some number of square meals in a day that is greater than one and getting to sleep at a reasonable hour. Normally, working happens in fits and starts for me, and I struggle painfully, waiting for inspiration to strike. As I've been hammering myself into a routine and trying hard to eliminate distractions, though, I find that my day has a certain natural rhythm.

Over the past few days, I have noticed a serious improvement emerging in my habits. When 1pm rolls around, I am already thinking about what I'm going to be coding. If I have a design problem, I start mulling it over automatically as lunch approaches. I have also started a more regular schedule for consuming caffiene, which seems to be helping me cope with A.D.D. Today, I found a sushi place with really cheap lunch specials, and of course the focus-friendly properties of raw fish are nice to have at reasonable rates.

What does this have to do for the company? Well, I feel like I'm making some serious progress on our most serious impediment to open signup right now, which is really exciting. This is an invisible barrier which has haunted me almost since my ill-fated experience with E.K. (my first software startup project, when I was 14). Never got to see an actual box to put that software in. Never got Divunal to an open beta, into the hands of actual players. Never got any game at Ninjaneering off the ground to the point where real customers were playing it. Finally, with real customers actually testing the software, I'm getting ready to cross a finish line both personally and for Divmod.

I suppose the eating and sleeping stuff sounds pretty mundane in comparison to the eve of such an achievement, but for me, they're the same thing. I don't know how to put it, if you haven't had a few hundred sleepless nights and groggy afternoons yourself. It's a welcome and long-overdue change for me, though, and I imagine there are a few readers out there hoping for the same sort of transformation; I hope it sticks.

I'm going to have to stop with this blog entry now, because it's late, and I'm tired. I'm going to sleep.

Three

I am very, very bad at estimating how long software will take to write.

When I was very young, my mother was concerned that I never laughed or smiled, and having forgotten to pre-load my positronic net with the "humor" module, she realized she would have to do some work from scratch. I am told that the original transcript went something like this.
Mom: Do you know how humor works?
Me: No.
Mom: I am going to tell you a joke, then. It is one of the first jokes that my brother used to tell.
Me: Okay.
Mom: How many balls of string does it take to get to the moon?
Now, my mother actually kept balls of yarn in various places around the house, and I had seen the moon, so this didn't strike me as very funny. I thought about how big balls of yarn were, how surprisingly long they were when unrolled, and how slowly they got smaller. Then I attempted to mentally estimate the distance to the moon, in terms of how quickly the balls unrolled, how quickly they got smaller, pictures in books of the relationship between the moon and the earth, and how far away other things I had seen were. I don't remember the rest of the conversation, but I distinctly remember the mental image that I built during this process, as it has stayed with me during the years. It looked like this:
Moon, Earth, and balls of Yarn
and so I replied, without a trace of irony,
Me: Three.
My mother thought this was hilarious, so my initial understanding of humor was that I should run up to everyone I met and say: "howmanyballsofstringdoesittaketogettothemoon?doyougiveupyet?THREE!HAHAHAHAHAHAHAHAHAHA". Reading doc/fun/Twisted.Quotes in the Twisted distribution can show you how little it's progressed since then.

When I estimate programming tasks, I still have a similar sensation to when I was 2 years old and building that little picture in my head. Then, I grossly underestimated because I didn't have a mapping between astronomical distances and inches, because I didn't know what units distance was measured in among the stars. Now, I grossly understimate because I don't know what unit you can measure programming effort in. It's not "hours" because I can't reason about that - one does not do a uniform amount of work within one hour on a program, especially since several hours are spent thinking. I know various ways to measure finished programs, and I know of various ways to measure programs by specifying them to death - however, neither of these gives me the accurate estimate when I want it, which is to say, before work has begun and a great deal of resources have been invested. It is harder, and takes longer, in my experience, to accurately estimate (in hours) how long a program will take than to just write it in the first place; and even if you do go through that process, you can't estimate how long the esimation will take (and the estimation process cheats, by stealing work from the programming process so that it is shorter.)

All this thinking doesn't do anything to make the need for good estimates go away though. So how do you tell how big, or how hard a program is, without first writing the program several times and getting lots of different people to do it? When you know how hard it is, what units do you express it in?

blogging in the park

As many of you know, I just returned from vacation. My first day back was kind of crappy, so let's just pretend that didn't happen. The second was pretty good though! I've had relatively few frustrations with technology, and I've managed to start getting back in the groove work-wise.

My summer vacation was relaxing, but it wasn't fun. I didn't really go anywhere, but I caught up on sleep (LOTS of sleep) and I didn't stress out about anything. I didn't even work on my hobby projects very much, and I didn't do more than talk about Imagination for an hour or so. I did go to new york to see my father, my family and some friends, but I got back here in time to avoid the RNC. That was what I did with my summer vacation and I ate hibachi and tenth was there too. The end.

Evil Epilogue:

Today I finally got software suspend to work on my linux laptop. So, of course, what does any good hacker do when he has done something like this? take it for a test drive!

What better way to test-drive this than to go warwalking through my neighborhood. I was lucky enough to find not just an open access point - not just a high-bandwidth connection - but a linksys device with the password still set to the default and adminnable through wifi! The connection appeared to be idle, so I helped myself to a heaping helping of bittorrent ports and began to make merry in the park at midnight.

So now I'm writing some specs, playing some nethack, blogging, downloading, and generally having a good time in the park at midnight. Some late-night joggers have given me some really weird looks.

The best part of this is that I am actually looking at the message "Hello glyph, the elven Wizard, welcome back to NetHack! You are lucky! Full moon tonight." while there is actually a visible full moon directly in front of me.

And I'm thinking... wouldn't it be cool if I had a backpack full of solar-powered computers with wifi cards and repeaters that I could just sprinkle around the country... building a redundant, distributed filesharing overlay network on accidental connections... are there any such devices available for the average consumer-level evil genius?

I can't believe I'm doing this.

Blame my sister.

Enzyme
You are an enzyme. You are powerful, dark,
variable, and can change many things at your
whim...even when they're not supposed to be
changed. Bad you. You can be dangerous or
wonderful; it's your choice.

Which Biological Molecule Are You?
brought to you by Quizilla