Developer Happiness: The Right Tools for the Job
This is Part I in a series exploring developer happiness.
The equation for professional developer happiness is a difficult thing to pin down. It’s arguably not even the same for everyone. But it is important, really important. Your happiness at your job affects every part of your life, not just the time at and the people around you at your work. It affects your mental health, it affects your relationships with your family and friends, and it affects how much you can actually enjoy time away from work.
I recently took sabbatical from work for a couple reasons, notably to spend some time with my wife and kids in our new city. I’m back in school and wanted to get ahead on this semester and to avoid being at work in a house in which renovations were a constant annoyance. Those were the reasons I told everyone, and they were valid and all of those things happened.
But underneath all of that, my motivation at work was severely struggling. This was not just because I knew I had a long vacation coming up; it started a good bit before I even decided to schedule the time off. It’s hard to say exactly how it happened, but I noticed exactly what it was about six weeks before vacation when I was given a task that should not really have been that difficult and simply could not find a starting place. I did what you are supposed to: I talked to other people about the task, asked for advice, even tried a few things with little success and was quite simply unable to convince myself to keep working through it. This was not the only thing I had to do at the time, and I still made progress on my other projects, but this was the only challenging thing on my plate, the only thing I had never done before. I just simply could not make myself do it. I talked to my boss and threw in the towel on this one. He was very receptive to getting someone else to take care of it, and that’s one of the things I really enjoy about working at Stack Overflow.
After about three days of searching Google relentlessly, asking questions on the internet and calling friends who are more familiar with the tools, I was able to crap up enough of something to show my friend. The light in his face even at looking at this steamer reminded me how much I enjoy building things for people, but I was about ready to throw in the towel on this one as well in favor of my mental health. That evening I went to a local meetup, and in the chat afterward I met a college student who mentioned they had done some WordPress development in the past. When I told him what I was trying to do he said, “Ohh yeah I’ve built tons of those, even built this thing that will basically build the plugin for you if you know what data you want to collect.” He was gracious enough to give me a quick demo, and this thing was a steamer as well. I imagine he was slightly embarrassed at the number of errors generated before he managed to get through it, but when he finally turned around and looked at my face it was lit up like my friend had looked at me. It didn’t take me eight hours to finish this entire thing once I was off the ground after using this tool.
Your developer happiness is unquestionably directly proportional to the ease of the tools you have to accomplish your task. This revelation was profound for me. I have always believed in the value I was creating for other people through my work; that’s exactly why I got so excited when my friend smiled at this thing I was building for him. Similarly, it is basically my entire job at Stack Overflow to build these kinds of small incremental tools to improve our own products, workflows, and data investigations. It was profound for me because it’s the first time in a very long time that I can remember feeling how much easier things can be once you have the right simple tool.
Once returning to work a couple weeks ago, the first task I was assigned was very similar to the one I had to bail on before vacation. This time around, I first fixed one of our internal tools that was broken on Windows, and worked with another team to get a tool set up to get some very commonly used data into a state that’s much easier to access. Once these tools were set up, things were much easier, and I was able to work through the problem in a single afternoon.
The biggest thing I hope you can take away from this is that after you’ve been doing something for a long time, it can be very hard to focus on anything but the big picture and all the little things start to feel like meaningless steps in some direction that isn’t necessarily the direction of success. Occasionally you should try to feel the relief of obtaining something that makes the hard things in your life easy. Set some time aside to build tools for yourself.
There is some good insight here, but this article needs a copy-editor. It’s difficult to read.
It’s a pleasure to read your articles Nick. I especially enjoyed this read, because you expressed personal persistence. You found your “A-ha” moment through a community avenue, and gathered it to fruition. Your experience and wisdom has been constructive for me, both past (mock interview @ DigitalCrafts) and present (Stack Overflow articles). Keep up the great work!
Hey friend nice write up. After finishing my undergraduate studies and wrapping up my first year as a stay at home parent, I am just now trying to orient myself in the programming world. Being new on the scene it’s helpful to get a sense for where seasoned programmers like you are coming from.
I am a community type of person, and in all my pursuits I’ve always been at my best when I have had friends to learn with and learn from — where might you recommend a stay at home parent go for a welcoming beginner/hobbyist/enthusiast community? Thanks so much!
I agree right tools are very important, but for me personally the most important things are time flexibility, freedom and co-workers.