In today's irregularly scheduled pontification, I'm going to be addressing a subject that I have been personally struggling with for the majority of my career. When it comes to expectations in software development, I have recently realized that holding oneself to insane standards is not only ill-advised but potentially career ending.
If you are a regular reader (which is impossible as I'm never going to be a regular poster) then you have likely already figured out that I am a software developer on the verge of burnout. I've been tip toeing along the edge of that chasm for the last five or six years now. In response I have been exploring a variety of possible solutions to the problem. For the most part these solutions have proven to be nothing more than temporary band-aids. Given enough time I always end up longingly gazing into that chasm of ill-repute where ex-software developers congregate.
On the flip side, if you are a regular reader (insert repetitious and borderline idiotic joke about my posting schedule here) then you know that I genuinely love solving problems with technology. There are a number of posts on this very site alone detailing various changes and improvements that I've made to the tech load out in my own life in an effort to address issues that I've identified as being worthy of my attention. When I talk and write about subjects like "Small Server" I almost get giddy at times. These are ideas that have captured my heart and mind while driving my inherent belief that technology can still be used to make the world a better place.
Yet my professional experience is very different. That's not to say that I have failed when it comes to completing the tasks that I've been assigned. In terms of that particular metric I've excelled consistently for at least a decade now. I am a productive software developer who is able to regularly deliver on requests made by customers. The rub here is that this is how the people who employ me have been largely measuring my success. Whereas these things are only a small part of how I have personally been measuring my own success.
If you take a long hard look at my resume, you'll see that I don't stay at places very long. That's because it generally takes about a year or two before I realize that I'm not going to be successful using my own measuring system which then inspires me to seek greener pastures. That's not to say that my job changes have resulted in a worse situation for myself though. In fact I'd say regularly changing jobs has allowed me to experience a wider variety of work environments and situations and given me a much better feel for what kinds of situations are more conducive towards my productivity.
So what about my standards is different? What makes this is so insidious is that on the surface I value a lot of the same things that my employers do. For instance, we both tend to value the following traits which I exhibit as an software developer:
I consistently deliver results
My output is reasonably high quality (though not perfect)
I am willing to attack larger and more over-arching issues
I am not afraid to push back against the status quo
It wasn't always this way. It took me a few years to get there. I remember when I was fired from my very first software dev job (which I don't bother listing on my resume in case you are wondering) after two weeks. This was largely because I couldn't make a relatively simple modification to a simple Solomon ERP screen within the span of a week. At my first software dev job that lasted longer than two weeks, I had horrible quality control issues and this was particularly bad because I was writing AR and AP data conversions for hospital systems. Nevertheless over the last two decades I have worked hard to hone these traits and I have been rewarded for it.
Yet I still find myself dissatisfied and staring into the chasm. Why is that? Well I recently realized that at the heart of the situation is my love for projects like "Small Server". One of the reasons I love that project so much, despite the fact it required virtually no code to be written outside of a few simple shell scripts, is because I was able to radically reshape the way IT works within the confines of my own little world virtually overnight.
I picked a path or if you would, "named reality" and then set forth on making it happen. When everything was said and done not only was the project a success, but the way in which I did things have been radically altered as a side effect of these changes. I was able to take my technical skills and apply them in a way that actually made a real difference. Not only is every tech related thing in my house now more efficient and using less power, but I can rest a bit easier knowing that I did my part to reduce my overall environmental impact on the world.
At work I don't get opportunities to experience satisfaction in this way. Ever. I believe this is the root cause of so much of the angst and annoyance that I have professionally grappled with over the last two decades. Ultimately while the standards that I have been holding myself to are realistic for personal projects, they are not realistic when it comes to professional ones. In a professional environment, one cannot just unilaterally make sweeping changes unless one is in charge of things.
The reality is that when it comes to work, customers and managers tend to bend over backwards to preserve the status quo, even if it is detrimental to their productivity. Human beings are reluctant to change and work flows involving technical tools are no exception. These target audiences tend to prefer incremental over revolutionary change. To be frank, more often than not I generally agree with them. But during my career in times when the opportunity to revolutionize the way something is being done has arisen, every single one of my employers has failed to rise to the occasion.
So what's the solution? Well I'm not really sure. Though I have decided to try something out which may or may not make a difference. I'd like to share it with you. Instead of aspiring to change the world and move mountains professionally I've decided to adopt a much different measure of success. Basically at the end of each week I'm going to ask myself this question:
Did my work make anyone's life better or easier this week?
When the answer to that question is yes, then I have decided to commit myself to being content with that. If one does not need to move mountains to landscape, why torture myself by making moving mountains my goal? The only sane answer is that life is too short to keep doing that to myself and it's long past time that I made a change here.
But rest assured, I'm going to keep doing what I do inside the confines of my own time and property. I wouldn't be who I am if I decided to compromise on that. Viva la revolución! At home anyway.