Inner Game of Software Engineering

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:

  1. Observe how you are writing non-judgmentally, letting go of self 1 criticism is the key, just observe like a camera would do, there would be no positive or negative feelings attached to it, you need to be like a camera recording the hand writing
  2. Once done, visualize mentally what the neat hand writing would look like, the language of self 2 or subconscious is more visual than via language
  3. Now start writing again once you are done with the visualization, again observe non-judgmentally
  4. Keep repeating this 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:

  1. During the work day, keep taking notes on ideas, thoughts, todos etc.. that come to your mind, this is the non-judgemental observation or recording that happens through out the day.
  2. In the evening review the notes, move all the todos into a system that allows you to track all your todos. Move the thoughts and ideas to a reference system that you can look into when needed.
  3. Go through your todo list, set the key tasks you want to accomplish the next day based on your priorities and think about what are the outcomes of accomplishing those tasks ie what are the results, what good looks like, reflect on what tactics you want to apply for the next day.
  4. Trust yourself to execute well on the next day based on your plan and trust that you will get it done, keep a phrase such as shutdown complete that you say once the planning is done.
  5. Repeat the process.

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.

要查看或添加评论,请登录

Prathik Rajendran M的更多文章

  • Bringing Your A-Game

    Bringing Your A-Game

    A-Game is basically when a person is operating at the peak of their abilities. I have come to the conclusion that it's…

    2 条评论
  • Building an API with Spring Boot

    Building an API with Spring Boot

    I have never been exposed to the Spring Ecosystem, till I joined Coupang , we are pretty big on Spring Framework…

    1 条评论
  • Building Things, Part 1: Finding that one person to build for

    Building Things, Part 1: Finding that one person to build for

    Building Things is a series of articles on what it takes to build a useful product written from an engineer's…

    1 条评论
  • How to ensure your customers DON'T buy your product :)

    How to ensure your customers DON'T buy your product :)

    Back in 2018, I set out to buy a car. I was clear about what I wanted - an SUV, Automatic Transmission, fuel-efficiency…

社区洞察

其他会员也浏览了