Since about 2009, I’ve had the pleasure of working on several different engineering teams. Each one came with its own set of tools and methodologies, all contributing to my growth as a developer. Sure, I learned lots of “OOPs” and “TDDs” along the way. However, a lot of my growth was influenced by the characteristics of those around me.

Here’s a couple of traits I found most admirable in my teammates:

Inclusive, Open, and Cooperative

I’ve worked with engineers who were self-proclaimed “lone rangers”. They were extremely talented programmers, but despised working with others. If I needed help or wanted to share ideas, I was met with a sigh and an eyeroll. They often responded to criticism or feedback with a defensive, condescending attitude. It’s no surprise they left a negative impression on me.

Some of the best developers I’ve worked with were open to cooperating rather than solving everything themselves. They encouraged others to get involved in their projects, to gain fresh perspectives and spread knowledge. I felt like I was collaborating with them, rather than inconveniencing them. Even if they weren’t the technical “rockstars” of the company, these were the developers I built the most trust with.

Calm and Collected

Disagreements between co-workers are inevitable. It’s a fact of life. Over the years, I’ve witnessed everything from shouting matches to behind-the-back mudslinging. Arguments are bound to happen, but hostile interactions on any team drastically brings down morale.

I’ve always admired those of my co-workers who kept cool during disputes, even if it didn’t directly involve them. They remained as objective as possible, never resorting to personal insults. When anger and frustration began to fill a room, they tactfully calmed the vibe before it could escalate. Keeping composure during any conflict can be challenging, but it’s a trait I strive for, in or out of the office.

Curious, Adventurous, and Scholarly

There are days (or weeks, or months) where I feel jaded by work. Sometimes, working on new features gets overshadowed by the backlog of bug-fixes and refactorings. Working with the same tools or programming paradigms over a long period of time brings consistency, but they can get boring or go obsolete.

Learning something new can be uncomfortable, but some of the best developers I’ve worked with were willing to explore uncharted waters. They took time to experiment with other programming languages and frameworks. And even if no new technologies were adopted by the team, the experience offered new ideas or viewpoints. Curious and life-long learners in the field of software often have a wide breadth of knowledge.

Patient and Empathetic

Everybody makes mistakes, junior and senior employees alike. In my experience, overall team growth depends heavily on how mistakes are handled. I’ve worked in places where broken builds yielded public humiliation on team-chat. I’m sure we’ve all witnessed interviews where it seemed like the goal was to make the candidate sweat rather then gauge his/her ability to solve problems. In my humble opinion, negative reinforcement stifles communication, prevents risk-taking, and suppresses new ideas.

Patience goes a long way when working with other engineers, especially those with less experience. Looking back, I’m extremely grateful for those who were patient with my “noobishness”. They made me feel more empowered to ask questions, take criticism, and improve. I only hope to exhibit the same type of empathy towards anyone I work with.


In my years working as a software developer, I’m realizing more and more the importance of working with people as well as computers. In software, just like many other professions, personal interactions and relationships dictate how happy and productive we are. In the end, nobody wants to work with a jerk, no matter how technically “smart” they are. I hope I become more like the software engineers I admire.

What are some traits of your favorite teammates? Share in the comments below!