Inner Game of Software Engineering
Prathik Rajendran M
Sr Staff Engineer @ Coupang | Distributed Systems | Software Architecture
Recently I finished reading a book called Inner Game of Tennis by Timothy Gallwey and it got me thinking about how that applies to software engineering.
There are two types of mental processes going on in your brain, you can call it self 1 and self 2, system 1 and system 2 (coined in the book Think Fast, Think Slow) or your conscious brain and your sub-conscious brain. The way your self 1 talks to self 2 is the most important factor when it comes to high performance, the remaining things are the outer games which are directed by what is happening in your inner game.
Be it tennis or software engineering, the inner game is the most important to win.
When we are doing any form of sport or work, the usual way is to criticize the past behaviour, then make a mental instruction of how to change, then trying really hard to bring that change and finally being critical of the result, the loop goes on. This is also a mentally agonizing loop.
This kind of behaviour comes from a place of ego. Where our self 1 wants to be in control and tries to take control by sending out critical instructions to self 2. It also comes from a place of lack on trust on self 2.
I have personally noticed this in my early years, especially while practicing on leetcode or similar competitive coding websites. The cycle went like pick a hard problem, try a lot of solve, if you are unable to solve really beat down yourself and be critical, eventually go crawl towards the solution.
I broke this cycle by reading the book "A mind for numbers" by Barbara Oakley, especially the technique of solving the problem four times. I will not digress into that here, nor do I do this that diligently anymore because its been a while since I've actively engage in competitive coding.
The way to conquer the inner game is to let go and trust your self 2. This is where the real "aha" moments or insights happen. You get from A -> B via self 1, but if you need to get through to A -> D via an insight, that can only happen with a well trained sub-conscious mind.
领英推荐
The inner game, high trust loop is as follows when it comes to physical activities, consider you want to improve your hand writing, try the following process:
Over time you will see that the writing keeps on improving, the most important part is the non-judgemental observation. You can apply the same framework to any physical activity, be it running (visualize and observe your form or breathing), tennis or anything else.
This process is easier for physical activities, but when it comes to software engineering the process is slightly more complex, engaging both self 1 and self 2 is more complex than visualizing a physical process. However what worked for me is the follows:
Overtime, as you repeat the loop over and over again, you will begin to trust the system. Once you are done with the evening review you rarely need to think about work again, because you know you will execute really well the next day.
The steps above help you be on your A game, because you know what are the tasks you have for the next day, you have a mechanism to keep on improving how you go about your day, this keeps you engaged in a meaningful way, this is what it takes to master your inner game in knowledge work such as software engineering.