The Worst Code I Ever Wrote Was The Code I Wrote Six Months Ago
Recently, I read a memo went out about what it means to be an "Exceptional" engineer. The content of the memo did seem to describe exceptional people. And while I think it was intended to inspire, it left me feeling a bit shaken. I think a lot of engineers have angst about their abilities. And, I think perhaps that I have more angst than most. So, when I read about exceptional engineers, I often come away with the feeling that I am quite an average engineer.
|
|
|
||
|
|
|||
|
|
|
In the world of web development, there is an ongoing joke that the worst code you ever wrote is the code you wrote six months ago. This is funny because it's actually kind of true. And, it's true because learning to code and architect increasingly complex and dynamic applications is an iterative, life-long, sometimes soul-crushing, but always exhilarating Sisyphean journey.
It means that the best I can hope for today is that the code that I'm writing now doesn't disgust me too much in six months.
This is, obviously, a little tongue-in-cheek. But really, it just means that we're always learning. It means that after every mistake, we hopefully finding new and better ways to solve problems.
When I think about my career, it's just mistake after mistake after mistake after mistake. And then, learning from those mistakes and trying not to make them again. If I know a lot of weird, random edge-cases or caveats in ColdFusion and JavaScript, it's because I've made an unbelievable number of mistakes writing ColdFusion and JavaScript. And then, I learned from those mistakes.
Will I ever feel "exceptional" as an engineer? I highly doubt it - I don't think that's in my personality. But, I do know that I love to learn. And I love to tinker. And I love to experiment. And I wake up every day excited to hone my craft. Really, the only thing that I am confident in is the fact that I'm doing what I love to do. And, if I somehow, someday manage to feel exceptional at it, well, that would just be icing on the cake.
Reader Comments
I always admire your humbleness Ben. Being humble is often a trait I see in truly exceptional Engineers.
"For those who exalt themselves will be humbled, and those who humble themselves will be exalted." - Matthew 23:12
It's called experience! :)
Here's a famous tale about experience and it's value:
A homeowner has a problem with his furnace. He phones a friend of his and says "I think my furnace is broken. Do you know any good contractors who might be able to fix it?". His friend replies, "Yeah, I know this one guy. He's really good, but he's expensive". The homeowner says "Hmm, I'd prefer not to spend too much money. I'll have a go at fixing it myself".
So for the next three days he toils trying to get the furnace fixed. He searches google, he gets his father round, and try as he might, it's still not working. It's freezing inside and outside and the so in desperation he phones his friend again, and says "I think I'm gonna need the number for that contractor you recommended".
The contractor comes round, takes a look at the furnace, gets out his hammer and gives it a whack. The furnace instantly roars back into life.
The homeowner is delighted. "Wow, that was so easy!" his says to the contractor. How much do I owe you?"
The contractor writes up a bill and hands it to the homeowner. It says "Fixed furnace: $400"
"$400 bucks!" the homeowner exclaims, "all you did was hit it with a hammer! Can you amend this bill please, it's ridiculous!" he pleads.
So the contractor amends the bill and hands it back to the homeowner. The homeowner is happy...
So, what did he amend the bill to?
"Fixing furnace by hitting it with a hammer: $1"
"Knowing where to hit with the hammer: $399"
"Total: $400".
@Josh,
I appreciate that good sir!
@Tom,
Ha ha, it's funny, my dad used to tell me the same exact story, only I think it was some mainframe computer system and the repair man kicked the side of one of the machines :) Such a small world.
My dad was a wise man :)
**BLUF: Take to heart and *grok* that no one knows everything. and Jon Snow knows nothing.**
I think the key word in all this is "exceptional." By definition, an exceptional engineer is unique, or at least very, very rare; they are the exception to the norm. As Will Rodgers said: "We don't all get to be heroes because someone has to sit on the curb and clap as they go by."
I read something recently that drew a correlation between imposter syndrome and professions that require speaking with authority. Consultants, coaches, and experts suffer from this as well, but I think there's an industry that better parallels the technical profession in this sense -- healthcare.
Healthcare and technology are both wide and deep when it comes to knowledge. There are generalists and specialists who know a breadth and depth of information, respectively. But the most important point is that in both fields *you can not fake what you are talking about*. If you do, or try to, the people that actually do know the subject you're talking about will detect the BS immediately.
This where the fear comes from in both fields.
However, where the professions differ is in the popular opinion of how much a professional in each field should be expected to know. This is different only because healthcare has been around for a little bit longer than modern technology has. For example, if a doctor answers a medical question by saying, "I don't know for sure, that's not my field," there isn't any negative connotation there. Everyone understands that one doctor can't know every little thing there is about medicine.
But if you ask as web developer how to set up a web server and they respond with "I don't know," there's tends to be an assumption of failure there. The dev might think: "I should know that. I work with web servers. Other developers know how to do that. Why don't I? Am I not good enough? Is that something I need to know?" Or worse still, they project that this is what everyone else is thinking about them as well.
Usually, there are very good reasons that the dev doesn't know. Maybe their specialization is front-end, maybe it's mid-tier. They might be an expert in IIS, but not Apache.
The point is that learning is a life long endeavor. Lack of knowledge is not failure, it's opportunity. Thinking otherwise is the "No True Scotsman" fallacy, just self-directed. So, don't let some external ideal of greatness be your goal of achievement. Instead, the only thing you ever need to be greater that is the person you were yesterday.
@JC
"Lack of knowledge is not failure, it's opportunity."
Well said, @JC. All of it, but particularly this quote.
@Ben,
You are exceptional in my book, and I'd bet most everyone who knows of you. If also bet that most of us *on the curb clapping as you go by* would love to be more like you. I very much resonate with the tweet you displayed above. I'm in an advanced ReactJs class with @ryanflorence and @mjackson and my head is swimming with all the the conceptsI've your to learn. Thanks for being one of the best or there at filling in the gaps!
@JC,
I worked for years as a programmer/web developer. A friend called me up and asked me to come fix her printer. I told her I didn't know how to fix printers, that I usually worked just developing software. She proceeded to argue with me that I DID know how to fix printers since I was in the computer field, and I needed to come and fix hers. People not in the field think that if you do ANYTHING with computers, you know how to do EVERYTHING having to do with computers and their associated parts and fields. Sigh.
@JC,
I love the parallel to the healthcare industry. I think that's completely spot-on!
@JR,
I think you just summed up how *every programmer in the world* interacts with their *mother* :D
@Chris,
Thank you very much, kind sir. Half of the value-add, for me, is the conversation about it all. Otherwise, it's all just in a vacuum.