The Art of Zen Programming - Part-III
Who is a Zen programmer? – Someone who can write incredible solutions by getting into the zone, at any time, at any place.
Is programming really an art? How do you get ‘into the zone’ while programming, and is that consciously possible to achieve? How do you write the best solutions that you can be proud of? ... Ever had such questions? I don’t know about you, but I had such questions, a ton of them over the years as I grew as an engineer and a programmer. In this multi-part blog series, I will go over some tips and skills to focus on mastering the art of simple programming and becoming the best version of yourself - a Zen programmer.
This is the last part - part III of the multi-part blog series. If you missed the previous parts, here is your link for the part I and part II.
Focus – Meditation is the key
Focus is critical for everything, and programming is no exception. It is essential to focus on the current problem and not worry too much about the past or future. It is necessary to learn from the past not to make the same mistake again, but at the same time, it is crucial not to get too influenced by past mistakes or not worry too much for the future. After all, you can’t control the destiny of your solution, but you can influence that by focusing on doing it right in the present moment.
Life is accessible only in the present moment. – Buddha
Focus is also important to make sure you are giving your best by being the best version of yourself. The more focused your mind is, the lesser the situations will be when you need to multitask. One key productivity killer is multitasking, and as a programmer, it is a vital thing to avoid. You may think you can do multiple things at a time throughout your day, but the reality is no human being can, at least not optimally. There is enough scientific evidence today that proves that every time you change even a moderately creative task, there is relevant context switching overhead happening in your brain, which drains significant energy. It is essential to plan your work to avoid getting into situations where you have to multitask. Suppose you find yourself in multitasking situations reasonably often, in that case, it is time to take a step back and assess why it is happening – you will indeed find a way to avoid it with planning, sometimes with tiny changes to your daily routine.
Apart from moving to single-tasking, what do I do to increase focus to be more creative and productive? The answer is simple – meditate, meditate, and meditate! In Indian culture, meditation was a vital part of daily life for thousands of years. Today, modern science is uncovering numerous scientific benefits of daily meditation as small as just five minutes a day! I meditated for 20 minutes a day for three years, and the benefits I saw all along the way are simply excellent. It will save you a lot of energy by reducing mind wandering and distractions. It will also help improve focus for creative tasks, like programming. If you haven’t tried meditation yet, just pick any app like Headspace or Calm and start like five minutes of meditation a day. That much you can invest for your productivity and improved mental health, can’t you?
Find you Programming Shifu
In Hinduism, Guru is considered supreme and honored before even a god. The festival of Gurupoornima is a dedicated day in the Hindu calendar to remember and show gratitude to Guru. Buddhism also has similar concepts, and so do some of the older cultures in the world. Guru is someone you follow by putting your faith and trust to point you in the right direction for the field. You can have different gurus for different areas of life, and programming is no exception.
If you had a good mentor when you started your career or somebody guided you well in a new job, they are your Guru. It is crucial to have a guru in every area of life. To improve as a programmer, find someone you can follow and learn from. If your Guru happens to be someone in your team, keep trust in them when you follow them and respect them. Guru need not be someone in the team. If you follow anyone expert in your field, then they are your Guru. It is important to differentiate between wishful thinking and honestly following your Guru with their advice. You can’t follow selective advice from your Guru – you either follow them or you don’t. Guru would help you when you are unsure what to do; they will also help you get better in your field and your improvement areas. It may be possible that you already have a programming Guru in your life, just you don’t think of them like that.
It is crucial to have a guru for your work-life, who can guide and help you get better. It doesn’t matter your and your Guru’s title or position, as once a Guru always a Guru, as this is also about honoring and respecting the knowledge Guru shares with you!
Be a kind, sharing soul!
Knowledge increases by sharing – I was taught that in school. I didn’t understand this till I became a technical professional and spent about a decade or more in the field. I would always think about what’s in it for me? Why would I bother spending time sharing my knowledge? Sure, it may help others, but I don’t have time again, so what’s in it for me? If you had any thoughts like that, then let me break the illusion – you are selfish. Sounds harsh? Unfortunately, that is the reality for you. But it is not permanent reality, and you can change, from now.
About a decade into the profession I am, it hit me hard that starting knowledge of freshers in the industry is still the same; people still do the same learning I did a decade ago when I started. Keen observation showed me that not many people share the knowledge, and the situation hasn’t changed much a decade since then. This has to change somewhere, and you can start with yourself. If you think about it, all knowledge you have is because somebody else shared it with you in some form – somebody wrote it in the book form, your professor taught specific subject knowledge in school. In professional life, somebody mentored you to show you your mistakes and how to learn from them. If you analyzed every day of your life from the time you were born and came till today, all your knowledge is somebody imparting it to you, in one form or the other. Don’t you then owe this to share back? You do.
Knowledge sharing is a fantastic feeling. Share in any form you like – write a blog, a book, help mentor someone new in your team, pick the format you like. Be a kind, sharing soul!
Parting thoughts …
Life is, after all, a journey and not a destination.
So that is about it. Some of the guidelines shared in this series helped me become a better professional, better version of myself, and I hope it will help you too. Some suggestions may sound obvious and basic, but I have seen people struggle because they lacked them and unaware of what to do about it. Each of the tips is simple to follow and implement. If followed, indeed, it will help you become a Zen programmer. Good luck on your journey!