In the first week of 2017 I changed jobs, I started in a new company after a little more than three years on my last job. It was not an easy decision to make because it involved me moving to another city and another province.
But the main reason why it was a tough decision to make was that I really liked the team I was working with. And that's exactly what I want to talk about. What makes a good team, at least in my opinion.
We were (when I was there), five developers, one product owner and one person responsible for quality and I'm proud of have participated in the selection of all members of the team. But, although I've taken part in the selection of all members I can't claim that I or others in the team had all that I'm going to say in mind, I guess this is more of a realization after the fact.
So here are a few of the characteristics of that team that made it really special and I'd like to point out.
I was the developer with the longest career in the team, but as many people will say (and I agree), time alone is not enough to make an experience. Because working so many years doing the same things in the same way it's not growth, you need to be challenged.
So it's great to have people around you that will constantly challenge your ideas, be that with other ideas, many times better ideas, or just by asking good questions.
You don't want a group of people that think the same way all the time.
The Human Perspective
I am certainly at fault of many times forgetting about the human side of things. I like the technical aspect of developing software, but for many times I forget that some actions and/or decisions might not be so well taken by others. So it is great to have at least someone on your team, that is always worried about the impact of the team's decisions on people.
Attention to Details
It is extremely important to have people in the team that have the attention to details and consequences that some decisions might have.
Do you want to do that big refactoring? Great, the code will definitely be better after it, but what impacts it might have? Is it really the best moment to do so? Where should we draw the line of the refactoring?
Same thing when adding new technologies to a project. It's very important to have people that think about those issues.
Eager to learn
It's impossible to keep up with everything tech related. There's always new versions, new frameworks, new languages, new techniques, so it's good to have different members of the team who are constantly learning and pushing the rest of the team to learn new things.
I think this is probably the most important characteristic of a great team. Having members that are open minded. First of all, it's not my team, nor it's your nor anyone's team. I was there "I did my time, " and I left. The team, the project and the software will go on.
I'm saying that because it does not have to always be the ideas of one person, or approved by one person that should be implemented and I'm looking at you "team leader."
Good teams take in consideration in an equal manner the ideas of every member of the team.
So yeah, these are a few takeaways that I have. I'm not saying that I was working on a perfect team, there's no such a thing. And in every place, there's always issues. All I'm saying is that I had a great experience there and I hope I'll live that again on my new team.
What are your takes on what makes a good team?