Practice Makes Perfect
We have all heard the saying, Practice Makes Perfect. But does it apply to programming? To write tests? To software design? I believe so and I hope this articles makes you think about doing some Katas, some experiments, writing some side projects, and, if you’re brave, publishing them!
Have you ever seen the great ones do some katas? See how the master works through the code and changes it so effortlessly? It seems like magic, doesn’t it? But they are just humans like us. Whether you follow Martin Fowler, Robert “Uncle Bob” Martin or Kent Beck, you’ve probably seen some of their katas. If fact, you can find videos of them trying new techniques like we do, like seeing Kent Beck doing some TCR (test && commit || revert). It is through deliberate practice and being humble that they, and also we, can become better at what we do. We never know everything. There is always something we can learn and something we can improve. If we stop practicing and we assume we know it all, that is a good recipe to let our Ego destroy our careers and our lives.
Keep practicing
Have you ever seen a craftsman do his work? What about a great musician playing? Ever wondered how they are able to make something so hard seem so easy? By deliberate and continuous practice. They don’t read a book, watch a video or take a course and end up brilliant. They need to practice every day, putting in the effort and do the work that it takes to excel.
Are programmers any different? Are software architects any different? Why do we convince ourselves that we have reached the peak and then lay back, letting our ego keep us from growing?
I learned to program on the ZX Spectrum. After hurting myself playing in the trees, I had to stay indoors for six weeks. During that time, I played all the games I had and ended up reading the manual, and learning BASIC. The programming bug caught me, and in the months that followed, I ended up programming my first game. It took trial and error, and lots of patience, and the game was not at all that great.
Today, we have lots of knowledge available for free on the Internet. You can find programming courses in many languages online, videos of experienced developers working through the code, books that are so cheap when compared to higher education, coding competitions, you name it—there is no reason to learn, to continue to learn, and to grow in this field.
Grow by teaching
No matter how experienced you are, there is always something you can improve on. If you believe you can’t improve, just try to teach someone what you know and watch as you grow and learn while teaching. It is a humbling experience, one that makes you appreciate having to slow down and explain. Who has never found themselves looking at a bug for hours, asking for help, and halfway through the explanation finding the bug? There is a reason why we have the rubber duck debugging.
Have you ever helped someone learn to do Test Driven Development? I have done it several times, and every single time my practice improved. By having to slow down to explain the steps and why they are the way they are, we are forced to think it through and remind ourselves of the foundations of the practice. This keeps us grounded to remember old lessons and humble to learn new ones.
Create a side project
Another approach to honing our skills is to have a side project. There are many you can take: you can make a simple game; try to do an alternative to some open source project you use, but you wish had another approach; create a niche application; who knows, maybe it will take off, and you won’t have to work anymore 🙂
Either way, having side projects is something that also helps you when looking for other opportunities. What better way to promote yourself than by showing what you have done? What better way to show that you never stop learning than by showing that you keep doing things because you like the creative process?
Even if that doesn’t sell you the idea of having side projects, even if you are afraid of exposing yourself like that, just do them without sharing. Doing them will give you practice; you will have to go through all the hoops of getting something done and out the door. It is too easy to just make a few experiments and follow a tutorial, but getting something that does something useful for a sustained period of time is a hard but necessary practice.
Key takeaway
No matter who you are or the experience you have, you cannot let your Ego get in your way. You should continue to learn, to practice and to share your knowledge with others. Only by staying humble will you continue to evolve. Only by sharing with others and integrating different views and perspectives will you be able to surpass your limitations. We live in a world where information is free, where we can learn to code and evolve without having to pay for a course or go to college. Seize the opportunity and make something out of it, but keep your ego in check. You must never stop learning.