In the last few years, I developed an efficient routine to improve my abilities as a developer. I contributed to open source, read a lot, wrote blog posts and was active in social networks. Yet, I had a constant feeling that it's not enough - that I'm not good enough. I thought I had to keep working hard, otherwise I'll go downhill.
At some point I realized I was very stressed, and that I was concerned all the time, and that I couldn't rest properly. I couldn't accept positive feedbacks and found reasons why they are wrong. Generally speaking, I was very hard with myself. At some point I became aware of this situation and decided to make a process to change it. Now, a few months later, I feel much better with myself. I wanted to share my process, so that it will help others out there in similar situations.
Feel like you're working hard and it's still not enough? Are you unhappy with your job even though it's pretty good? Are you generally stressed about your value as a developer? This post is for you. Take a few minutes to read through - you'll get a new perspective.
My Previous Routine
In the past, I had a strict daily routine. It aggregated to the following weekly agenda:
- Reading a tech book - 1.5 hrs/week
- Side projects, open source or writing - 10 hrs/week
- Reading and keeping up to date - 3 hrs/week
Usually, if I had spare time, I spent it on side projects or reading. I didn't rest.
I learned a lot and created a lot of content. I was confident my work "pays off".
When Cracks Start to Show
With time, I noticed some things about myself:
- I was always stressed.
- I couldn't rest properly.
- I was very sensitive to issues at work, and they influenced my mood.
- Even though I got positive feedbacks, I wasn't able to accept them. I found reasons why the feedbacks were wrong, and gave myself negative counter-feedbacks.
- I had "tunnel vision" when encountering issues. I couldn't see the "big picture". I was too busy being concerned how I'll be perceived.
- I constantly swung between finding flaws in myself and in the environment (the company, the process, my coworkers).
- I thought about work day and night. I enjoy thinking about technical challenges, but this was a different experience. It troubled me where I was wrong, and what will my coworkers/supervisor say.
- I had a very strong imposter syndrome. I felt less professional than my surroundings and was afraid people will find out about it.
For a long time I thought that this is the price for having a good job, and that I have to accept it. I thought that if I'll learn and do more, I'll feel better with myself, since I'll be "more professional". I remember telling myself "you can learn more, instead of resting in the evening - spend the time by reading some more". So I pushed it a little more.
The Awakening
In 2020 Covid came along, and a personal disaster happened about at the same time. I started thinking about how I spend my time and what I sacrifice. I realized that the routine I'm having was taking its toll. It led me to some serious thinking about my goals and their prices.
I talked about this a lot with my wife, who is — luckily — a personal consultant. This led me to a decision to make a change. I adjusted my goals, determined to be happier.
Now, these are some big words. What does being happy even mean? Don't worry, this post won't get a spiritual twist 😜
"Happiness" a profoundly personal definition and will differ for each individual. For me, I wanted to have a balance between:
- A challenging and rewarding day job.
- Time to spend with my family and friends.
- The ability to maintain my hobbies.
Or in other words: retaining a good job, without allowing it consuming all my energy, all the time.
I started a process to achieve my new goals.
Becoming Aware
My process took part in two seemingly orthogonal parts. The first one is simple: I reduced the "extra" time I spend (side projects, reading, etc.) to an acceptable minimum. I still spend time, but considerably less. But, this isn't enough by itself. I can't "switch off" the part of my brain which constantly judged and said "it's not enough".
This was the second part, which required some more work. I observed at my thoughts and feelings about not being good enough. I noticed the following:
- I thought I needed to know everything. I was afraid of encountering the unknown since it felt like a test. Each time someone else knew something I did not, I felt very bad. "I should have known this" was a common thought. On hindsight, I tried avoiding the unknown by trying to learn as much as possible.
- I was very concerned with how I'm perceived. This made me feel occasionally under test (even when I wasn't). When struggling with a technical issue, the soon-to-come feedback troubled me more than the issue itself.
- I had unrealistic ideals. I know a few very successful individuals, and I take them as role-models. Yet, unconsciously I thought I can have all the positive aspects from my idols (writing blogs, contributing to open-source...), without having any of the negative aspects (the sacrifices).
- I understood that my ideals made me very judgmental about myself and my surroundings. When things didn't go as I imagined I became upset. It could have been something in the workflow, or a coworker that didn't see things as I do . The gap between my ideals and the reality made me believe (sometimes) I don't fit.
- Almost all my feedbacks were positive. This part is important - my feelings about not being good enough were not based on any external feedback. Objectively, I was doing ok.
After learning about my thoughts and feelings, I started making cognitive changes.
Changing the Narrative
To achieve my goals, I needed to cognitively change the way I think. This may sound abstract, and it's easy to be cynical about it. However, it is feasible with a lot of hard work.
- I accepted I CAN'T have it all. I'm no superman. I adjusted my ideals and "lowered the bar".
- I remind myself where I'm doing OK. I don't have to be overwhelmingly great, being OK is good enough. I allowed myself listening to external positive feedbacks.
- I decided to gain meaning from myself, and not my surroundings. If negative feedbacks show up, they shouldn't affect my self-esteem. Having areas that need improvements don't make me a bad developer.
- I accepted I can't know everything. Learning is great. But, naturally, it is not possible to know everything. It is GUARANTEED I will bump into things I don't know, and someone else will. No one can escape this scenario. This led me to an important understanding. Professionalism is measured not only by what you know, but how you learn what you don't know.
- I accepted that people have different values than me. Sometimes I have opinions of how things "should be", that weren't in line with my coworkers' opinions. In times where I couldn't convince my colleagues, I felt very bad. Instead, I now allow myself letting go of some of my ideas. "Chasing" them and trying to make them happen at all cost was frustrating.
- I accepted my judgmental nature. When a judgmental though came to my mind, I noticed it, and labeled it as such. I doubted it instead of accepting it as is. Eventually, I could separate cases where things are truly "bad" or rather they just don't match my ideal (which is my problem). I moved from a passive point of view ("This is bad" or "I am bad") to an active point of view ("Should this be improved? Can I improve it? What can I do?").
- I decided to spend less time "learning" and "pushing myself forward". Instead, I spent some time with non-work things. I learned to juggle. I improved my chess skills. I exercise more. I even play more PC games (an extreme luxury in the past).
Now, I know what you're thinking. "Huh, that's a one way street for becoming a mediocre developer, or worse". Is it so?
Slowing Down ≠ Stopping
Naturally, this change may slow my career progress. However, the pros beat the cons. I don't feel stressed, and I'm more energetic. Non-work activities were more enjoyable. I'm more concentrated at work, and I solve problems quicker. When incidents come up at work, I'm much more calm and focused. Innovative ideas come to my mind more often, and I have time to implement them. I learn and create because I want to, not because I have to. Once you realize you don't really chase anything - the meaning of speed matters less.
Conclusion
Being a developer is very demanding by itself. On top of that, each person in the dev community has something to say about what you should learn, and what you should do. FOMO is inevitable, and it's easy to feel bad (or simply not good enough) with yourself.
I wanted to share my story, maybe it will help other devs with similar feelings. My main message to you is: Relax, breath. Remember to slow down sometimes. You're doing alright 🤗
On a more personal note (if that's even possible), it was very difficult to me for write on such a personal topic. I'd love to hear your thoughts about this - feel free to approach me at any way (comments, DM, emails - you name it)
Latest comments (9)
Thanks a lot for sharing it! I think I suffer from the same things, and also I'm one that thinks about a lot of things to do, starts some of them, and barely completes one/two of them (that's why I love the The Mistake Smart People Make: Being In Motion vs. Taking Action article). At the same time, I know how to focus and accomplish something (I wrote about the topic here), I have perseverance, I can't say I do nothing (45 articles written in 4 years, 20 taught courses, 9 given talks in 24 meetups/conferences) but I am not totally happy about what I do at the moment... and this article is very inspiring, thank you so much for sharing ❤️
Thank you for the reply, Stefano! :)
The "Motion vs Action" article is very interesting, it changed my perspective of a few things. Your article is also very inspiring - you achieved amazing things! 👏
I think it's in our nature to never be completely happy with where we are at the moment. It's the same mechanism that makes us always learn and progress :) I believe we sometimes need to sit down, relax, look around, and be happy with what we achieved so far... (Easier said than done, obviously)
Indeed. Also, we need the right expert to help us, I tried looking for one in Italy without success (I think it's crucial they speak your own language). A similar experience have been told to me from a former colleague of mine that told me "everything changed when I understood howe my brain works" 😊
It's truly a fascinating subject. My wife just happen to be doing exactly this - helping and counseling tech workers with emotional well-being. (She started her business not long after I wrote this article 😊). If you want, she has quite a lot of posts on her LinkedIn page. The content is in Hebrew, but we saw that the auto-translation is working quite well!
Be reading some of the translations... yes, this is exactly what I would need ❤️
Very thoughtful and well written piece. Thanks for sharing this
This speaks volumes to me, as I have experienced similar mental realizations. What I find to be extremely beneficial to me is actually focusing more on the reading and observing. Sometimes when you read about other people's situations and/or approaches to problems, it really sheds to light what really does bother you or causes issues for you. I used to think that in order to get better, I had to code more and refine my work. The real growth comes from slowing down, like you said.
When you run as fast as you can, it makes it harder for you to see the hurdles in your way. Taking time to read and think, even during a project in active development, can significantly improve morale and efficiency in the long run. This is an extremely difficult shift in how many engineers function, so it is refreshing to see others who can come to that realization.
Thank you for sharing your thoughts, Justin! I'm happy to hear that I'm not alone with these feelings.
When you take the time to read and think - is it usually about specific topics? Or is it about general topics that interest you and you want to learn about?
I typically scroll down feeds and explore rather than go in with a purpose. If I have a problem I am working through, the content isolation is more specific, but unless I have a goal, I explore any sort of relatable topics.