October 3, 2019 // By Jeff Nordquist
I’d like to share my thoughts on what may be the most important, make-or-break aspect of software development:
Reason #3: I love the people I work with
Software quality is directly related to the quality of the team - and that goes far beyond basic coding skills. It’s about the quality of the people, and the way they treat each other. No amount of process or automated testing can overcome a team that can’t work together.
I’ve been fortunate to work with several really wonderful teams in my career. Different companies, different products, different environments - but they all had certain things in common. I think these are the cornerstones of a good team:
Respect and Trust: We never had to actually talk about this. It was just built in to each person’s personality. And, in turn, we all worked to earn that respect and trust. That meant being honest and humble when we were struggling, offering to help whenever we could, and avoiding ego trips at all costs.
Support: We fostered an environment where everyone felt comfortable speaking up when they needed help. And we never felt like we were “inconveniencing” someone by asking for their time. Just the other day, I made a passing comment to a senior architect about some code that wasn’t quite coming together, and he set up a meeting during his only free half-hour of the day to work on it with me.
Passion and Integrity: We cared deeply about putting out a good product. Whether that meant the software itself, the documentation around it, or the quality of the user stories, nobody wanted to produce anything less than their absolute best. When something wasn’t quite right, we cared more about fixing it than assigning blame.
Intelligence and Curiosity: We all brought something to the table - and everyone kept an eye on that table to see what they could learn. We had people with a wide range of experience, but I saw many cases where senior devs asked the “new kids” for advice, and everyone learned from it. “Intelligence” doesn’t just mean “knowing all the things”; it means being humble and knowing that you can always learn from everyone around you.
Not just “A” Players: We had some exceptional developers, but we also had new people who needed lots of guidance. What made these teams great was that the senior-most architect would happily sit down with the newest junior dev to help them - and that junior dev was hungry to apply what they’d learned. Everyone understood that investing in each other was critical to the success of the team.
Think of the best team you’ve ever been on. What made it so great? Did your teammates respect and support each other, and have passion and curiosity? Did they keep their egos in check? I’d love to hear your thoughts - especially if there are other cornerstones of a great team that I’ve missed! You can find me on Twitter @jeffnordquist.