Performance Psychology For Computer Science and Math


In this article, I will discuss performance variation, methods of practice, and the fundamental problem solving skills that I believe contribute to high performance in technical fields. These insights are informed by documented concepts in performance psychology.

Performance Gradients

It is typical for people to believe their skill at any task exists at some fixed constant. The reality is that one’s performance follows a normal distribution. let us define:

  • A-Performance: peak mental clarity; also known as a ‘flow state’
  • B-Performance: Average performance; not incredible but enough to get the job done
  • C-Performance: Your worst performance; everything is a struggle

The Inch Worm Model

As your skill level increases at any task, gradually your A performance will become your B-performance, Your old B performance will now be your C-performance, and your new A-performance will blast into new frontiers. As such, skill progression occurs in an ‘inch-worm’ like fashion where the normal distribution slowly creeps forward one standard deviation at a time. Previously difficult tasks gradually become effortless.

Defining Mastery

Let us define mastery as the ability to competently execute a task in a state of C-Performance. I recall being adamant about proving this theorem to my father after a long early morning flight home to Dallas following a late-night dinner party in Boston just to make sure I had mastered the proof [For proof details see bottom of article].

I needed to demonstrate mastery to myself by proving this theorem in a state of helplessness and exhaustion.

Handling The Pressure

There is a common complaint among undergraduate students in Computer Science that goes something like “I am just a bad test taker.” But the reality is this: by default, everyone is a bad test taker. The nature of an exam dictates that you are in a controlled environment where you must overcome a set of challenges under tight time constraints. Furthermore, your performance across 90 minutes dictates 75% of your results after 3 months of hard work. Few people if any are naturally acclimated to such high stakes.

Yet, if you are unable to effectively recall and execute on your knowledge in a high pressure environment, is it going to be of any use to you in the first place? Life is full of pressures, and any high performance work environment will reflect similar if not greater challenges. Of course, I am not arguing that exam performance is a direct indicator of work performance. I am arguing that exams are a perfectly valid way to assess mastery in subjects where the quality of one’s work is closely coupled to one’s mental state.

I have taken exams in a state of sleep deprivation, hunger, and varying degrees of suboptimal conditions; and when I have truly known the material: I have aced said exams under C-performance conditions. The aim of learning should be to internalize information to the extent that it becomes second nature.

Categories of Practice

There are different ways to practice programming/math. Not all practice mechanisms are created equal. There are three categories of practice one can engage in. They are listed in order of their effectiveness.

Frontier Practice

The speed at which one enhances their skills is heavily dependent on how much ‘frontier practice’ they engage in. Frontier practice occurs when one is operating at the upper limits of their capabilities. Solving that really windy, and complex proof. Writing a solution to that very difficult dynamic programming question. Figuring out how to automate testing for a highly complex and out-dated C++ code-base.

Execution Practice

Execution practice is practice where one solidifies their understanding of previously learned concepts by executing them repeatedly until they become effortless. This is an important aspect of mastery but should not be overused as one can get comfortable staying within a certain difficulty level. Deriving those continuity proofs at lightning speed. Using a familiar web-application framework to create a MVP over a few days. This is the sweet spot where most of your work capitalization will occur.

Affirmation Practice

Affirmation practice can be considered the lowest form of practice. You have already mastered these tasks and are simply performing them out of necessity or to affirm just how good you are at them. This is not where growth occurs. Additionally, any exam or ‘test’ scenario should be at the level of affirmation, not at the level of execution.

How Much of Each?

Exactly how much time should be dedicated to frontier practice vs execution practice is something I have experimented with heavily. Frontier practice is crucial but will exhaust you of your emotional and mental energy fast. As such, frontier practice is where the greatest skill jumps occur but not where the greatest productivity occurs. Execution practice is the bread and butter of where you will produce your best work, but if you are not constantly pushing into new frontiers, the value of your skills will soon run dry.

Decomposing Problem Solving Skills

What are the fundamental skills that allow an individual to attain excellence in Computer Science and Mathematics? After surveying numerous professors and industry professionals these are the answers I have walked away with.


The ability to solve a particular problem, and generalize the techniques to other problems

Abstraction Example

You know the proof to

Therefore you are able to easily prove

This is an example of abstraction. You take the general method of proof by induction and are able to generalize this tactic to more complex problems. If you know the proof to the first problem, and you are unable to prove the one above, you might have weak abstraction skills.

Abstraction Practice Tactics

The only way to practice the skill of abstraction is to solve the hardest problems available to you in a given category. If you are learning continuity proofs in your real analysis class for example, do not be content with the homework questions given to you. Make sure you solve the hardest questions in the book that require you to integrate multiple concepts into a single problem.


The ability to execute previously memorized techniques and algorithms

Computation Practice Tactics

Solving derivatives, integrals, difficult equations, tough questions in probability, and practicing mental math are all ways to enhance your computation skills. While the subject matter of these questions is simple, the difficulty of these questions can be modulated infinitely.


While abstraction is the ability to generalize previously seen problem solving techniques, construction is the ability to derive entirely new problem solving strategies. This is the hardest skill to cultivate. I personally do not know how one can cultivate the ability to consistently produce breakthroughs and the quest for such powers will likely be the aim of my life until I die.

Construction Examples

Newton inventing Calculus, Archimedes discovering how to calculate the volume of a sphere and cylinder. Less impressive: solving that weird computer graphics question on one of my algorithm assignments

Bonus Proof

Prove that if 3 divides into a — b, then 9 divides into ‘a’ minus ‘b’ cubed.


[1] The Psychology of Poker — Jerrod Tendler

[2] Deep Work — Cal Newport

[3] A Mind For Numbers — Barbara Oakly

Originally published at on May 30, 2021.



Computer Scientist Blog: Website:

Love podcasts or audiobooks? Learn on the go with our new app.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store