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.