First Time Tech Lead: A Retrospective
It's been almost exactly a year now since I was given the "technical lead" title at my current team. It's been a crazy ride, and I've learned a lot. I have some things to say about my experience, and I hope that this can be helpful for any bright-eyed engineers who wants to be a tech lead. Personally, I need to take the time to retrospect on what I did well and what could've definitely been better. After all, you're only tech lead for the first time once.
Timeline
The Journey
Not every tech lead journey is the same, I would imagine. The team composition, the projects, and the support system can all be very different. Personally, I was given a small team of mostly young and up-and-coming engineers to work on backend services to support an ambitious rethinking of how to build applications for our Cloud product. We ended up owning three services among 4 (at our biggest, we were 6) members (myself included) and shipped a bunch of features in the last year. I personally think we did very well, given the circumstances. We got to use a mix of boring and interesting tech, and I was able to learn and grow as an engineer in the process. I also picked up some "leadership" skills along the way.
However, we lacked in the support system, and I had not realized just how badly we were hurting because of it. Our manager was a manager-of-managers (strike one), and, as a result, could not spend as much time with our team as I would've liked. Our manager also went on parental leave soon after (strike two). These things could be seen as "opportunities", of course, but it was definitely not that for us. We were basically neglected, and, as a result, we did not receive the credit or funding we deserved. Despite being a high performing team with great vibes, we were not allocated much funding. In my opinion, we were victims of our own success. This, as I later learned, resulted in many of the problems we faced. Finally, the manager came back from their parental leave, only to announce a week later that they would be leaving the company for another opportunity. Strike three, and out.
Throughout all of this, we continued shipping features and meeting deadlines. Our impact was measurable: a lot of the features shipped by the product depended on our work. Every single feature we shipped was used, and we felt pretty good about our work. I was also able to nurture and grow my relationship with architects, which I think was the best part about being a tech lead. The "tech lead" title is for most intents and purposes meaningless, but it did afford me the direct channel to talk and brainstorm with architects and other leaders in the area. This has by far been the most satisfying part of the job, and I'm very grateful to have had the opportunity to work with brilliant engineers to pave the way for the future.
And yet, my close and growing relationship with architects could not offset the absence of a manager. You see, I, along many other engineers, did not really fairly consider the contributions of a manager before the last year. Sure, there are many bad managers around, but our team received no recognition or funding even though we had asked for help, and even though we were doing a good job. For better or worse, the manager is the link between engineers and leadership. If a manager does a bad job at communicating the work that a team is doing, the team will suffer for it. Leaders (Directors+) rely heavily on their reports to make the right strategic decisions, and if they hear nothing from an area, nothing will change.
And that's exactly what happened to us. Our manager was great, but they were busy with other managers and teams that were under them. This worsened during their parental leave, and finally reached critical mass once they left the company. I can't express how grateful I am for the team, the architects, and the product manager that really held the team together. We all came together and were able to ship impacting features while maintaining good morale and good vibes. Still, the constant underfunding and underappreciation for the team eroded our morale over time.
Lessons Learned
I have received mostly good feedback about my time as tech lead, but that doesn't mean there aren't things I could've done better. These are the things I wish I had known when I accepted the tech lead title.
Support is Everything
I cannot overstate how supported I felt from Product and Architecture. Even when things weren't great, and there were many things none of us could address, save for an Engineering Manager, I never felt alone from the Product and Architecture pillars. Lean on your support system, especially if things aren't going smoothly. Almost immediately on my first week as tech lead, I had setup 1-1s with our Product Manager and our Architect. At first, I thought this was excessive. However, keeping in sync every week as we defined roadmaps and talked through issues was immense. Which leads me to...
Meetings... So many meetings
My experience with the amount of meetings is probably unique to the circumstances I was in. With no managerial support, I took the brunt of it. I was meeting with Product stakeholders, with my own team members, and defining roadmaps. This was on top of all of the Scrum rituals we had. Once our new manager joined, I almost immediately started retaking some of that time back. I had lost touch with the codebase and I wasn't happy about that. I was never supposed to be a Manager Replacement. I think that identifying and addressing this problem did a lot for my mental health. Watch your calendar like a hawk – it'll more than likely start filling up and soon enough you won't find any time to do any deep work.
It's not a Promotion
Don't look at the tech lead title as any sort of promotion. Sure, there's some weight to the title, and you're involved with more things that are strategic and future-looking, but don't expect a pay bump or for this title to reflect on Workday. The tech lead role is simply one path to being promoted to the next level. I was and still am a senior engineer at the time of writing this. The role is all about impact and opportunities. You're supposed to use these to grow your career and hopefully a promotion comes out of that. I believe your mileage may vary for this, but this was my experience. And yes, I did ask, and I was reassured that this is normal.
Take care of your team
I've been going on and on about how I felt during this time. Ideally, the team is insulated from issues by managers and other leaders (tech lead included). I think this is something that I could've done better – I focused mostly on how I was impacted. I did not spend enough time nurturing the small team I had. We've lost half of the team, and, while I've been reassured by the departees that there was little I could've done to avoid this scenario, I still feel like I could've done better. The neglect I felt was felt twice over by the team. I had the support from Architecture and Product, but they did not have access to that support as readily as I did.
Keep Coding
Depending on which archetype of a Staff Engineer you want to focus on as you grow, you may want to split your time differently. Personally, I lacked a manager partner, so I gave up a lot of my time to attend meetings and do more strategic planning for our roadmap. I learned a lot during this time, including the fact that I may want to try other archetype paths for my career. My passion is definitely in building things. A tech lead certainly helps with building things, but I had to forego so many projects that I found interesting to make sure my team had engaging and fun projects. I would literally pick up the scraps every sprint, which involved a lot of Operational Excellence tickets and bug fixes.
Delegate
I did not try to take on the world by myself, but I was also not very comfortable asking team members to take on some work that I deemed less-than-desirable. My team was absolutely phenomenal, and our team dynamics were great. This is a personal lesson that I've learned, and is not a reflection of the team at all. I struggled delegating in two ways. The first one, referenced in my previous paragraph, is that I prioritized my teammates' careers over my own. I wanted them to have the opportunities to build up the most important skill to a software engineer: coding. As a result, I pushed them to take on the more interesting and code intensive tasks, while I took on a supporting role. This was not congruent with my own career goals.
The second way I struggled delegating was being too involved in design (and sometimes implementation) of new features. I would task someone with designing a new API, but I would already have a pretty solid idea on what patterns, paradigms, and technologies to use. I tried my best not to influence the design with my bias, but I think I was not always successful in doing so. Some may argue that this was part of the job description for a tech lead, and I agree to some extent. However, I yearned to be proven wrong, and, more often than not, designs and implementations just went my way. Did I present my ideas in a very convincing way? Or did I come across too strong? These were concerns I had all the time. With a team of mostly junior engineers, this was a major concern of mine.
Looking Forward
I hope this retrospective is helpful to someone out there. Personally, it was very cathartic to write this down and to think back on the great work we did, even with all the obstacles we had in front of us. I went through a very rough patch mentally when I learned my team was getting halved, and writing this helped me come to terms with the fact that the team was very young, we were underfunded, and despite all of this, we had a ton of fun, and we were seen as a high performance team (at least to whomever I spoke to). I will miss this team dearly.
To any aspiring tech leads, your journey will look completely different, but I hope that this can be a helpful manual of what to look out for. Your Engineering Manager will be very crucial in ensuring the health and success of the team. There's only so much you can do, but make sure you do right by your team. If you're lucky, you will have created long lasting relationships with your team, like I have!