Jul 30 2019
Reaching for the Familiar Tools
After having worked in so many different languages, there is a clear split in the languages that I really like, and the languages that are okay. The ones that I really like seem to bring something more to the table. Rust touts it’s ownership philosophy, Haskell is purely functional, Elixir embraces OTP and has the friendly syntax of ruby. These languages are awesome. Having a mastery level in these languages would be extremely valuable in today’s software market. Unfortunately, I have not had the pleasure of deep diving into most of them (with exception to Elixir). In any case, what’s holding me back from pursuing this mastery?
If I had to guess, the combination of the 9 to 5 job, real estate, and life.
But I’m not here to look for pity because when I do get free time for my own coding projects, I reach for the tools that I already know. You see, I try to maximize my productivity with these familiar tools and have a sense of comfort in using them. Similarly when I have the occasional freelance job, I will also reach for these same tools. I want to be sure that my client’s dollar is stretched as far as it can. Having anything less than mastery in a tool can bring about excessive technical debt, slower time to market, improper deployment processes, and many other drawbacks. So as long as the business value is being delivered, it shouldn’t really matter what tech stack is behind it. Of course, sometimes the business value can motivate a stack adjustment. For example, the Telecom industry requires durability and availability in it’s services – this necessitated OTP.
I don’t want to sound anti-learning. Learning new things is always a good idea in this fast paced industry. Every 6-8 months I will spend about 10 hours learning the fundamentals of a new language/framework: how it is unique, it’s strengths, and weaknesses. However, in order to gain a mastery level in a language, one needs to habitually use it over the course of many, many years. I personally believe that a person can only do this with a small handful of languages at a time.
So yes, I will reach for Node.js, Express, React, Python, Flask, SQLAlchemy, etc. It’s too easy to get the job done swiftly and correctly.