You might be thinking, “No it’s not! It’s completing my not-yet-open-sourced AutomaticCrudAbstractionLayer UI to communicate with my upcoming patent for my FormAbstractionOnTopOfAFormLayer wrapper to dispatch EventNodes to my reducer service to deterministically update my store state. Then I’m going to produce a framework with it to build a platform and sell it a software-as-a-service product!” Perhaps in a way, that is an obstacle, but then let’s ask, “What gets in the way of me accomplishing that?” Some more more practical reasons may come up, but eventually you may realize a lot of those stem from what’s in our own minds. Distractions, fears, wants, needs, anger, and especially more complex problems like indecisiveness and anxiety constantly get in the way of us achieving our goals. You may not even realize how much they get in your way on a nearly constant basis.
The biggest issue I’ve seen engineers new and old wrestle with is ego. Ego can really mess us up by causing ourselves and each other a lot of pain. An uncontested, poorly researched theory of mine is that building software makes us feel like geniuses and without care, we start to believe it.
When we get to that point we believe every line of code, thought, or criticism must be genius as well. I’m guilty of moments like that myself. Sometimes when discussing software dev with other programmers of other languages part of my brain foolishly screams, “TELL THEM ABOUT CLOJURE CLOJURE IS AWESOME CLOJURE IS GREAT KEEEP THINGS SSSIIIMMMPLLEEE USE CllooJjjuurEEE” over and over and over again. That is my ego. The truth is I prefer Clojure because it feels productive, and enjoyable to me. But others have tried it and moved on, some will never try it for various reasons, and others may find it simply doesn’t meet their needs or spark joy in them like it does for me.
They’re not wrong, they’re not unenlightened. I think it’s to the benefit of everyone to learn languages that work differently than what we’re used to, but that’s not something I should force on others. I am not better than them because I’ve found a language I prefer over the conventional options, I’m not better because I did try to learn something different than what I’m used to. Time is expensive, I can’t be upset or look down on others because they want to spend it differently.
Ego is not good for us because it stops us from growing. It wants to tell us we’re right no matter how much research may indicate otherwise. It tells us our stack and our way is the best way which is difficult to prove given that there are nearly infinite ways to accomplish anything in software engineering. It’s the CTO that refuses to listen to an intern because they’re an intern. It’s telling an employee that it makes you look bad if they point out a subtask they need your help with is blocking them in the morning standup. It can be dangerously subtle if we subconsciously ignore advice that is not presented by an older, white-male authority figure. Ego is when you need to be the smartest person in the room. It’s when a contact tells us they’re excited about a new tool, framework, or language and we immediately start Googling for why it sucks. It’s especially present when we carelessly ignore our obligations and pursue perfection.
One way to help maintain balance with your ego is through meditation. Meditation will not make those issues go away, but through practice we learn to observe those feelings in ourselves in a openly, analytical but more detached way, like reading the docs on a new programming language you’ve been meaning to learn.
I’m not telling you to not be skeptical or avoid criticism. Those are necessary discussions to help us grow and to keep ourselves and our work in balance. But there is a difference between insightful, healthy criticism where everyone benefits and where the ego doing everything it can to pull down everyone around you. Meditation does not destroy ego on its own, but it does help us take a step back from our thoughts and reactions to start questioning where they come from, observing them from afar instead of riding them like a roller-coaster of destruction.
A challenging aspect towards this is understanding that we’re not going to meditate one day, become enlightened, and then no longer have an ego. Instead, quietly observing our thoughts becomes a skill, the kind that degrades quickly if we don’t keep up with practice. If you’re serious about giving it a shot, make it a routine. Make it a key part of your day and give it your full attention. It is not easy, but it is simple. 😏
Follow along next week as I discuss how practicing meditation can help us as software engineers keep our egos in check and increase our awareness of the mental obstacles that hinder our progress. While I’m not anticpating transforming into a spiritual blog, I’ve acquired some practical experience that I would like to share to inspire those who are interested to get started.