13 things I learnt in my first year leading a software team
Tags: management, techlead
Published: 2019-07-13 13:51:33



About a year ago, I moved into the role of a tech lead on my team. For some background, I work on an embedded software team within a larger Energy Efficiency Consultancy organization. Embedded Teams function very differently than teams in larger software organizations. You will be required to wear multiple hats, process will have to be built from ground up, you'll have to be very mission oriented, and you'll have to learn the business. I learnt a lot along the way, and I am grateful to my team for giving me space to grow and learn.

### 1. Context is everything
People like being part of a greater mission. One of the ways to reiterate your company's mission is by providing context for everything your team will build. Over-communicate your roadmap, bring up your quarterly painted picture regularly. Connect stories back to the bigger picture. Connect stories to problems it could solve in your business domain.

### 2. Manage up
As a Tech Lead, you have the opportunity of expanding yourself beyond the stories that your team works on. You have a chance to anticipate business needs or see places that need process improvement. Freely share your learning to your peers. 

### 3. Document your decisions
Decision making is tedious, and you may encounter decision fatigue. Document these decisions and make it freely available to your team.

### 4. Be selective of your advisors
A lot of the advice for software development and management process is from a perspective of a company providing solutions purely through software. Be aware that sometimes it is harder to scale down advice than scale up. Read all the blogs/books you can, but do reflect on what works best for your team.

### 5. Be your team's biggest advocate
Get to know your team in a professional setting, through regular 1:1s. Get to know their interests and how you can help them grow their career. Be a coach and a mentor. Recognize the value that each member brings to the team and give positive feedback generously.

### 6. Provide direction but let your team be autonomous
Don't feel like you have to control every part of the software development lifecycle. Provide a framework where decisions can be made without fear of failure. Things can go wrong, but that's OK. We'll move on and learn from it. 

### 7. Read code and participate in code reviews
You may not be able to contribute to sprint cycles regularly anymore. Keep in the know by reading code that is being written and merged to production every sprint.

### 8. Do some spikes
You do have the opportunity as a team lead to look at the bigger picture. Go ahead and do some spikes. Try various architectures, so you can help make informed decisions.

### 9. Engage in customer support
Delight the customer. Put yourself in regular customer service rotations to gain customer perspective and understand their pain points.

### 10. Broaden your skill set
Now is the time to go broader on your T-shaped skill sets, rather than go deeper. Read generously about developments in the industry across your full stack.

### 11. Learn about your business
Become a business domain "expert". This will come in handy when you have to provide context to your team.  

### 12. Talk less, listen more
Folks who speak the most benefit the least. Foster innovation on your team through a culture of knowledge sharing and brainstorming.


### 13. Don't be afraid to fail
Go forth and fail, rise up, and learn. Be a kind, empathetic human being.