As programmers and Information Technology professionals we are craftspeople. We require tools to accomplish our tasks. It’s common to invest ourselves heavily in these tools. In this blog post I want to break down some of the positive approaches to this emotional investment.
What are “tools”?
In this context of software development and IT, a tool is anything that you use to get your job done.
- Operating systems (Examples: Linux, Windows, MacOS)
- Programming languages (Examples: C++, Go, Java, Python)
- Database systems (Examples: PostgreSQL, MySQL, MongoDB)
- Editors/IDEs (Examples: Visual Studio Code, Vim, Emacs)
- Cloud providers (Examples: Azure, AWS, GCP)
- Container orchestration (Example: Kubernetes)
- DevOps software (Examples: GitLab, Jenkins)
- and many… many more
Note: The above includes limited examples, so if I didn’t name the tool that you love, then I’m sorry!
What is “emotion”?
As individuals, we have limited resources that we can spend on things in general: Time, money, and focus are a few. But those don’t exactly capture the essence that we have for our tooling in many cases. You can definitely spend a lot of time in something that you aren’t passionate about.
In my opinion, it’s emotion that is the resource that we are hesitant to invest but also gives us the largest amount of happiness (and sometimes, unfortunately, the least amount of objectivity). When you invest your emotion into something, you think about it when you don’t have to. You enjoy having it as a comfort in your life. It can even be a part of your professional or personal identity. That’s what it means to invest yourself emotionally in a tool.
A lot of people would say that isn’t a good thing. With the right approach, I think it’s ok (and normal).
Here are a few points I think can contribute to the right mindset.
Strengths and weaknesses
It’s easy to embrace the strengths of your tool. After all, it’s probably the reason why you love it so much. But it’s less easy to embrace the weaknesses as well. And if you think there are none, then you should look at lot closer… they’re there.
Always be able to answer the question “why?” when asked why you think it’s great. But also be ready to answer “why not?”.
Example: I love Linux. For me it’s the greatest OS because it is free and open source, powerful, and a great platform for software development. But I know when Linux is not good. Maybe if you are into digital and video editing, it’s probably not the best choice. Why not? Because many of the tools for task that aren’t available on Linux.
You should know how the competing tools work and compare to your tool. Use them, spend some time with them, and at a bare minimum know how they are better or worse at certain things. The benefit there is that you’ll appreciate your tool even more (or possibly switch to a new tool!). Also this will allow you to have the “versus” conversation.
Example: “Python vs Ruby”. You love Python, but you have to understand why you think it is better than Ruby and under what circumstances.
This could be irrelevant in the case when there is no competing tool, or anything close to it. Kubernetes is a great example of that.
Means to an end
Always remember that your tool is (usually) just a means to an end. It allows you to do something. Your favorite programming language is great, but you use it so that you can create software. You don’t create software so you have an opportunity to use your favorite programming language.
I urge you to read about the criticism of your tool. Don’t live in an echo chamber, because it will just reinforce what you already know to be true. Warning: it might not feel great to hear about how another person thinks it isn’t a great tool, but it will give you a good understanding of opposing sides.
You also need to be pretty good at filtering out opinionated criticism that isn’t based on anything concrete. Some people just don’t like things for any good reason.
Understand what exactly it is that you love about your tooling. Get the bigger picture and do self-reflection on why you love this tool. The really great thing about that is you might find yourself investing emotionally in principles instead of concrete implementations. This can widen your horizons.
Example: I really love PostgreSQL. But what do I love about it? I really like the constructs of relational data. Maybe I should look into more tools that deal with relational data.
Things change, and so will you
Nothing is (usually) forever. Especially in the software world. Just think about what tool you were emotionally invested in 5 years ago. Your tools of preference can change with time, and that’s ok too. Don’t be rigid for the sake of comfort. If it’s still the best tool, stick with it. But if it isn’t, try to move on. You’ll find that the next new thing gives you a lot of happiness too.
Help with the tool and community
If you are emotionally invested in your tool, there’s a good chance that a lot of other people are too. Investing yourself in the community is another way to immerse yourself in what you love. The benefit is that you are also helping others out in the process.
Bonus if the tooling is open source, you can invest in the actual tool itself!
Many of us are there. We love our tools. It is the things that allow us to accomplish things. Make sure you step back from time-to-time and reevaluate your approach for your own benefit. You owe it to yourself and your investment!