Recently I got a fascinating job for a lead developer role for a startup. Being a software engineer all my life and living by the mantra - sleep, eat, code, code review, sleep, repeat and the most we have to do when interacting with other people is probably code review or when a new project is about to start or during daily standups to talk about what we would do for the day.
Never had I ever thought I would put on the hat of a lead so soon, and It comes with a lot of managerial responsibilities I wasn't ready for, Woah! First, you have to organize the team and mode of operation communicating with the project manager to see how we can deliver new features, then communicating with team members to see If they have any problems, create schedules, deadlines and ensure communications between the team members and other functional areas in the company.
Then the floods of meetings, Most people who come into this role feel its step in writing more mature code and leading people who code too, yes this assumption might be true but they just cover 10% of what the actual job is like, heck you might only get to squeeze out two hours of coding in day and some days you have meetings for hours, scheduling, and when you finally want to code - psych! its time for code review.
How do you prepare for the role
Preparing for this sort of roles has nothing to do with knowing goroutines or understanding how to traverse a binary or properly setting up CI/CD with the cloud, heck the most technical thing you could do in a day is helping the front engineer properly validate input in a form(joking). Definitely the experience and knowledge is required for the role but that isn't always the case, here is a list of things we should be prepared for when filling such a role
Good Communication and Leadership skills: Knowing how to communicate well can be a problem for programmers sometimes, which is actually a very bad trait because it creates a stereotype that programmers are introverted people which isn't the case most times, Communicating with other members is key to the role as it is necessary to understand how each piece of software being written would progress or regress the project or tasks at hand.
Good Listening Skills: Being good at talking doesn't necessarily mean you are great at listening, your role is to translate business ideas into technical details, perfectly understanding what is required to make this happen requires great listening skills. Listening and considering the inputs from your team members as well is important to cover the gaps of things we could have likely missed.
Patience: Understanding that you are dealing with different sets of people, teaching, motivating and mentoring different sets of people boils down to understanding each team members mentality. Some people are motivated by complexity while others are motivated by simplifying, seeing it through that each team member is giving their 100% is important and on days where they are under the weather you motivate them.
Becoming a great lead developer isn't a nights work, It requires proven talent and experience and the ability to teach, motivate and mentor others, at the end of the day it all boils down to your soft skill and building good relationships with people.