This writing style of no editing is an experiment into how I would like to formulate my thoughts. I am beginning with stream of consciousness unfiltered thoughts and will allow them to organize into points that will hopefully make more sense. Minor edits are made to organize but the meat and bones are mostly left alone.
During my first year of management I started wtih a brand new team of 6 people and ended up with a completely brand new team of 10 by the end of my first year.
We had 2 FE engineers, 1 BE, 1 UX, 1 SM, 1 PO, 2 TA, and me. By the end of the year we had one layoff which included a FE and a UX resource and added 1 FE, 2 BE and had a stint with 1 TA contractor. As of right now we have 2 FE, 3 BE, 2 TA, 1 SM, 1 PO
The major milestones during this time for me:
1st Production deployment within 4-5 months
Introduction of a non-native english speaking contractor
Dealing with a problematic Senior engineer who wasn't a senior engineer
Coaching up a lower performing UX resource, TA resource
Solving stale and weak PRs
Experimenting with processes that the team worked well with
Major service migration
Meetings with upper management
Goal setting with Senior engineers
Building culture.
Being handed another set of contractors that were low performing
1:1 cadence
Tech:
- Building out BFFs
- Incorporating ADRs
- Allowing the team to specialize in tools (Harness, GHA, Security)
- Prioritizing work that may be sunsetted earlier based on timelines
Things I think we did well:
- Create a culture that is open, engaged, and communicative
- Retrospectives were great. Happiness score was a good indicator of team health
- Speaking up
- Not working overtime or weekends
- Adapted to changes
- Breaking down epics with leads
Things we could have done better:
- Done more prep work to anticipate technical issues across other teams (Migrations, contracts, reaching out in advance)
- Been more aggressively direct with roles and responsibilities. Do the hand holding early
- Do more validation of skills and overtrain if necessary
- Been better about taking notes with teammates earlier
Things I could have done better
- Organized my TODO and notes better. I scrambled to find notes and it wasn't organized enough for efficient retrieval
- Do more checkups on the team. The times I slacked on 1:1s there were definitely gaps that showed up. This is like watering your plants. You need to be consistently keeping an ear to the ground and this takes effort.
- Be more on it in terms of the high level summary of each tribe. Perhaps I can write up a weekly summary of what's going on in each group and share that with the team?
Things I did well
- Had more direct conversations and engaged people head on about issues I was seeing. Something I was particularly proud of was my ability to track down issues that I felt were lingering in the background and nipping them in the bud.
- Presenting to upper management with problems and establishing trust among my management peers.
- Seeking outside help and being resourceful when were transitioning. Our team specifically faced a lot of personnel changes and shifts that required us to be more crafty and agile.
- Taking stances to help the team feel heard. Things like removing unnecessary contractors, initiating process changes, and taking a leap myself to lead the way into change demonstrated the path forward.
How does it feel to have switched from being an IC to a Manager?
I miss the IC work where I can be heads down and just get things done at a pace that worked for me. Solving problems and being knee deep into the code is something I definitely miss. I often feel like some days I'm just talking for hours on end and not really getting anywhere but I am realizing how much of the steering of the ship I am actually doing now. Managing Code is easy, but managing people and their feelings is a lot harder. The work is also more consistenly demanding of my attention and is a lot more inconvenient to my more flexible work schedule before.
Would you go back to being an IC?
Some days, I do wish I could. But I feel like this is a more naturally easy route for me to partake. Financially this is a more lucrative route as well. It would take me about 3 months of hard studying to get back into the swing of things so it's not impossible
What are some of the best adaptations you made with the team to improve?
- PR office hours 2x a week where we review PRs drastically sped up our ability to merge code. The actual reviews though still lacked time for people to approve and did not yield an increase in comments. I am considering adapting the format to give time for review 5-10 mins before we start so that everyone can move at their own pace, then we walk through comments that are brought up. Maybe even slowing down and having one person walk through their review process can be useful.
- Hosting a biweekly Leads chat where I meet with the FE and BE leads on my team. During this time we'd review the upcoming features and write out stories to break down the technical components of a feature. I also used this meeting to get a pulse for how their respective tribes were doing.
- Layoffs. As painful as this was we got rid of some dead weight that really wasn't pushing us forward (and sometimes inhibiting us). The team was able to succeed without these people and got more performant with less headcount. As a manager I think a good question to ask myself periodically would be, what would happen if this person were to quit. If the answer is, not a whole lot, I need to make some adjustments.
- Mini Tribe refinements. These are meetings that the tribe leads would hold with their group to really break down the stories even more and do pre-assignment. This would drastically speed up our team refinements. Another added benefit is that my leads are very exposed to the backlog.
- Making people SMEs in areas that are clearly weak points for the team. I ended up with a GHA, Harness, and workflow specialists who took ownership in these areas thus leading to less for me to handle on my plate while spreading the tribal knowledge across members.
- Monthly ad hoc testing sessions where we test our own application was great for us to gain first hand experience with using the app. After our meeting with the customers we have, we are planning on running through "scenarios" that a customer would go through and I would like the team to try and solve this as if we were the customer ourselves during this time.
- TODO: Releases for our team happen rather infrequently (2-3 months) and it feels like the team is very green when it comes to running through this process. I would like to have the squad take time each month to run through this in 2-3 man teams and we could possibly have scenarios laid out that we have encountered previously.
- TODO: Team cross training is something we still want to get to but given that I have a lot of folks who just got started on the team, I think there is some ramp up time before hand. I should convey when I would like folks to have them consider more crossover work.
- TODO: Track the # of meetings I am requiring of my engineers. Perhaps limiting it to a golden # after some statistical analysis.