Not so long ago, programming was closely related to a random guy locked up in a basement doing his job all by himself. For better or worse things have changed, not only in the very nature of programming, that abandoned the ostracism and embraced collaboration, but also in the figure of the protagonists of this story: the programmers.
Their habitat is completely different nowadays. They no longer crave for dark, smoky dungeons and their code is probably out there, open to whoever feels like changing, improving or commenting on it. There are more than 15 million people on GitHub, and if 20 years ago someone fancied the idea of creating a community on code sharing to build glorious, fantastic software, well… the response in the best-case scenario would be no better than endless laugh and ridicule.
The dynamics of the job changed because we are not lone wolves anymore, we are part of a pack. However, because nothing comes for free in this world, the shift brought new challenges to be dealt with. If you were blessed, you have been working in strong and organized teams, with people you have a bond and following a clear direction. But more likely than not you may have also worked in not-so-great teams, where problems abounded and no one seemed to know what to do (or worse, nobody even cared). There are hundreds of shades of gray (not the book, please) between these two extremes, of course, but the question here is how to make our current team bend to the most positive side of the balance.
What makes a team great?
One of the first things on my list is the commitment to common goals, but for this to work they must be team goals. It is desired that employees reach out and look for their on careers, but not in detriment of the team and of its major objectives. Without this in mind, it does not take long until people start to be more worried about showing how great they are instead of reaching out to help others and making sure they are all moving at the same pace, towards the same destination.
And it takes maturity to reach this level of compromise because a strong culture of giving and receiving feedback openly and honestly needs to be in place. It takes a lot of humility to understand and adapt, especially if the evaluations you receive go against what you believe is your core self. At the end, a strong team is so calibrated that its members know the feedback is only aiming to improve the team, and, consequently, each of its members' skills.
Another aspect of great teams is their drive, the momentum they press every day in their lives. It is the obvious consequence of having a set of common goals and of taking risks to try new things. There is always something that is not working so well, or at least not as expected. Do you feel you can openly talk about them? That you can suggest things knowing people will buy in and try things out to see where they will take them? It is motivating to know you are part of the team, that your ideas are listened and taken into consideration.
One of the turning points in my life was when I first met Scrum and the Agile Methodologies. Out of nowhere, I started to know what I was going to work within the next few days in advance, to evaluate things in small chunks of time and to do things one step at a time, progressively, being able to change things when they start to go wrong instead of waiting for months just to realize nothing that was done up to that moment would serve for anything useful. It allowed me to fail fast, to try things without worrying too much, and to build a strong relationship with those I was working with. It gave me a purpose in my work, and it changed everything because I was not alone anymore.
I will not dig into Scrum very much in here because it goes beyond the intention of this article, but I really recommend you to take a peek and try it out if you did not already dive into it. It is the boldest move to do if you are aiming to improve your teamwork. Oh, and it is such a great tool that you can apply it everywhere, from your daughter's soccer team to how you live with your family.
Other things come to mind when I think about teams and teamwork. Sharing knowledge, for example. It makes a huge difference if people are willing to teach those amazing new things they have learned. It can be an informal exchange, but it also works well if the team holds study groups or meetings every now and then to learn through short lectures, something like the Ted Talks we like so much, but done by people we live with. Or by us.
Leadership is also very important, but it is born from inside out. I have lived experiences where the team leader imposed by the company was not the real one, it was not to him that people run when they needed guidance. It is also worth noting that a leader is not a fixed role, sometimes it will change from hand to hand depending on the scenario, and this is awesome. A great team is self-manageable and organize itself according to the circumstances.
This is a very broad subject, so I'd like to leave a few book recommendations to help you go further and dive deeper into it:
- The Five Dysfunctions of a Team, by Patrick Lencioni
- Thanks for the Feedback: The Science and Art of Receiving Feedback Well, by Douglas Stone and Sheila Heen
- Quiet: The Power of Introverts in a World That Can’t Stop Talking, by Susan Cain
- Scrum: The Art of Doing Twice the Work in Half the Time, by Jeff Sutherland