The Dilemma of Experience
This week I want to talk about what makes a great programmer.
When you think of the phrase "great programmer", you probably have someone in mind.
Someone who can solve any problem and put it to code.
They seem to have all the answers to any questions you throw at them.
When you ask how they know so much, they chalk it up to "experience".
Of course, that makes sense.
The more you do, the more problems you'll be able to solve.
The problem with this answer, however, is it doesn't address the question.
Its ambiguous, and usually refers to years of practice.
Even then, we notice that two engineers with "years of experience" typically aren't at the same level.
One can be a "genius" programmer, and the other an average one.
First, what exactly is "experience"?
From what I gather, experience is the accumulation of past problems solved to the point of recognition and recall.
Richard Feynman addressed this in a question where he was once asked "How did he become a genius?"
In response, he said "I have 12 or so of my favorite problems memorized. When I encounter a new problem, I compare the problem I'm currently facing to my favorite problems. Once in a while, a problem will match up or be similar to a problem I've had before."
Feynman didn't believe people were simply geniuses. He believed anyone could become a "genius" with enough study and practice.
Second, how do we get "experience"?
As Feynman mentioned, study and practice. However, its a bit more nuanced than that.
We cant simply study things at random and expect our desired outcome. It takes discipline and deliberate practice.
The more focused study we're able to hone into, the better.
Its one thing to say "I want to learn systems programming", but its an entirely different to say "I want to learn how to write a virtual machine" or "I want to learn how to build a compiler".
The more purpose behind the practice, the better.
It comes down to:
- Set a goal
- Solve problems to achieve that goal
- Be mindful and deliberate about your study/practice
Rinse and repeat.
Find problems you want to solve, and remember them.
Accumulate a dozen or so problems you know well, and compare new problems against those problems.
Maybe, one day, you'll be called a genius as well.
Quick note: Strong Foundations Blueprint will be out this Friday, April 19th. Ill be sending out a special newsletter issue then so you have it in your inbox!
I hope you enjoyed this weeks issue!
See you next week!
- Glitchbyte