A month ago I was constantly feeling stressed out, tired and not getting proper sleep. To put it simply I got burned out. The interesting thing is it is not because of my official work pressure. Currently, I am working with a cool client, we are delivering the features on time and the team is friendly…I have nothing to complain about my official work. So I thought (and tweeted) it might be because of the things I do in addition to my regular job.
Doing a regular day job, learning a lot of new technologies to keep up-to-date, blogging, book writing etc... I manage to do it for 15 years...and I came this close to burn out...— Siva (@sivalabs) November 2, 2021
I think it's time to take a break.
Bye bye and have fun.
Apart from my regular job, I do teaching, blogging and also always learn something new every day. As I was feeling stressed regularly I realised something is going wrong, and I decided to take a step back and fix this before it gets worse.
As a first step I did 2 things to think clearly.
- Stop learning anything new that is not required for my official work
- Stay away from Twitter (more on why staying away from twitter helped me later)
How the problem started?
Usually I prefer to be prepared for my upcoming work. So if I know that in my next project we are going to use GoLang I try to learn GoLang even before project starts. We all know we can’t learn everything and be ready for any future task. But I try to learn as much as I can.
And this is what I have been following since the beginning of my career. In a typical 8-hour work day I spent minimum 3 hours for learning… every day. Because of this continuous learning I was able to complete my official work on time and has plenty of time to learn more…and the cycle continued…
This approach of futuristic learning helped me in several ways:
- I could learn new topics with a free mind without any deadline
- As I already know how to implement a feature, when I pick up the task I was able to focus more on how to do it in a better way
- I could give reasonable estimates
But the problem with this approach is I never know “how much is good enough to say I know this framework/library”. If I have a task at hand then after finishing it I can feel that accomplishment because I was able to complete that task. But in this futuristic learning process there is no such a milestone to feel that kind of accomplishment.
No matter how much I learn, the days are still ending with a feeling of “there is more to learn”.
Couple of months ago I got really excited about Kubernetes and I learned a bit about it and some of commonly used k8s tools. Kubernetes, Pods, Deployments, Services, Ingress, Minikube, K3S, KinD, Skaffold, KNative, OpenShift, Minishift, CodeReady Containers, GitOps, ArgoCD …and the rabbit hole goes on and on… In addition to that I got curious about Quarkus, OAuth using Keycloak, Tanzu Community Edition etc.
I learned a great deal about these topics, but everyday I go to bed with a feeling of I am not sure whether I learned enough of these and there could be more to learn. But how can I validate whether I learned “good enough” of these technologies???
Then I got a bright idea:
To build an application with a bunch of Microservices and React/Vue based SPA UI, secure them with OAuth Keycloak, create infrastructure using AWS CDK or Pulumi or Terraform and deploy them on AWS or Azure. Then setup CI/CD infrastructure using Kubernetes, Jenkins/Github Actions and ArgoCD.
But the problem is to run all these things I need better hardware. I have one MacBook Pro with 16GB RAM, another Mac with 8GB RAM and one Lenovo Laptop with 8GB RAM. I thought of buying a beefy laptop to do all these stuff.
Is there any non-apple laptops available with 64GB RAM in India? I couldn't find any availability on Amazon...— Siva (@sivalabs) October 21, 2021
Sounds like a good plan and I am ready for the adventure.
The next day I was having my breakfast and out of nowhere I got the feeling that “What the fuck I am doing!!! Why I am trying to do all the things which is supposed to be doing by an entire IT department?? What I am trying to prove and to whom??"
I don’t know exactly what is wrong, but I realized I am doing something terribly wrong.
The Root Cause Analysis
Once I realized I am doing something wrong, I wisely took the decision of taking a step back and unplug myself with these crazy ideas and think through it.
1. Fear Of Missing Out (FOMO): Not everyone gets to work on latest and greatest technologies all the times. When you see everyone around you talking how they scaled their app using the latest technologies it infuses a bit of fear of getting outdated. So, to compensate the lack of opportunity to work with those cool technologies I was thinking of doing all those crazy things.
2. Not knowing how much learning is “good enough”: As I mentioned above, my futuristic learning process doesn’t tell me how much is good enough and still leaving me with the thought of “there is more to know”.
3. Social Media: While Social Media is helpful in many ways it can also add more stress to you. There are 16-year old front-end devs lecturing you “how to live a better life”, the so-called “your REST API is not really REST API” or “You are doing DDD wrong” backend gatekeepers. Looking at these people you may start wondering “Is everybody figured out how to live life and do software engineering except me??"
Once I understood what is going on, I took few steps before things getting worse.
- I just stopped learned anything new that is not required for my official job
- I took a break from Twitter which is the only social media app that is adding more pressure to me
Guess what? With these 2 simple steps I got 4 extra free hours in a day :-) I spent the time with my son and listening to my favorite music and sleeping more. I also watched my favorite shows (FRIENDS and Game of Thrones) one more time.
What about my futuristic learning which helped me throughout my career?
I just needed to make a small change in the process. Instead of having an open-ended goal like “I will learn OAuth today” I have more specific goal like “Today I will learn OAuth using Client Credentials”. With this small change, once I complete my learning task for that day I stop and end the day with a satisfaction of “I learned OAuth using Client Credentials today”.
The fun fact of life is “You most likely won’t discover anything ground-breaking new. You may re-discover the true meaning of what you already read in your 6th grade”.
We all studied the phrase “Health is wealth” from our childhood days itself. But we forget it and trap into the rat-race. While working crazy hours to achieve your career goals looks great, but not at the cost of health. Having balance is more important.
There is more to life. Take a break and go to places. The worst thing that could happen to you is having pocket full of money but not enough energy to spend it.