Maybe I should title it, What do I do?

When someone asks what I do, I say “software engineer” or “programmer.” I just think of myself as a “developer” even though I’ve had titles like Senior Software Engineer or Senior Software Architect before. In my career I started out as a “Fire Control Systems Engineer” and today it’s “Senior Software Engineer”. I’ve never been big on titles. One of my dad’s standing jokes was: “Call me anything you want, just don’t call me late for dinner.”

What do I do? To be honest, what I do is solve puzzles all day. Really, that is the closest it gets to a description. In most of my career, I haven’t been hired to do things I knew how to do, but have been hired to do things I needed to figure out. What does a 21 year old college grad know about fire control radar systems? Nothing. Nothing at all. I knew a few things from EE or physics courses, but not much. I got hired because I demonstrated I could learn. My first professional Windows software job I was hired for what I knew about Windows programming, but my first task was to dabble in COM–something I literally knew nothing about. Very often, management would say, “We want the product to work ‘just like Excel.'” And then, I’d have to figure out how Excel does it, then figure out how to implement it in our software framework.

Sometimes there is documentation to help, and sometimes there is not. Sometimes I might get help from some genius on Stack Overflow, and sometimes not. Sometimes, I just have to reverse engineer and do iterations until it seems right…and even sometimes cross fingers. Sometimes a system API has been buggy and I’ve had to figure out if there was a way to work around the bug…and sometimes it has been real ugly with patching DLL import tables in a DLL. Other times it has been using an an undocumented API or structure…or reverse engineering the structure. I’ve sat and looked at memory dumps of 20 different iterations of something, all slightly different, trying to figure out the rhyme and reason and structure of the memory block. “Hmmm… that looks like the session ID..and that looks like the block size.”

It seems more like puzzling than engineering a lot of the time.

That’s the type of stuff I get to solve…if I’m lucky. In the end, what I want is a great and helpful software product that people use and buy.