Your Code Is Terrible
A boss developer works hard to improve his skills! Improving absolutely requires both humility and desire. If you want to be great, you must be extremely passionate and incredibly humble. There is no other way.
In order to maximize your potential for growth, you must think “My code is terrible.” It’s not the truth, but it’s an amazingly helpful lie. It’s a mental hack to orient yourself towards learning. When you internalize that paradigm, you are most able to learn from others, most free to focus on the engineering problems, and most free from the ego that seeks to destroy you.
Improving is the process of becoming better.
Perfection is one of the opposites of improvement. Perfection makes improvement impossible since nothing can be better than perfect. The illusion of human perfection is an error of perception, caused by pride. No human is perfect, and no human is capable of creating something perfect. Nothing about you or any other human is perfect, nor can it be. Internalize this deeply, and you will find freedom.
Stagnation is another opposite of improvement. Stagnation is a failure of the will to value growth sufficiently. In our world of entropy, anything that is not being actively improved will deteriorate. Passionate humans enjoy life the most, and accomplish the things they set their minds to. You must apply your energies to attain the things you desire. Do not be stagnant!
Do you want to be a boss developer?
You need to be as passionate as possible! You need to be as humble as possible!
Defeat Your Ego
Your ego is powerful and feels compelling. It is your worst enemy! It keeps you from excellence. It makes you defensive and reactive, and costs you peace of mind. It prevents you from taking advantage of learning opportunities.
Humility is the only path to freedom and growth. It is a challenging path, and requires you to surrender your self-image and self-delusions. Pure humility means holding an accurate self-image. Be completely honest with yourself about your strengths and weaknesses. Recognize the traits you possess and the ones you don’t. Welcome feedback from others who are not encumbered with the same mental-distortions that your mind possesses.
In software development, humility means that you must believe the following:
- Your code is flawed
- Your designs are flawed
- Other developers have insights that will help you write better code
- Other developers have insights that will help you create better designs
My Humility Hack
The simplest mental hack I use is this mantra: “My code is terrible”. Use it. It will help you in several ways:
- It forces you to seek other experienced craftsmen who can help you to learn.
- It encourages you to critically examine past solutions and find more elegant ones.
- It frees you from thinking of your code as a part of yourself
When you believe that your code is terrible, then you are grateful for bug reports, critiques, and code review comments. Each one of those reveals something that you do not already know, or are not presently applying. Gratefulness, instead of defensiveness, is the result. When you are taught something new, you feel joy.
When you believe that your code is terrible, then you are able to see your own code with fresh eyes every time you look at it. You are less prone to accepting it uncritically. This give you more opportunities to evolve your solutions, resulting in a cleaner, more polished codebase. Put your code through the crucible, and it emerges purer and greater than before.
When you believe that your code is terrible, then you derive your worth from your ability to create and grow, not from the perfection of your past creations. Your worth should be tied to who you are, not what you have done. Seeing old code gives you an opportunity to reflect upon the knowledge you now possess.
When you believe that your code is terrible, then the natural aging of code doesn’t horrify or trouble you. Code rots naturally. It’s inevitable. Languages evolve. Project evolve. Don’t attach your ego to old code you wrote. It will not hold up well against the passage of time.
Your Code Is Terrible
If you genuinely wish to be a boss developer, then you need to learn everything you can. As long as you harbor illusions about yourself and your creations, you are limiting your own potential.
In order to maximize your growth, you must seek out people who are willing to reveal your flaws. As long as you have an attitude of defensiveness, people are not going to feel free to give you the feedback that will benefit the most. You must believe that you are flawed and that others can help you to refine your thinking and your character.
Once you release yourself from worrying about creating perfect things, you can focus on what matters most: creating things of value, and interacting well with others. Those are far more important than having great code.
Your code is terrible – and that’s great, as long as you stay humble and dedicate yourself to learning.
P.S. This blog post is terrible. Let me know how I can improve it in the comments below.