If you are a senior/lead developer with a passion to develop your people skill and leadership skills and push yourself one level up, looking into Tech/Team lead role can be an option among all others for you.
However, before you make your decision and set a target, it is worth investigating some of the main responsibilities that a Tech/Team Lead is accountable for.
Tech Lead or Team Lead?
Well, as far as I remember, companies used to offer a combination of technical lead and Team lead in one role as one package! However, based on the recent market, I would say, many companies separated these two roles. You can be either Tech lead or Team lead. Having said that, I had this privileged to give them a go as part of one role. It was intense indeed but so many great experiences I gained where it could take me much more.
Here are some of the significant responsibilities and challenges I faced over my journey of being a Technical Team Lead.
What does takes you to become a Tech/Team Lead?
First of all, prove your ability by taking the leadership role before you are formally assigned to that role. Taking the lead of something is a skill and nobody will offer that to you, it is you who need to take the lead by expressing your thoughts around things like risks, possibilities, solutions, processes and what can be improved in general.
After all, you are the one who should express your interest in taking a new position and ask for it. Normally, that's the easiest way if you are being promoted to tech/team lead in your current company.
What knowledge is essential to have for Tech/Team lead?
The easiest way of understanding what is the requirements for this role is to look up and Google this role and see the job description associated with that role and it gives you a lot of insights on what essential knowledge you need.
Very briefly, some
technical skills like Knowing some architecture designs, modern solutions, Cloud computing, Security, DevOps,...
If you are committed to some methodologies like Agile, XP Programing, Reviewing pull requests, Software Governance, Security and so on, then you will prioritize those practices in your team.
You need to understand the future of software development to be able to adopt them when it makes sense. Some features like:
- Feature flagging or feature toggling
- Continuous integration and continuous delivery
- Outcome-driven development
- Serverless-functions as a service
They are hot topics which you need to get your head around them.
Communication skill is really important as you should be able to communicate with different people in roles like UX designers, product management teams and all stakeholders, vendors, business Analysts, management and the technical team where each needs different language and skills.
Presentation skills, self-confidence, promoting new ideas, thinking out of the box and innovative ideas are essential if you want to succeed in this role.
Critical thinking to analyze the situation and find a balance between the time, best practices, team growth, business value and your integrity.
Lateral thinking helps you identify problems and root causes of them instead of jumping to the conclusion immediately.
Building high perfomance team is extremely important. A team who embrace the
respect to the diverse thoughts and
collaboration is an effective team who can change the culture of the company and making this dream team is on your shoulder.
1-1 session is a significant part of your work to make sure you help your team career/personal development.
Knowing your team and being aware of their plans, goals, interests and capabilities is incredibly important to help your team develop new skills and improve their knowledge and behaviour.
You are responsible to help them grow by providing feedbacks, push them out of their comfort zone, provide opportunities for them to express their skills, mentor them and advocating for your team to bold what amazing jobs they are doing.
Recognition in private and public make the team motivated and you need to find chances to make that happen.
Performance Review is something you do at least twice a year where you need to gather 360 degrees feedback for your team members, analyze their strength and weaknesses and communicate them in the best possible way to your team.
Helping your team with
learning in this crazy high pace of technology is a big deal. You need to watch out what skills they lack and provide some opportunities to help them grow including getting them subscriptions for Online learning, running Brown bags/sharing knowledge sessions and invite experts from the community, or vendors who you work with and encourage the culture of learning and sharing inside your team.
Listening Skills is extremely important. Sometimes just listening to people is enough to help them understand the actual underlying problem.
Addressing issues is really important too. Some leaders just listen and neglect what came to them and they don't set up any action items to address problems.
It happened to me a few times that my team gave me some feedback to improve something and I took it serious to spend time and ponder on their feedback and address it as much as I could. Maybe you cannot fix things in one go but people can see that you did your best and even taking small steps is valuable.
The more you care about what people tell you, the more you get honest opinions and constructive feedback.
Team culture is the last but not on the list When I see a poor culture in a team, I immediately look at their manager cause most of the times this neglect and ignorance come from top to down. It is pretty much your responsibility as well to give feedback to your team and integrate a good culture into the team.
Team Building is another activity you need to do to help your team know each other and help each other to grow. There are heaps of workshops and experts in this area that you can get help as well. But there are a lot of activities like team catch ups, retro sessions, ... inside your team.
Sharing knowledge and documentation
Tech lead often do a lot of solution designs and that's why some of them end up being an Architecture. They have the high level overview of the whole system as a bigger image which needs to be shared with other team members.
Once a solution design is endorsed, designed and implemented then it should be hand over to the team through arranging some sharing knowledge sessions to walk everyone through the design or writing technical documents and diagrams.
Unfortunately, this skill is inevitable. You will have so many interruptions on your daily bases. Some of them are manageable but around 30-40% of the critical and you cannot ignore them.
I recommend two solutions:
First is mentally prepare yourself for this disruptions knowing part of your job is accommodating the team and unblocking the barriers.
Second is develop the
delegation skill which the essential part of this role; Otherwise the stress and the work burden might overwhelm and burn you out.
Hopefully those two advise alleviate the pressure.
Fostering Devops culture in your team, makes you plan for multiple releases and depends on the organization, you might need to prepare change management request, approve the release, approve the permissions to different resources, release run-sheet, and so on. You definitely can get help and you don't have to do them on your own but you still need to be on the top of all those activities.
Depends on your strategy to go with
Trunk based development or
Gitflow you need to clarify the branching strategy for your team and make sure you have a check list for post release activities to merge the release branch back to the
Tagging the released commit number if you go with Trunk based approach.
ITSM (IT Service management)
When the product that you are taking care of, becomes live in production, there are a lot more you need to be mindful of.
Depends on your company policy and strategy, you need to learn some applications like incident management systems (Eg: ServiceNow) or access/permission provider systems (Eg: Myaccess)
You also need to do incident management and problem management to identify the root cause of incidents when they happen.
From Pycholosit to Pitcher
If you are one of those tech/team leads who are interested in business side and product itself, you need to understand the product as much as you can and identify the competitive advantage that your product offers.
Competitive advantage refers to factors that allow a company to produce goods or services better or more cheaply than its rivals. These factors allow the productive entity to generate more sales or superior margins compared to its market rivals.
If you want to assess a technology to introduce it to the team, you need to make sure that technology and cost of change adds enough value proposition to your business.
That totally depends on the organization size though. Small start up companies embrace the changes much easier. However, if you are leading a team in bigger organization then you need to identify the gaps you are trying to fill and value you are adding to your product and business.
Innovative ideas start from small ideas to improve. Sometimes, you need to present your ideas in an interesting way in order to get the approval of your product managers to add a feature or utilize a technology stack. Don't give up!
Planing and raising the risk in your team is also your responsibility.
You need to identify what roles and levels you need in your team to meet the business needs and prepare a custom job description.
Going through the interview is challenging as it takes a lot of time and you need to learn how to interview people and raise good questions, how to avoid hurting the interviewee and how to identify a good fit for your team. The interview is an initial gate to introduce yourself properly as well as your company and team so do it well :)
Time management and Organizational Skills
You are accountable for the delivery of the projects.
Creating the road map, sprint planning, grooming the backlog, estimation sessions, keeping deadlines, goal setting and meeting goals, decision making, managing appointments and lots of back to back meetings all need good discipline, time management and prioritization.
Finally: Patience, Resistance, Tolerance are the key to grow
Jumping from a Senior software engineer position to the Team lead needs a lot of mental preparation and soft/power skills.
While you have a lot of room to manoeuvre, having authority to decide on technologies, architecture design and many more, grow your leadership skills, learn from your mistakes, receive feedback, communicate with the management team, and so many other amazing opportunities, at the same time you need to empower yourself with more patience, kindness, empathy, and more resistance to the surprises and interruptions, accepting the failure as part of your growth is the key and embracing new experiences and responsibilities just let you enjoy much more.
Every job has some exhausting aspects as well and Technical Team lead is not an exception. Meeting different expectations, context switching, attending so many back to back meetings and doing a lot of bureaucracy around team performance, KPI, release management, approving leaves and other HR-related activities is part of this job too.
I hope this post gives you some insight on what takes to be a productive Tech/Team lead and helps you with decision making on your career journey.