Unthinkability

Scott Fletcher – Saying unthinkable and sundry things.

Aug
20
2008

Brain is exhausted. Low-level bits are lame.

Posted under Blog Posts, Software Design

My brain is tired. Someone [that I respect very much] calls it “skull sweat.” It is what happens when you solve mental puzzles that have a gazzillion moving parts, or when you perform mental tasks of a type that are not your particular cup of tea.

Well… I’m at the tail end of writing a complex communication system with hundreds of interactions and lots of ASCII serialization and messaging. This is a mandatory rewrite to support new requirements. This project is unique for me, Mr. New Employee, in that it is a complete refactoring of an existing [network media payload routing and management] system, ‘lifting’ methods from several single classes and assemblies into a new polymorphic class design and rewiring interactions across application boundaries. As with other “big dig” projects, I am just now getting to the point where I can get it to compile, fire up the debugger, and do the runtime smoke tests. It’s going well enough, though I was hoping for one of those “and then it all just worked” moments. Still, the parts are meshing together nicely.

Natalie Dee's great pictureWhy am I so exhausted? I am terrible at low-level “bit twiddling.” Makes my brain soggy.

Am I alone? Do you enjoy reading protocol specs, debugging unformatted ASCII streams, or reviewing serialized command parameters? I don’t enjoy it. It makes my brain fog over, putting my brain in a mode that is very anti-social, stripping me of my ability to communicate on a human level for a few hours after I get home. I’m not a happy stupid dinosaur like Natalie Dee’s cartoon; I’m grumpy and unpleasant until I recover.

This low-level stuff is not normally a problem. Low-level protocols are meant to be abstracted, wrapped up into handy utilities and sealed in well-tested assemblies never to be touched again for 20 years. That is all fine and good until you need to extend a home-grown messaging protocol to support a new message payload and other features that your new design requires… like I had to do. All while dealing with a system that is not yet fully baked. Ack. Literally. I’ll be glad when I can certify this messaging assembly and seal it up. Boy, howdy.

I’m enjoying the challenge. I’ve been through this kind of project several times before, and this stage is typically very manic. I’m enjoying it in that very special way that makes you want to shout out in triumph one minute, and then gouge out your eyeballs with a pencil the next minute. It comes with the territory when you do bar napkin refactoring in a system that you just met a few days ago.

I know what you’re thinking. Unit testing. There are a few spots in this project that would benefit greatly from unit tests, especially in the messaging subsystems. To be honest, I didn’t understand the system well enough when I started, so I could not write meaningful tests. That excuse is good enough for me.

What!?” you say.
How could you dream of developing a system that you didn’t fully understand?” you ask.

You shouldn’t start writing a system without a full specification!” you blather.

Don’t be such a noob.

This project has been a bit like putting together a jigsaw puzzle portrait of Abe Lincoln without looking at the picture on the box; I had all of the pieces, I knew what it should look like when it was done, I found all of the corner and edge pieces, and I started by arranging the remaining pieces by color. If I got stuck, I could turn to one of my coworkers and ask where a piece might go. Though when I did that, I usually got a general answer about how the “blue” pieces were probably ‘sky’ pieces. To be fair, I am a professional and am being paid to work through this brown-field development on my own. It’s not quite rocket science.

I am on the home stretch, working through the final wire-up work and debugging the missing/broken pieces that prevent the system from completing its work. It is all coming together, giving me that “IT FINALLY LOOKS LIKE ABE LINCOLN!” feeling. Woot. And when I am done I will own this part of the system. I will know its nooks and crannies, its hopes and fears, and its deep dark secrets. I will be able to extend it and add features in a fraction of the time it took to rewrite it. That motivates me. *sigh* I live such a life to be envied.

(Natalie Dee’s great picture and some of her other drawings made my day today. Thank you.)

Add A Comment