code

The weakness of weapons

“A weapon is a tool… A tool for killing and destroying. And there will be times when, as an Envoy, you must kill and destroy. Then you will choose and equip yourself with the tools that you need. But remember the weakness of weapons. They are an extension–you are the killer and destroyer. You are whole, with or without them.” - Richard K. Morgan, Altered Carbon

I am scanning the top posts on TowardsDataScience as I write this. TowardsDataScience is one of the most popular data science blog compendiums in the community - thousands of contributors weigh in on the broad field of analytics. The current featured posts look something like:

  1. “Deep learning on graphs: successes, challenges, and next steps”
  2. “A Practical Guide to Getting Set-up with PostgreSQL”
  3. “What’s popping? An Exploratory Analytics Project on What Makes Popular Music Popular”
  4. “My End-to-End Process for Data Science Projects”
  5. “Can you remove 99% of a neural network without losing accuracy?”

Scanning dev.to presents a similar bucket of titles:

  1. “Real world Javascript map/reduce, solving the Poker Hand problem”
  2. “Learn the Incredibly Helpful but Often Overlooked JavaScript Built-In Set Object”
  3. “Bullseye! 4 ways to center that damn div with CSS”
  4. “Containerize your .NET Core app - the right way”
  5. “6 Super Useful Menubar Apps For MacOS”

Technical education, by and large, looks a lot like this. There’s a description of a tool or algorithm along with some code samples of what’s discussed in the post. There may be a case study on where the tool was applied.

Frameworks, techniques, languages… all of these are weapons. By themselves, they are weak. They are just tools for you to use to accomplish a task.

The engineer who focuses overmuch on particular tools is hindering their own development. Can you really count on React or Python or any specific framework or language being around in five years? Are you learning the true shape of a problem, or just how to bang out a specific piece of code to close a ticket? The difference between the experienced engineer and the novice is the experienced engineer knows how to analyze problems and pick the right tool to address them - not to just apply the specific tools they know to hopefully make something work.