I was listening recently to an episode of the Tim Ferris Show with Jocko Willink answering questions. He answered a question from a listener: “How do you shut internal doubt down and negative chatter out of your head during critical must-do moments? How do you change negative emotional focused states when something or someone knocks you off focus?”
First of all, internal doubt is not necessarily a bad thing. And I’ve said this before about fear of failure. Because internal doubt – first of all that’s a form of humility, and obviously humility is a good thing, and that internal doubt and that fear of failure is the thing that keeps you up at night preparing, that’s the thing that’s not going to let you cut corners. It’s the thing – it’s that little voice, that little voice inside your head that’s whispering, ‘Rehearse again, practice again, do it again over and over again and that’s the voice that says to do everything you can to be ready.
Humility, and constant preparation. Do it over again. Practice again.
Do you want to rise up to meet new challenges? To perform under pressure? Or do you want to fail when it gets hard? Give up when the challenges seem insurmountable?
Not everyone is blessed with natural gifts and talents to the same degree or in the same way. Some of the people who walk this earth are truly more talented than us. They glide blissfully through whatever life throws at them, and look good doing it.
But some of the people we may think are in that category really aren’t. They just work harder than you. They prepare. They train. They think about what might go wrong. And they prepare to meet those challenges.
Self-doubt can be crippling when you let it become nothing more than a voice in your head that says “You can’t do it.” But if you flip that around into a question – “What is necessary so that I can do it?” – you start to see wins accumulate. Your losses become lessons. Your victories become validation that push you further. You start to wonder what else you can do.
Training as a Developer
What kind of training should software developers be doing?
There are four basic types of training we need to be doing to be effective: Physical, Mental, Emotional, Technical
Physical
The soul and the mind are not separate things apart from our bodies. We can’t expect much from our minds when our bodies are falling apart.
At the bare minimum, this means we have to eat well, get some exercise, and sleep.
Depending on your inclination, making this into concrete goals (running a 5k, dead-lifting your bodyweight, learning Jiu Jitsu, etc) can raise your energy and focus tremendously, and make your training sessions more effective. But unless those things excite you, keep it simple and do enough to keep your energy levels up.
I’ve personally found probiotic supplmements and occasional fasting to help eliminate brain fog and fatigue. So if you’re having a problem that diet and exercise don’t fix, start trying new things.
Mental
Mental training is about enhancing your cognitive abilities as well as managing your mental state. This isn’t about becoming more knowledgeable about your particular specialty, but rather about learning how to think more clearly, and to think more creatively.
This can be accomplished by doing things that strain your mind, such as reading a book on something challenging, doing puzzles, solving problems for fun, playing chess or sudoku or Go, or basically anything that stretches you a little. It helps tremendously if you enjoy it, since 15 minutes of engaged activity is better than an hour where your mind won’t focus.
To stretch your idea muscle, try coming up with a list of 10 ideas a day to exercise the mind. That kind of training is great, and will help you with lateral thinking as well. It should be done along with other kinds of activities, such as reading or listening to podcasts, etc. You can’t come up with great ideas if you’re not feeding your brain with material.
Finally – the last mental training needed is to manage your internal conversation with yourself. You need to keep yourself from worrying and being overly negative and critical. Root out thinking that is draining your energy and motivation. This is because…
Emotional
Emotional health starts with your relationship to yourself. In order to push through the harder parts of projects (and life) you need to believe you can. You need to be able to show up when you don’t feel like it, and work through (or at least tolerate) bad moods and occasional depression. Most of these things lift, especially if you keep your mind focused on the right things.
There is another aspect to emotional health which some call spiritual, which involves cultivating gratitude and peace, and learning how to have perspective. As a practicing Catholic, I think of my spiritual life as something beyond those things – as my relationship with Christ. Cultivating silence, peace, and gratitude are essential to that relationship (and to any personal relationship, for that matter), and are part of my daily practice to grow in my faith.
If you don’t have a religious practice, you will nonetheless find it hugely helpful to cut out time for daily quiet (no distractions), cultivate gratitude, and learn to accept what is beyond your power to control.
On top of the foundation of physical, mental, and emotional strength, we add technical training.
Technical
Technical training is last on this list, because it sits on top of good life habits. Being able to learn has a lot to do with our physical, mental, and emotional health. Being effective day in and day out requires a strong foundation.
Obviously, we should be learning the tools we use every day in our job as well as we can. If you work in LAMP primarily for your day job, you should know it inside and out. If you haven’t done this, that’s a great place to start.
Beyond that, learn a new language, or read a technical article on a new technology. Build something for fun. (Having trouble thinking of things to build? Work on your idea muscle. Make a list of 10 or 20 things, even if they sound like horrible ideas.)
Finally, involved in your technical abilities are meta-technical skills. These include soft skills, learning how to learn, asking questions well, and thinking about the bigger questions that drive the creation of the technology that you are working on.
Learn to think bigger, look at the big picture. Learn how your boss thinks, how business works.
At some point, you start to become a force for change, because you’re the best developer you can be but also understand things at a higher level. You will be able to manage your boss better, and make larger contributions. You will gain credibility in your organization.
Summary – A Daily Practice
Having a daily practice is essential for building a strong foundation on which you can build a successful life. It is essential to strive every day to do something on your list that can help you improve.
Think of your life as aspirational. You won’t always check all the boxes. But try to remember what kind of person you’d like to become, and work a little bit every day on yourself, so that you can be more effective in making your contribution in the world, and living the kind of life you’ll be proud to live.