Practice is the Key to Success

In this article, we will cover two different kinds of practice naive practice and purposeful practice. The right kind of practice plays a big role in acquiring the coding skill and achieving mastery in programming.

Naive Practice

Doing something repeatedly and expecting that the repetition alone will improve one’s performance.

Purposeful Practice

Practice is purposeful, thoughtful and focused, if it has the following characteristics:

Well Defined Specific Goals

Purposeful practice is about putting a bunch of baby steps together to reach a longer-term goal.

The purpose must be well-defined, specific goal that can be used effectively for your practice. Take the overall purpose, break it down and make a plan. Take the general goal - get better - and turn it into something specific that you can work on with a realistic expectation of improvement.

Practice Goal

Write a program that can add and remove nodes in a linked list. Explain the performance of your solution.


Improvement requires you giving the task your full attention.


You have to know whether you are doing something right and if not, how you are going wrong. Feedback during practice - someone watching and pointing out mistakes identifies exactly where and how you are falling short.


Feedback identifies what you need to improve on or how close you are to achieving your goals.

Meaningful positive feedback is one of the crucial factors in maintaining motivation. It can be internal feedback, such as the satisfaction of seeing yourself improve at something or external feedback provided by others.

Feedback makes a huge difference in whether a person will be able to maintain the consistent effort necessary to improve through purposeful practice. If you like to challenge yourself, it can be a motivation.

Getting Out of Your Comfort Zone

This is the most important part of purposeful practice. You must push yourself beyond what is familiar and comfortable. Make an effort to do more than what is already easy for you. You must push yourself beyond your comfort zone to improve.

Getting out of your comfort zone means trying to do something that you could not do before. Sometimes you may find it relatively easy to accomplish that new thing and then you keep pushing on.

But sometimes you run into something that stops you cold and it seems like you’ll never be able to do it. Finding ways around these barriers is one of the hidden keys to purposeful practice.

Generally the solution is not try harder but rather try differently. In other words, it is a technique issue. When you hit a barrier during practice, you have to come up with a breakthrough idea that gets you through the barrier.

Overcoming Barriers

Once you reach the limit, you have to develop another technique. The regular pattern is that you will improve up to a point, get stuck, look around for a different approach to get past the barrier, find it, then improve steadily until another barrier arises.

The best way to get past any barrier is to come at it from a different direction, which is one reason it is useful to work with a coach. Someone who is already familiar with the sorts of obstacles you’re likely to encounter can suggest ways to overcome them.

Whenever you’re trying to improve at something, you will run into obstacles - points at which it seems impossible to progress or at least where you have no idea what you should do in order to improve. This is natural. A true dead-stop obstacle does not exist. People just give up and stop trying to improve.

It is always possible to keep going and keep improving but it is not always easy. Maintaining the focus and the effort required by purposeful practice is hard work and it is generally not fun.

Get outside your comfort zone but do it in a focused way, with clear goals, a plan for reaching those goals and a way to monitor your progress. Figure out a way to maintain your motivation.

This recipe is an excellent start for anyone who wishes to improve.

The Limits of Purposeful Practice

The key to improved mental performance is the development of mental structures that make it possible to avoid the limitations of short-term memory and deal effectively with large amounts of information at once.

It is possible to improve to a certain degree with focused practice and staying out of your comfort zone, that’s not all there is to it. Trying hard isn’t enough. Pushing yourself to your limits isn’t enough. There are other, equally important aspects to practice and training that are often overlooked.

Deliberate Practice

Deliberate practice is an approach to practice and training that has proven to be the most powerful and effective way to improve one’s abilities in any area.


Pushing too hard for too long can lead to burnout and ineffective learning. The brain changes most quickly in that sweet spot where it is pushed outside - but not too far outside - its comfort zone.

Shaping the Brain

The human brain and body respond to challenges by developing new abilities underlies the effectiveness of purposeful and deliberate practice.

Regular training leads to changes in the parts of the brain that are challenged by the training. The brain adapts to these challenges by rewiring itself in ways that increase its ability to carry out the functions required by the challenges.

The cognitive and physical changes caused by training require upkeep. Stop training and they start to go away.

Building Your Own Potential

The traditional approach to learning is not designed to challenge homeostasis. It is about fulfilling your innate potential and you can develop a particular skill without getting too far out of your comfort zone.

In deliberate practice, the goal is not just to reach your potential but to build it, to make things possible that were not possible before. This requires challenging homeostasis - getting out of your comfort zone - and forcing your brain to adapt.

