What makes you an outstanding Team Leader
I spent over 10 years leading small and large teams in startups and big organizations. I did a lot of mistakes as young team leader. Most common was to let go and trust my team mates. But now, after many years of gained experience, I think that I built some sort of good team leadership framework which I want to share with you.
It all starts from people culture of the team that you want to build. In best case scenario its the same culture of the whole organization.
Bring on board only team players without ego. We all have different levels of experience. If you have over 20 years of experience that doesn’t mean that you don’t have to help juniors in the team. Do not tolerate brilliant jerks.
You need to build trust between all team members. Be extremely open and transparent, this is the only way to build trust. Be there all the time when they need you for good and for worse. Show how to do it by example.
We are a team, help each other. If someone missed or forgot something, cover that team member and stand out. No finger pointing. Go the extra mile.
Can do attitude
Look for people who don’t afraid of challenges and can be pragmatic enough to understand what is “good enough”. Done is better than perfect.
Pick the person who want to take responsibility, like to be independent in their work and can overcome any obstacle.
Do weekly one on one meetings with all your employees that you manage directly. It should be an open two way feedback meeting. You can ask “how are you doing? are you happy?”. Give feedback about what worked this week and what didn’t and how to improve it. Define some action items and goals for personal development. Ask how was it working with you as a manger.
Working with PM
You, as team leader (TL), are going to work a lot with product manager(s) (PM). Remember that although you might not manage PMs directly, they are part of your team. PM is your interface between business requirements and development. Make sure to create a good relationship with that person, you are going to spend a lot of time together.
There is always going to be kind of tension between you and PM. Make sure that its a healthy tension. PM’s interest is to deliver new features to the product. Your interest to balance between product requirements, bugs and technical dept. It is your responsibility to make sure that PM is aware of development requirements as well.
It is important for you as TL to keep high velocity level of your team. If you only develop new features without taking care of bugs, refactoring, testing and automation your team performance will decrease. Make sure to create a balance between all these. You can make agreement with PM that every iteration include about 30% of development requirements.
Go over product requirements before the planning meeting (explained below) with your team. It is your responsibility to make sure you understand the requirements. If you are not, play “ping pong” with PM until its clear and documented.
Make sure to be a buffer for your team. There always going to be question or requests wherever we can do this or that coming from PM or other team members. You should try and buffer those, just to save context switch time for your team mates. Most of the time you can think and provide an alternative good enough solution for their problem.
I like to practice Agile development methodology. It is important to understand it basics, but don’t be too religious about it. Take the good parts and abandon the parts that you think are not relevant for your team at this specific time. You can do Scrum with hard stories scope and iteration timeline or Kanban with softer stories scope (release only whats done), but you need to define iteration timeline, which should be about 1–2 weeks long (depends on team size and your product).
Daily meetings — are important to sync the team on what they did yesterday, what are they doing today and the progress. You role as team leader is to help your team mates to release bottlenecks. Make sure the daily is really takes no more than 5 (top 10) minutes. It should be quick status update without too much details. If you need to deep dive into some specifics, do it after the daily with only relevant team members. Appreciate others time, its precious.
Planning meetings — once you have a backlog of ready for development stories, you need to go over it with the team. This is the time to discuss it in more details, see if you or product missed something. Estimate the stories as a team or put a story on hold if its not clear enough. Usually you run this meeting once a week, few days before new iteration start.
Retrospective meetings — this meeting is very important! It is the time for you to discuss the problems and improve. You as TL, should take notes during iterations of problems you noticed. It can be wrong estimation of story, unclear requirements, missing tests, broken deployment pipeline, anything. The essential part of retrospective is to define action items to fix the discussed issues and critical is to followup on this on next meeting. If you, as a team, only discuss the problems but do nothing about it, probably its a waste of time.
Most of the time we as a team spent coding. It is your responsibility as TL to create a good framework and processes to make the whole product development pipeline efficient.
Pick the right tools for your team to do the job. Make sure you find a good balance between simplicity and efficiency. Some team members may pick their own tools (code editors or other) that help them be more productive, allow them to do it. Eventually you as TL need to pick the project planning tool, source control system and other tools to help your team in the process.
Some bigger features require technical design before development start. Engineers responsible to lead the task. They do tech design, send it to review, set a meeting if required to discuss with a team. Only then proceeded with development.
These are very important. This is your last chance as a team before the code change is submitted to your code base to review it and make some adjustments or block it. This is your chance as TL to stay synced with your code base, most probably you have less hands on time than any other team member.
Testing & Automation
Make sure to create culture of testing and automation. Tests are your safety net to release quality products and minimizing time waste. Make sure to have manual test sessions as well on big milestones for the whole team to be more connected with the product.
Try to create as a team efficient Continuous Integration and Delivery pipeline to create instant feedback loop and consistent release process. Done right, these are going to save your team a lot of time!
You as TL should have a good high level understanding of how organisation and your product works. This to create strategic thinking about your team development. It can be about new technology that you have to choose to accomplish some new product requirement or about your team inner scaling.
Deadlines are good, but only if they are defined on real business events or milestones. Don’t set fake deadlines, they are not going to work.
You as TL is responsible to communicate your team status and progress to the whole organisation. It is OK to open your project planning tool (Kanban board) to the company to see your progress. Make sure to send non technical descriptive release notes (preferably with changes screenshots) on new version deployment.
Don’t be a Boss, be a Leader for your team. Don’t just give commands, be there for the team, lead it.
And there is no “I did”, there is only “we did”.