Tools That Work

One of the biggest hurdles facing new software developers is learning all the tools that come along with the job.

The truth is all you really need is a text editor. Yet, beginners are thrust into a world that often values a list of buzzwords, IDEs, and frameworks over critical thinking skills.

<sarcasm>
  Before writing a single line You MUST pick the right tool for the job Heed
  this warning Or be prepared To face a lifetime Of retooling and technical debt
</sarcasm>

Take that approach and your project will never get off the ground.

When I first got started with web development, I was constantly concerned with “the right way to do things” and choosing the right tool for the job. I’d read blog posts lauding this technology over that. I’d scour StackOverflow for answers with the most upvotes. I’d ask senior colleagues how they’d approach a problem before attempting to tackle it myself. That’s how you learn, right?

Yes. And NO.

I learn best by failing over and over again until I finally get something right. I learn by fiddling with variables and rogue quotation marks until the console no longer reads SyntaxError: Expected Token ')'.

Sure, learn from the mistakes of others, but give yourself the freedom to grow from failures as well.

The best tool is the tool that works… for you, for your team, for your stakeholders, for the requirements, for your customers, and ultimately for the real world.

I wish I would have known that sooner.

I once worked with a salesperson who spent an entire year evaluating various cloud-based CRMs. During that time, he landed exactly zero customers and only succeeded in paying Salesforce an ungodly sum of money each month for technology that promised to revolutionize the business.

It did not.

What he failed to realize is that Salesforce is just a tool and tools don’t work unless:

  1. You know how to use them
  2. They’re appropriate for the job
  3. They’ll deliver a return on investment

I continue to be a huge fan of Ruby on Rails because it satisfies all three of those conditions for me. On the other hand, many devs have found the burgeoning JavaScript ecosystem to be effective for them. Libraries like React are popular because they are solving problems for large corporations.

But I am not them and my problems are not theirs.

Still, every time I start a new project, I have a brief moment of crisis where I question my tooling and embark on a mission to install every NPM module known to humankind.

I wish there was a list of the perfect tools for every job, but it would be impossible to make. All there will ever be is a list of tools and another list of jobs and some squiggly lines drawn between them.

It’s our job as developers to draw those lines.