The ego barrier
Be the change you want to see even if it doesn't change anything right away.
An ego is a person's sense of self-esteem or self-importance. It can be detrimental to a person and those around them if received negatively.
I'm sure you've experienced the ego and superiority complex within the software development community.
It becomes a liability as it can restrict people from improving. They become blind to learning better habits, concepts, practices, and technologies through others.
For years there have been constant arguments within the community regarding which languages, frameworks, tools, and operating systems are the best to use.
Asking for help ends up in arguments with possible verbal abuse and belittling of skills and experience. StackOverflow is unfortunately an example of this. It's notorious for abusive commentary.
It discourages people from collaborating. Proposed solutions are shot down without constructive reasoning. Often the responses are "that's not how we've done things before" or "that's not what I prefer to do." These behaviors often nullifies the advantages of code reviews and pair/mob programming.
These examples highlight some barriers that are created for communication, collaboration and improvement. As software developers we are supposed to be rational thinkers but as human beings we are often driven by emotion.
On the other hand, without some sense of self-esteem or self-importance, how can we trust our own judgements and decisions?
The issue is not to break free of the ego, escaping it or transcending it. Rather it is to learn how to harness the ego and transform it to use it in a way that serves us and helps us to create a life worth living. ~ K. Ferlic in Shifting Consciousness
We can do this by finding ways to reduce the influence our ego has on us.
When the ego becomes imbalanced, all its hideous, negative aspects can act out. Therefore it is my intention to balance the ego, not to destroy it. ~ Steve Mueller
If your day is filled with accumulated frustrations just keep in mind that you have the power to choose what frustrates you and what doesn't. You have complete control of your mind and body.
There is no such thing as a perfect codebase or platform. Everything has issues on some level. And what difference does it make when someone interrupts you or doesn't listen to you?
Accept that nothing is perfect and make improvements where you can without being blinded by your frustrations.
Note that I am not advocating bad code or behavior. I'm simply implying that you don't need to build up frustrations that will one day erupt like a volcano. Choose what is important to you, action it or find an alternative.
Start observing yourself. At the end of your day, reflect on your behavior and reactions to certain situations. The better you get at this, the more you naturally start observing yourself in the moment.
You can also learn a lot through observing the positive and negative behavior and reactions of others.
If you feel the need to rant about something, ask yourself why you are so angry. Is there something you could have done to avoid the frustration or negative feeling you have? Is it actually worth being frustrated about?
People come from different walks of life with different personalities, backgrounds, and experiences. We are all on different parts of our journey and have our own subjective perspectives.
We aren't all expressive when it comes to communicating our ideas and intentions so well that everyone understands them. Sometimes the wrong words are used to convey a message. Sometimes there are language barriers and the person may be speaking to you in a second language.
Remember that nobody in your organization is stupid but mistakes will be made. Some people may feel over encumbered and are multitasking. Others may be completely disengaged due to certain circumstances that you may not be aware of.
There is a reason for poorly written code whether it be tight deadlines, inexperience, bad design, misunderstood requirements or software design, bad communication and collaboration or absolute defeat.
Have empathy when working with others and on codebases.
Try to tame your superiority complex. If you believe that you are the best developer in the world, you are most likely mistaken. You are bound to write shitty code that is going to make someone swear at you in the future.
You don't have to cling to your code. If someone suggests a useful improvement, then why not implement it? You need to come to terms with the bigger picture.
Accept criticism. Ask for it to be constructive if it isn't helpful to you. If there is a reason why you don't agree with the criticism you receive, try to convey the right message across to gather more information or start a healthy conversation.
Actually listen to what people have to say and value their opinions even if you don't necessarily agree.
Don't work in a silo. Share your knowledge, ideas and opinions but do it in a way that is kind and gentle. Abrasive behavior results in negativity and fear.
Don't be a bad apple in your team. Negativity radiates through a team and can cause its demise.
I don't mean manage your team or those around you. I simply mean, lead by example. Share your passion and knowledge that you have with others.
Coach and guide people in your team on the right path and explain why you believe it is the right path.
Encourage others to share their opinions, insights and to voice their concerns.
Positive behavior is an uplifting and powerful tool within a team.
It's not easy. You will make mistakes. Others will make mistakes. You will get frustrated. Others will get frustrated. It's a natural order of chaos.
Don't be defeated. Just keep trying and don't be too hard on yourself or those around you.
The bottom line is: don't be a jerk. Be the change you want to see even if it doesn't change anything right away.