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 we may realize a lot of those stem from what’s in the minds. Distractions, fears, wants, needs, anger, and especially more complex problems like indecisiveness and anxiety constantly get in the way of a person achieving their goals. One may not even notice how much such obstacles can get in their way on a nearly constant basis.
The biggest issue engineers new and old wrestle with is ego. Ego can really mess a mind up by causing oneself and those around them 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. While it’s largely beneficial to learn different languages than what is familiar, that’s not something to force on others. I am not better than another 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 one stack and one 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. Ego strikes when a team lead hinders critical discussion because it might make them look bad. It can be dangerously subtle if the ego subconsciously ignores advice that is not presented by an older, white-male authority figure. Ego needs 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 ego drives one to immediately start Googling for why it sucks. It’s especially present when a developer carelessly ignore obligations and pursue perfection.
One way to help maintain balance with ego is through meditation. Meditation will not make those issues go away, but through practice we learn to observe those feelings. As feelings come and go like a storm within the mind we carefully monitor them in an open, analytical but detached way, like reading the docs on a new programming language you’ve been meaning to learn.
Checking ego does not mean avoiding skepticism or criticism. Those are necessary discussions to help everyone grow and to keep each other and work in balance. But there is a difference between insightful, healthy criticism that benefits everyone and the ego-driven criticism that pulls everyone around it down to justify an unearned position of superiority. Meditation does not destroy ego on its own, but it does help one take a step back from their 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 while meditating one day, a practitioner does not become enlightened, and their ego is gone. Instead, quietly observing thoughts becomes a skill, the kind that degrades quickly if practice is not kept up. 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 egos in check and increase awareness of the mental obstacles that hinder personal progress. While I’m not anticpating transforming into a spiritual blog, I’ve acquired some practical experience to share to help people who are interested to get started.