6 ways software engineering leaders lead successful teams
Once you become a tech lead, you'll need a different skillset to ace your roles and responsibilities. There's no blueprint for success, but the job inevitably comes with a set of unique challenges — like leading a team of developers and scaling your organization.
How do you master a senior role? What are the skills necessary? Today, we'll explore what it takes to lead.
1. Set a vision
Being a tech lead gives you the ability to set the direction of the team. Ordering people around and completing projects is not enough. You need to set a vision and identify the best way you can contribute to make it a reality.
For instance, when Michael de Hoog, became a technical leader of Coinbase - a digital currency exchange company - he focused on the organizations' efforts to scale. This was a significant change because he was used to product work instead of managing scaling challenges. However, he kept his composure and approached the situation methodically over six months.
His efforts paid off, and Coinbase scaled by 40x as cryptocurrency prices drastically increased. He lays it out, saying "“You could say that the hours were hard, because we were doing long hours fighting these scaling challenges. But they were also just so much fun. I think nobody would have given that up for the world. We were seeing things that we would probably never see again in our lifetime, scaling challenges of that magnitude, everybody wanted to be there, no matter how hard it was.”
What did we learn from Michael? Setting a vision that can make a substantial impact on your team or organization is the first step. You then need to work towards your main goal. Even though you may not feel confident about your capabilities, you'll eventually grow into the role and develop leadership skills.
You could say that the hours were hard, because we were doing long hours fighting these scaling challenges. But they were also just so much fun. I think nobody would have given that up for the world. We were seeing things that we would probably never see again in our lifetime, scaling challenges of that magnitude, everybody wanted to be there, no matter how hard it was.Michael de Hoog, Technical Leader for the Coinbase Consumer organization.
2. Learn the art of feedback
Having a senior position gives you the authority to provide feedback to members during meetings or discussions. Comments about working styles and performance of junior team members can drastically level up their performance. A study found that employees strongly support the value of feedback, and four out of 10 workers are actively disengaged when they get little or no feedback.
Developers aren't new to feedback because of prior experience with code reviews. Regularly presenting work for it to be pulled apart by your peers can sometimes be a tough and critical process, but that's how engineers advance up the ranks.
How can tech leads provide honest and productive feedback? Here are a few tips that can set you up for success:
- Consider phrasing your feedback as questions. This encourages recipients to think and reflect on solutions. Ask them how they feel they're doing and listen to their response to establish "joint ownership" of the conversation.
- Identify the context and learn to empathize with the employee. Make an effort to understand their actions before you criticize.
- Articulate the problems or criticisms but suggest alternatives. Delivering proposed solutions help involved parties understand how they can thrive and excel.
- No one wants to hear exclusively negative comments. Highlight wins and pay attention to what employees are doing right to increase motivation and support development.
3. Mentor your developers
Development teams consisting of a majority of senior developers are rare. Instead, there's a variation in skillset and level of experience.
No junior developer or newbie is born with the knowledge or experience. They might not have adequate knowledge to avoid traps, reduce bugs, or work independently. Researchers also analyzed forty-three studies and found that mentored employees are i) more committed to their career, and ii) more likely to believe that they will advance in their career.
Whether or not it's in the job description, senior engineers need to build an ecosystem of skill, and that's only possible with mentorship programs. Here are a few tips to get you started:
- Develop mentor-mentee pair programs in your team. The more experienced employee could review the code, while the junior developer writes it. (Get more tips on pair programming here).
- Assign practice coding projects. Tell mentees to build programs in Java or create projects based on real-world tasks.
- Review their code regularly and provide feedback. Identify problems in linting, naming method, testing pattern, structure, etc.
- Always involve them in code review of others work.
- Have meetings with mentors in your team — aggregate feedback from mentors to understand how you can develop the skills of mentees.
- Suggest books, reference materials, or blog posts to expand their knowledge.
4. Master task delegation
Tech leads should delegate what they know to stay on top of important tasks. It's easier to delegate tasks to junior team members if you know how to fix problems that could pop up.
When he worked as a software engineer, Cody Engel gave away tasks he could quickly finish himself. For instance, his architecture group wanted to use Volley for handling networking within Android. He had done several AsyncTasks over the years, so he assigned it to a junior engineer. He writes, "I was able to answer their questions very easily and, if they had issues with debugging, I was right there to pull them off the ledge. I also got to see what Volley looked like through code reviews while the engineer learned all about network requests. It also had the added benefit of making me look like a know-it-all because, in that case, I was incredibly knowledgeable."
This strategy lets junior engineers make mistakes, take risks, and experience failure - these things are all critical to the learning process. When they have the freedom to accomplish tasks with the right guidance, they can quickly build their capabilities.
I was able to answer their questions very easily and, if they had issues with debugging, I was right there to pull them off the ledge. I also got to see what Volley looked like through code reviews while the engineer learned all about network requests. It also had the added benefit of making me look like a know-it-all because, in that case, I was incredibly knowledgeable.Cody Engel, Software Engineer at ActiveCampaign
5. Stay relevant
Another aspect of the senior's job is to stay updated on trends and developments in the industry.
Allot 1 to 2 hours per day for reading material in your niche and make it a habit. Follow related tech publications. Follow your peers on social media. Subscribe to relevant subreddits. Build a network of experienced tech leaders and analysts to get insights about current and evolving technologies.
Don't forget to monitor how your competitors are changing their products, and the technologies they use. It's always important to learn what your teams are working with or against. Here are a few tips for keeping tabs on your competition:
- Follow competitors on social media.
- Subscribe to their blogs and newsletters.
- Regularly read their latest release notes.
- Look at competitor reviews and pay attention to negative feedback. Use these comments to formulate ideas for product features and upgrades.
- Use apps like Marketing Grader to check metrics like social media followers, indexed pages, and linking domains.
6. Develop autonomous leadership
It's no secret that bureaucracy slows things down - the average company loses more than 20 percent of its productive capacity to something called organizational drag. Whether you're a tech lead in a startup or a big company, it's more efficient when there's minimal hierarchy and fewer processes.
It's essential to build an environment where employees have the freedom and autonomy to be self-directing. Ranjay Gulati, chair of the Advanced Management Program at Harvard Business School, defined freedom as trusting employees to think and act independently on behalf of the organization.
Gulati studied Netflix's culture of freedom and responsibility. The company's employees can choose their maternity leave, travel expenses, and vacation time. In exchange, they are expected to make the right decisions for the business.
He observed: "This freedom isn't merely there for the taking. Employees are expected to exercise it as part of their responsibility to the organization. For example, it's their job to read, understand, and debate the ideas in the foundational documents."
This freedom isn't merely there for the taking. [Netflix] employees are expected to exercise it as part of their responsibility to the organization. For example, it's their job to read, understand, and debate the ideas in the foundational documents.Ranjay Gulati, chair of the Advanced Management Program at Harvard Business School.
In reality, your business might not be able to offer the same benefits as Netflix's — but you should aim for autonomy. Encourage team members to share their ideas in meetings. Give them the freedom to make changes and improve the quality of their work.
Great tech leads aren't made overnight. They start with a vision for their team. Their team develops an ecosystem of skill through feedback, task delegation, and mentorship. They honed their skills and reached the top because they embraced challenges, stayed determined, and kept focus on solutions.
How do you lead a development team? We'd love to hear your tips on Twitter.