Jussi recently wrote a bit about competency and it got me thinking in a similar vein, though not so much about skillsets. In his article, Jussi explores some of his competencies and how they've evolved over the course of his professional career. There have been victories. There have been struggles. There have been moments of doubt as Imposter Syndrome kicks in. All of these are familiar territory for the vast majority of people who aim to take their responsibilities seriously, something many of us can relate with. For me, though, I've been less concerned with the question of What am I good at? and more focussed on the question of What drives me?, because this is the font for where learning begins.
Much of the past few years has been rough for a lot of us. Professionally speaking, however, I feel that there was almost nothing of note that I accomplished between 2019 and mid-2021. Yeah, I hammered out a lot of code, I solved a lot of complex problems, and I managed to create some interesting things … but the vast majority of it has been discarded or drastically modified by colleagues for one reason or another. The fact that people discard or modify my work is fine, as this is the nature of software development, but the political reasons behind those decisions are what truly disappoint me and lead to the conclusion that two and a half years of effort were ultimately worth zilch. Now I find myself working on projects for a marketing department and Human Resources, two of the least interesting departments in any organisation1, yet the work is almost invigorating. I actually look forward to sitting down at the keyboard every morning.
Problems exist, and they seek an answer. This is what drives me. A lot of creative people are likely engaged by the same sort of concept. When I try to solve a problem, I look at it from the perspective of someone who really doesn't like computers. Someone who, when asked about various aspects of software, will shrug their shoulders and say "Whatever. I don't care." only to later complain to someone else that digital tools are horrible substitutes for paper forms … or something thereabouts. When I approach a problem, I look at how it could be simplified from the perspective of the person forced to use the system. Is data entry kept to a minimum? Are required fields pre-populated whenever possible? Is there anything that can be removed from the main page without sacrificing something that a manager somewhere will insist is "absolutely essential"? All of these things are considered, plus a hundred more. Data is collected from a myriad of systems to reduce the amount of effort a person needs to expend. Items that can be inferred are presented in a list saying "Would you like to do X to all of these?". Every aspect of the UI is considered to ensure it works as seamlessly on a tablet as it might on a 40" projector.
This is what drives me: I embellish myself with the complexity of making something simple. When nothing more can be removed from a page, that is when I am complete. Do I always succeed? No. Do people notice that the systems I produce are generally faster and contain less friction than those they replace? Absolutely.
Software development is a two-way process. I can't possibly understand everything someone on the other end of the screen might be facing, so I keep the communication lines open. People are encouraged to get in touch to complain, to praise, and – most importantly – to recommend. When the people who are expected to use my software get in touch to say that something isn't very good and they have a suggestion on how to make it better, I pay very close attention. If what they have to say is well-reasoned, their suggestions will be part of the next update. If a person is just reaching out to complain because "reasons", then their concerns might result in updates that weren't specifically requested. Either way, it's this continual refinement of the solution that encourages further development.
My software is not great. There are scores of projects to prove this. However, with actionable feedback from the people who use the systems, they become less bad. This is what drives me: iterating to make something better.
I understand that Marketing and HR departments are important for many organisations, but the technical work required is rarely challenging. Instead, it's mostly "checkbox development", which is the worst sort of project a creative person can endure.