Jeremy Heckt's Blog

The Case For Doing Things The Hard Way (At Least Once)

Radishes

It is easier for us to go to the store to buy a bunch of radishes than it is for us to grow some. Unless one is a gardener or has an interest in horticulture it is unlikely that they are prepared to grow radishes. Additionally, one usually wants radishes today and not 45 days from now.

If one chooses to eat a lot of radishes a thought will likely cross their mind at one point inquiring as to how one grows a radish. A seed is a fragile thing that takes a lot of input the radish consumer will find. I need to till some soil (or get a planter), I need to plant the seeds, I need to water them frequently and prevent them from drying out during this stage, I need to watch the leaves for signs of illness, etc.

One may simply conclude that it is easier to buy a bunch of radishes than to worry oneself with all of that shuffling about. Nobody would (or should) judge a person for coming to this conclusion, it is logical - this is why grocery stores exist.

Technology

When one tries to build a piece of technology, such as a web-application or a video game, it can be overwhelming at the onset if one is inexperienced (much like our radish consumer friend).

One starts by reading documentation, blogs, articles, forums, trying to figure out how a piece of software works. They are often directed to libraries, engines, etc. These are amazing tools, and the people who made them (and made them free) are amazing people. But ask your brain this question: do I know what is actually going on here, and I able to explain it to the rubber duck I have sitting on my desk?

  • "Use this node type to add collision to your player node" - What does it mean to add collision in a video game?
  • "Import this package and you can easily read from a configuration file" - How does it read from a configuration file? How do I open a file?
  • "Buy these radishes and you can easily make a tasty salad" - How do I make a radish... radish = radish.New()?

Doing Things The Hard Way

"The Hard Way" is usually understood to mean something akin to "from scratch". If one described themselves as acquiring radishes "The Hard Way" it can be assumed that one will grow them oneself. If one described themselves as building a web-application "The Hard Way" it can be assumed that one will be building a web-application using standard libraries and vanilla HTML/CSS/Javascript. If one described themselves as setting up a Kubernetes cluster "The Hard Way" it can be assumed that one is in for a very long weekend.

Of course "The Hard Way" takes longer. Of course it takes more effort. But what you get is worth all of that experience. Doing a lot of things "The Hard Way" at least once will grant you a plethora of experience and knowledge.

Should you do everything the hard way? My personal take is this: You can bet money I am calling a professional to fix my water-heater 100 times before I try to fix my water-heater "The Hard Way" - but I gave growing radishes a shot.