Practice, Not Perfection

Practice, Not Perfection

How to become the best dev you know

Overwhelming Complexity

My dad builds model ships. I don't mean small plastic ones, I mean four foot tall historical replicas of Spanish Galleons and famous fishing schooners. He crafts each ship plank by plank, rope by rope, until it is finally encased in glass.

Recently I was in my living room and for some reason, I fixated on the "Blue Nose", a replica of a Canadian schooner that my grandfather used to watch race into Gloucester harbor as a kid. My father built it for me to always remember the legend that was my "Pepe".

I got up close and saw thousands of individual wood planks. Two masts held up 6 different sails - each bound by an elaborate web of rope, wood, and tar.

The complexity struck me. It blew me away that a human could design such a thing. I imagined an intellectual titan puzzling together every rope, mast, plank, and nail, planning a ship out of thin air.

I compared myself to this mythical ship maker and wondered how anyone could design anything so complex.

Then I noticed a tiny detail on the model ship that stopped me in my tracks....

The "Paper Engineer"

Some of us struggle with imposter syndrome. When you are early in your engineering career, you don’t feel like you know enough to compete with the established engineers around you.

As you enter into the middle portion of your career, your circle of knowledge expands and touches more and more things you don’t know. As Aristotle said, "The more you know, the more you realize you don't know."

In later parts of your career, your role can become less execution-based, and with that comes fears of “losing your edge” or being exposed as a has-been coder.

It’s natural to look around for comparison points at each of these phases. I’m sure you can think of a few engineers you respect right now. They probably have mastery over subject matter that you don’t know. They produce interesting side projects. They output endless streams of work.

Oftentimes when we look at high performers on paper they seem impossibly productive and well learned. The list of all the things they know and do runs far longer than yours. They are the vision of that ship maker from before - an intellectual titan that has mastery over topics that are densely complex to you.

As they say, comparison kills all joy.

This trap caught me recently. I started looking at a few engineers around me and created a long list of all the things these engineers know and are able to do. It became an archetype for me, a “paper engineer”.

I looked at the paper and thought "I am so far off of this". I started studying and practicing in my off hours to try and make up the difference.

I was spending all this time "learning" but I wasn't getting any closer to that paper engineer.

I wasn't assimilating the knowledge. I was going through the motions of learning and practicing to "be a master" but I wasn't even enjoying the process. I ended every learning session frustrated because I still wasn't where I felt I should be.

The returns were diminishing over time. I was spending more hours but learning less. Learning and exploring new tech and new ideas used to be something that gave me immense happiness, but it felt like a chore.

Then I saw that tiny detail on the model ship that set me on a new path.

Crumpling the Paper

Yes, the ship was immensely complex and was the top of its craft at the time. Looking at it from the outside, you could easily become overwhelmed by the knowledge and mastery. Just like that "paper engineer" I built to compare myself against.

Then I looked more closely and saw something fascinating. I followed the ropes from the sails downwards.

They were all so perfectly intertwined...until they reached the deck. At spaced intervals, there were posts that operated as repositories for all the rope ends in that area.

Hundreds of ropes were tied wantonly around the posts with no rhyme or reason.

The rope ends were an afterthought. A flaw. I asked my Dad if the real ship had the same issue and it did. The model is an historically accurate exact replica.

I sat for a minute and thought about how that could possibly have happened. How did these master ship creators forget to plan for the end of the ropes? How could they design such an ugly and inelegant end?

That's the point. They didn't.

These ships weren't designed in a vacuum. They weren't ideated out of thin air.

They were a version, not a conclusion.

Before it was a schooner it was a one-masted sloop. Before that, a one-sailed barge. Before that an oared boat piloted only near the shoreline.

Each one of these versions was purpose-built and effective at it's given task. Each version was outgrown by need and/or circumstance. Each version was an iteration of previous input, not newly designed from scratch every time.

Which one was perfect? Was only the final schooner perfect in all it's many-sailed glory? Was the rowboat perfect, with its simplicity and ability to move in calm winds? Was the very first raft perfect in its initial conquering of the waters?

They were all perfect. They were all flawed.

Building Our Ship

Trying to study or practice only to match up to some "perfect example" misses the point. Those "perfect examples" aren't statues, they're snapshots. Each sail and rope ended up there because a problem or opportunity arose out of the daily practice of sailing.

The skills and abilities of the paper engineer came from daily practice in technology and problem spaces I am not exposed to. They seem impossibly complex because I haven’t broken down those initial walls of understanding.

In an instant, the goals changed. Instead of "master node.js" it was "practice node.js every day". Instead of "know webpack inside and out" it became "consistently delve into webpack documentation like an explorer would enter a jungle".

The practice became the purpose.

When your goal is to "be the best at " or "build the best ", every practice session / working block only serves as a reminder for how far away you are from that conclusion. You can never know how much practice it will take to finally reach that goal. You don't control your destiny.

When your goal is to "practice to the best of my ability", you can get a win every single time you put your mind to it. You hold your destiny right in your hand.

That's a good feeling.

Ok yes, you got me. This entire blog post is a very roundabout way of saying "enjoy the process, not the product". This is an overused trope. But like many platitudes and "universal truths", it often takes a life event to internalize them no matter how many times you hear them.

For me, it was looking at this incredibly beautiful, complicated, flawed, tangled ship and realizing you can either see the complexity and lament your shortcomings, or start sailing and find out what ropes, sails, and masts you can add along the way.