My three favorite things about software development
It’s been over 10 years now that I’ve been building software, so I thought it was time to write a post commemorating that in some way.
I’m not going to put these in an ordered list because I don’t think that’s important for what I want to get across…it’s not about stack rank here. It’s about the big things I take away from coding that bring me joy and amazement and delight. Also, these are entirely mine…they are based on my internal circuitry…and they may not apply to you. If they do, great. If they don’t, I’m always happy to read about yours. And also, maybe they can spark some interest in folks that haven’t taken the dive yet.
They are:
- working hard problems (usually bugs) while I sleep
- being able to harness the power of computers to GET SHIT DONE
- without a better phrase at hand: connecting all the things
Now some more details on what I mean by each of these.
Solving problems in my sleep
Though this may not be specific or exclusive to just software development (I’ve had work dreams before), there’s a different mental state accessed with coding. It’s part about ending up with a specific answer - other work-sleep thoughts are more about stress and dealing with humans (good, bad, or indifferent). Coding sleep thoughts usually occur only when I’m really stuck. It ends up taking the total relaxation and total serene concentration and BAM! The solution invariably presents itself.
I just had this happen the other day. There were a series of bugs I had with some software I’m building. I’m using an API to restore data from backups. It’s mostly working, though an issue here and there would crop up where the restored data would be missing some functionality after being restored. It would mostly work. I developed a hunch over some time that my restore code was too precise and there were database ID collisions on the receiving API/db. You’d like to think they would have good error handling and return me a note about why and don’t let it fail silently, but they don’t. It occured in my sleep…that appending a UUID
to the values on restore would at least tell me if I was on the right track. It’s a brute force way to know…and it came from a
synthesizer of all places. The
Synthstrom Deluge has a great save feature…if you tap save once, you can name the file, but if you just tap save again, you get SONG1
. Now each double tap thereafter, on the same song, just adds a _1
to SONG1
becoming SONG1_1
, then SONG1_2
. It’s so simple and elegant, because 1) I don’t have to think of a name (
naming things is hard) and 2) I don’t have to break my flow to do it.
And not surprisingly, I got up the next morning, tried it…and it worked! Solved my problem.
Harnessing the power of computers to GSD
Like harnessing electrons to build analog synth sounds or before that harnessing water to power your mill. Leveage is the way we’ve been getting things done for centuries. Use one thing to help you go beyond what your mere hands can do on their own. I can’t control electrons directly with my hands (though if I had a superpower, that might be it), but I can learn how to make circuits to do that stuff for me.
Someone has a problem that doesn’t require something physical (I’m not yet doing robotics), I can help them solve that problem.
If I had a mantra or a thing I geek out about, it’s shipping things. Get it live. Get it out there. Then figure out what’s next. And then maybe you’ll have some time, freedom, and financials to geek out about this monitor, that keyboard, or soemthing else (cough, synthesizers).
Connecting things
It’s in my nature to understand flows. I’ve always been talented in that.
Water, audio signals, electrons, bits…and connection points, cables, validation, signal, noise, etc…
Connecting software - front end code to a database through an API…or using a script to automate tests, get a green passing signal, and then trigger a deployment to production…those concepts are natural to me. Moreso than say sorting algorithms…I grok flow and I love working with things that way.