Over the last year, I’ve had the opportunity to take up a technical team leadership role for a team of software engineers porting a large Universal Windows Platform (UWP) application to Android using Xamarin. The total team size was 6 including myself, 4 of which were recent university graduates.
From the start, one of the most challenging parts of the process was this was the first time the graduates had worked on projects in a professional environment. Also, everyone in the team had little-to-no previous experience building Android apps which required us all to be brought up to speed with training.
From the get-go, I felt like I wasn’t ready for this level of responsibility but I also knew that I had the support of those who were my team leads before.
So let’s talk about a few points from my own experience that I feel makes a good team leader. Some of this may be right, some may be wrong. Like everything, this is something that I will evolve in myself with time.
1. Get to know your team
In a way, I was lucky to have the team I was given. Their eagerness to learn resonated from the same feelings I had when I started out as a graduate engineer.
You might be thinking that getting to know your team seems like a given task. I’ve had my own experiences in the past where you’re a member of a team but feel like you’re a square peg being jammed into a circular hole. No single person is the same as another and you should remember that. Get to know your team members and understand who they are, how they react to you and what they might need from you as a team leader. Also get your team to do the same with each other, remember you’re a team! Better team experiences are built when you enjoy the company of the those you work with. Plus it’s a great way to make strong and long-lasting friendships which is something that I find happened within our team.
Also, get to know your team’s technical experience and pick up on where they might be lacking. Take that knowledge and apply it in a way where you’re utilizing the best in everyone but also looking to improve them where it’s needed.
2. Learn from past experiences
There’s no doubt in my mind that every person in a role of leadership has made mistakes and improved on them in their past. From my own experiences, I’ve seen and been involved in failures that can easily be rectified with simple actions.
I took the knowledge of these issues to the team in a meeting to come up with ideas for how we could try and reduce them from happening in the future.
One of these issues was around the quality of code. As a team, we came up with many ways to improve this and ultimately came up with our team’s standard for quality before signing code off as being complete. Some of these things included documenting code where needed, developers executing test cases to ensure the acceptance criteria had been met, and performing exploratory testing in the changed areas. This is not the definitive list, but essentially, we came up with our baseline, we reviewed it over time and worked on it to add to and improve our process throughout the year.
The lessons that you teach your team, particularly those who are new to the professional space, will go forward with them into their future roles. They will almost certainly look back and be thankful that you took the time to help them improve.
3. Be there for your team
This was another overwhelming aspect of the role. Everyone looks up to you as the person to help, especially when your team is new in working together. You are their mentor and like my previous point, everything you say and do to help your team members will stick with them and you will want them to look back on their experience in your team and thank you.
However, I have a strong point to make about defining your own perspective of helping others. This is one thing that I found the hardest to come to terms with, particularly with the graduates. As a software engineer, you take pride in what you code. That pride often leads us to want to do everything ourselves when others don’t know how. As a team leader, you have to learn that this is not a viable solution for running a team.
When someone in your team is stuck for a solution, help guide them to where they need to be. You might want to ask them what they tried before they asked you. If they are unsure, walk them through a few steps but don’t take over their keyboard. Programming is a hands-on job and your team can’t learn from you doing everything for them.
4. Bond as a team
Team bonding is great. Not only do you enhance the communication skills between team members but you have the opportunity to get people to do things together both socially and professionally.
Now, I put to our team that it would be a good idea to bond over something that we could all enjoy that would help to improve the way we collaborate with each other.
After much discussion around costing, the different types of things people wanted to do and how much time we could allocate to this, we decided on two things to start us going.
The first decision was to create a communal music playlist that we all have access to playing from our kanban board screen. Over time we’ve tried many different approaches to the music and generally, we have ended up with a big collection that contains everyone’s favorite songs that we shuffle up every day and it has been great! If your team enjoy listening to music, this is a great way to bond and means that everyone isn’t sitting at their desks ignoring each other with headphones on.
The other was a decision to play a game together over our lunch break. The game requires us to, in most cases, work together to achieve goals. It also required us to come out of our comfort zones, particularly when it comes to talking. I’d also say it’s a game that requires thought based actions as it can have consequences on the outcomes. That game is D&D.
The team has had so much fun over the time we spend playing D&D at lunch but most importantly, and this point may not be noticed by all from the team, we started to talk to each other so much better around needing help, wanting advice or general technical chat when it came to our work. Our GM has made the game so enjoyable and I can’t thank him enough for the time and effort he’s put into making the campaign we’re playing awesome for us all.
6. Help inspire the next generation of leaders
While I may be new to being a team leader, my experiences in other areas have always shown me that you need to help others to flourish and encourage them to take pride in what they have achieved as a team, as well as in themselves. Let them make their own choices and take responsibility for their actions, but remember to also be there to help them if it doesn’t go as they expected.
Again, back to your own experiences, use the experiences you have as a team leader to influence those that look up to you. Hopefully, those same people will want to be in your role one day doing exactly the same thing for the future graduates.
I’m hoping that the time we’ve spent together as a team will have encouraged them to want to achieve the same role in their futures and I’ll be there to help them achieve it!
Being a leader isn’t a walk in the park
My own experiences have not been easy ones. There have been times when I wanted to give up and they have been so many more where I knew I was doing the right thing. The choices we make as a leader will define how we are seen by others.
I’m extremely proud of everyone on my team for what we have accomplished over the last year both within the product we delivered as well as the friendships that we have made with each other. Without the on-going help and support from them, I know I wouldn’t be who I am today.
To my team, thank you for your commitment, effort and the many awesome moments we spend together. I’m looking forward to the years ahead working together as we achieve even more successes in our future as a team!
Be passionate and bold. Always keep learning. You stop doing useful things if you don’t learn. ~Satya Nadella