A phrase I often heard from my father growing up is how important it is to “have the right tool for the job”. Often, this was in the context of fixing a flat tire or learning how to change the brakes on a car.
However, I’ve quickly learned how applicable this is to all aspects of life. It’s especially relevant to writing software:
-
A complicated threading problem can be solved using a standard worker library like Sidekiq, with necessities like automatic retries, database connection management, and prioritization all for free.
-
Generating custom SQL for faster insertion of large numbers of records can be made easy, safe, and edge-case aware with a gem like fast_inserter.
-
Knowing how to correctly stream updates into your elasticsearch cluster without duplicating work, clogging your index queue, or overloading the database can be overly complicated, so instead introduce a library to handle that so that engineers don’t have to.
These tools have an upfront cost, but pay off dividends very quickly. If you don’t have a toolsmith on your engineering team, find one now. Having someone (or a team) identifying these gaps, architecting the right abstractions, and following through on implementation is a incredibly valuable. They take joy in enabling the rest of their team to build faster, more efficiently, with less bugs and in a more enjoyable environment.