I have a few a stories I’ve told over the years to explain my origins in software engineering. One of the more humorous ones is that I wrote down on a piece of paper “Doctor, Lawyer, Software Engineer”, and chose the one that didn’t legally require a college degree. While that story is actually true, the reason Software Engineer ended up on the paper to begin with was that I had an instant, lasting attraction to the notion of being able to model real world interactions for the cost of electricity. Potentially even more than that was the allure of creating something out of nothing.
The first time I wrote a BASIC program, it occurred to me that I had just created something from nothing. Where previously there was no logic and no design, I had been able to manifest my ideas through code. All I needed was a low-fidelity text editor (and GW-Basic), and I could create hundreds of different little procedures and subroutines to play tic-tac-toe, or keep track of to-do lists — my imagination was my limit. This was huge. That feeling of inspiration and encouragement, knowing I was in a realm of pure creativity, is something I’ve never forgotten, and still attracts me to my craft today. Only now, it’s being influenced by different programming paradigms and techniques.
Rediscovering and remembering why you love your craft is something software engineers should do as often as possible, if for no other reason than that our jobs can become excruciatingly mundane if we allow them. Learn a functional language, or design a DSL for customizing your dream car. Work to recapture what attracted you to your craft to begin with, so the next time you think “if I have to refactor one more service…”, you’ll consider how amazing it was to be able to create a digital service that aggregates millions of users based on their first name to begin with. In fact, you might even consider how amazing it is to be able to deal with a million of anything to begin with.