I’m sure you’ve heard the saying, “Practice makes perfect” sometime in your life. I hear it in motivational speeches, pep talks, or when I am trying to establish a new habit.
Past experience led me to believe that this statement, while having good intentions, is not phrased correctly. Let me explain:
When I first started working, I was put on a project where I had no background knowledge or exposure to the technologies used. With time, effort, and mentoring, I have slowly improved my programming.
Despite this improvement, I have picked up a couple of bad habits along the way.
I was learning to write backend processes for a project from a coworker. I picked up many useful tips, such as: 1) make small changes, and 2) test your process each time you make a small change so it is easier to debug, to name a few. Subconsciously I also picked up the coworker’s method of moving code between environments. You know, build in a test environment, then move to another environment, then move to a production environment. This method of moving between environments was a manual process, and while it worked (for the most part) it was prone to error. I fell victim to this habit just before writing this post. I made a change in a test environment but failed to move it to production.
To form a new habit it first takes continual practice, before it happens automatically.
But what if you are practicing wrong? Does practice make perfect if you are practicing wrong?
Let me share another example. I used to run cross-country in high school. We ran six days a week with a variation of sprints, long distance runs, and medium length runs. It was a no-brainer that running every day would make me a better runner. However, after watching me run my coach told me that I was running improperly. My form was horrible. What seemed as simple as putting one foot in front of the other became more complicated as I realized that it was not enough to just run every day, I needed to run correctly every day. I spent the next few months unlearning these bad habits and saw my times improve.
While practicing correctly makes perfect, I have learned that it is possible to practice incorrectly. If we were to rephrase this common statement to be more accurate, it should be:
Practice makes permanent
I heard this quote from Certified Scrum Trainer Mark Layton, and it instantly made sense. It is sometimes true that practice makes perfect, but it is always true that practice makes permanent. In the case of my programming, moving code between environments was not a perfect process, but it became a permanent process for me. In the case of my running, my improper form did not lead to perfection, but it did lead to permanence.
If you want to learn something new, find a good coach. Coaches will help you practice correctly. They will help you improve your form in running, or program to proper standards for a certain language. They cannot practice for you, but they can ensure that your practice will lead to perfection.
I am still stuck in my bad habit of moving code between environments, but I am slowly improving. Eventually it will no longer be an issue. However, the experience has taught me that it is better to learn something new the right way (if there is one), rather than unlearn the wrong way and learn the right way.