Learning becomes a way of taking control of your destiny and shaping your potential in your chosen ways.

Efficient Mental Representations

Much of deliberate practice involves developing ever more efficient mental representations that you can use in whatever activity you are practicing.

These representations are preexisting patterns of information - facts, images, rules, relationships and so on - that are held in long-term memory and that can be used to respond quickly and effectively in certain types of situations.

Experts develop highly complex and sophisticated representations of the various situations they are likely to encounter in their fields. These representations allow them to make faster, more accurate decisions and respond more quickly and effectively in a given situation.

The main thing that sets experts apart is that their years of practice have changed their brains to produce highly specialized mental representations, which make it possible the incredible memory, pattern recognition, problem solving andother advanced abilities needed to excel in their particular specialties.

Recognizing and Responding to Patterns

A hallmark of expert performance is the ability to see patterns in a collection of things that would seem random or confusing to people with less developed mental representations. In other words, experts see the forest when everyone else sees only trees. Better mental representations lead to better performance.

Making Sense of Information

The key benefit of mental representations lies in how they help us deal with information:

  1. Understanding and interpreting it.
  2. Holding it in memory
  3. Organizing it
  4. Analyzing it
  5. Making decisions with it.

The more you study a subject, the more detailed your mental representations of it become and the better you get at assimilating new information.

Finding an Answer

The highly successful programmers have a complex and integrated knowledge structures - what we are calling mental representations - than the less successful programmers.

In particular, the better programmers have much more highly developed if-then structures: If these things are true about a problem, then do this to solve the problem.

Because their programming knowledge is better organized, the best programmers can figure out what to do more quickly and more accurately in any given situation and this makes them much more effective programmers.


The main purpose of deliberate practice is to develop effective mental representations. Mental representations play a key role in deliberate practice.

The key change that occurs in our adaptable brains in response to deliberate practice is the development of better mental representations, which in turn open up new possibilities for improved performance.

Experts monitor and evaluate their performance and when necessary they modify their mental representations in order to make them more effective. The more effective the mental representation, the better the performance.

To code well, develop a mental representation ahead of time to guide your efforts, then monitor and evaluate your efforts and be ready to modify that representation as necessary.

Mental Representations in Learning

Mental representations are not just the result of learning a skill. They can also help us learn. The best developers create high quality mental representations. Advanced programmers have a very detailed mental representation of the code they use to guide their practice and ultimately, their performance of solving a problem.

They use their mental representations to provide their own feedback so that they know how close they are to getting the program right and what they need to do differently to improve.

The beginners and intermediate programmers may have crude representations of the code that allow them to tell when they have made a mistake, but they must rely on feedback from their teachers to identify the more subtle mistakes and weaknesses.

Even among beginning programmers, differences in the quality of how the code is represented make a difference in how effective practice can be. The ability to detect mistakes depends on how effective your mental representations of the code are.

Good programmers not only recognize the various qualities of the code but know how to produce them - an understanding that requires its own sort of mental representation, which is in turn quite closely tied to the mental representations of the code themselves.

Spotting Mistakes

The more accomplished programming students are better able to determine when they had made mistakes and better able to identify difficult topics they needed to focus their efforts on.

This implies that they have highly developed mental representations of the code they were writing and of their own performances, which allowed them to monitor their practice and spot mistakes.

Furthermore, the more advanced programming students also had more effective practice techniques. The implication is that they were using their mental representations not only to spot mistakes but also to match appropriate practice techniques with the types of difficulties they were having with the coding.

Skill and Mental Representations

The relationship between skill and mental representations is a virtuous circle: the more skilled you become, the better your mental representations are and the better your mental representations are, the more effectively you can practice to hone your skill.

There is a bit of a chicken-and-egg component to this. You work up to your desired solution bit by bit, assembling the mental representations as you go.

It’s like a staircase that you climb as you build it. Each step of your ascent puts you in a position to build the next step. Then you build that step and you’re in a position to build the next one. And so on.

Your existing mental representations guide your performance and allow you to both monitor and judge that performance. As you push yourself to do something new - to develop a new skill or sharpen an old one - you are also expanding and sharpening your mental representations, which will in turn make it possible for you to do more than you could before.


Use a mental map of the program to code solution to a given problem.


What is missing from purposeful practice? What is required beyond simply focusing and pushing beyond one’s comfort zone? This is the topic of the next article.

[Deliberate practice]({% post_url 2020-02-06-deliberate-practice %}) is the most effective method. It is the gold standard, the ideal to which anyone learning a skill should aspire.