Back in 2015, I was working as an RSDE in Microsoft Research. I was a Principal Engineer, and the technical lead for LUIS, a natural language understanding service we were getting ready to launch at //build.
Then a re-org happened as a result of one of our directors leaving. My manager was asked to take that role and he needed a development manager for the 7 engineers under him, so he asked me. I had wanted to test the management waters, so this was a good opportunity. The timing could have been better since we were a couple of months away from launching LUIS and we were in a crunch. Still, I said yes.
At first, things didn’t seem all that different. But I quickly found myself with very little time to code. This really hit home when I read my 9-year-old son’s description of what his dad did at Microsoft: “he goes to a meeting, then has a little bit of time, then another meeting and so on and then the day is over and he didn’t get to write any code”. Dang!
Not every day was like that, but some were. And it was not only meetings that were taking my time. It was emails, 1:1 conversations, planning, and other non-technical work.
I felt unproductive. After all, I had been successful so far by solving tough problems, writing the most complex pieces of the system, and being the best at debugging gnarly issues. And now I was doing very little of that. But that’s when my manager told me during a 1:1 that I was doing well as a manager!. People in my team were happy, the projects progressing and the relationships with our partner teams were good. Huh? It was sort of confusing.
I guess I was still adjusting to the new role. First of all, I had to get to know my team. I had worked with two of them for a long time, but the rest I didn’t know all that well. Everyone was different and needed something different from me: structure, clarity of goals, a path to promotion, time to pursue a 20% project, more independence (which I didn’t realize at the time), a different project, reducing uncertainty, etc.
All of these required my time. I had to make decisions and then think about the best way of communicating these, which is very personalized. What made this challenging was that it was not so clear when I had made a good or bad decision.
At the end of each day, I didn’t have a piece of functioning code. Instead, I may have changed a process, improved (?) a relationship, or set new goals for someone. In none of these cases could I tell right away if I had made an improvement.
After a while things started to get easier. I internalized the ways in which I was bringing value. Yes, I wasn’t writing as much code, but I would influence how others did. I set up processes that made the team more effective. I learned to give people opportunities to grow, and to give encouragement or feedback when something could be improved.
I found this can be incredibly rewarding. It feels great to give a well-deserved promotion. Or to step back and let others take bigger responsibilities and see them grow. And one of the best feelings is when you realize you’ve truly gained someone’s trust.
So yes, it’s a rocky road, it’s different and at times uncomfortable. But if some of the above resonates with your values, then being a manager might be worthwhile exploring.
I’ve only been a manager for a couple of years, so I can’t claim ample expertise. What I capture below are my thoughts on transitioning from being an individual contributor to a manager, while they are still somewhat fresh in my mind :).
Do you want to be a manager?
As you grow in your career you’ll get more expertise, you’ll mentor junior engineers, and people will look up to you for leadership. Soon enough the question will arise, either from you or from others: should you be a manager?
This is a decision that can sometimes be misinformed from two different sides. Companies can promote to management their best engineers because they are technically very capable. This is not necessarily a good choice. While I do believe managers need to have a certain level of technical credibility, this is hardly sufficient to be a good manager. On the other side, engineers can take on management roles because they believe it’s a necessary step in their career progression. And while this can be true in some places, lots of good tech companies provide career growth paths for individual contributors.
So if management is not required for career progression and technical ability is not sufficient for management aptitude, how do you figure out if this path is for you? Ultimately this is a very personal decision, but I’ll offer my perspective after having gone through this transition.
As I described above, your role and daily job will be different. Here are some things you can expect:
- You’ll be doing less coding. At first, this can make you feel less productive, but that’s not actually true!
- You’ll probably spend more time in meetings. Things like project management, 1:1s, scheduling, performance reviews, and planning are often part of a manager’s role and they involve meetings and discussions with other people.
- If you are promoted from within your team, becoming someone’s manager often changes the nature of the relationship.
- You’ll have to think about growing your team’s skills and careers, in addition to yours.
- You may have a higher level of responsibility, although often with less control. You’ll be responsible for the output of your team, but since you are not doing the work for them, you only have indirect control. The flip side is that you can have more impact as well.
- You’ll interact more with people. If coding felt a bit isolating at times you might find this refreshing.
- If your team is growing you’ll spend some of your time in recruiting activities.
Depending on your personality and inclinations, you might be excited or discouraged by this list.
Being a good manager is a lot about your soft and people skills. Number one on the list should be listening. Do you have empathy for your team so that you can hear what is, and most importantly, what isn’t being said?
If you are uncertain about this, you are not alone. I think it’s usually hard to assess yourself in these ways, in particular if you haven’t been exposed to this type of challenge. If you can, I’d highly encourage you to try this type of role in a smaller scale. Here are a few options:
- Become a mentor. Whether officially or not, make yourself available to junior engineers. As a mentor, you can give guidance, encouragement, and feedback.
- Be more involved in project management. Be on point to work on scheduling, run the scrum, maintain your backlog, etc.
- Be the technical lead. Most people are at this stage before they become managers, but if you are not yet playing this role this is a good way of practicing indirect influence, collaboration, and consensus building.
- Manage an intern. If your company has an internship program this is a good way of being a manager for a short time.
- Manager a contractor. Similar to the internship, but for contingent staff. This gets closer to being a full-time manager, but in most cases, the performance management aspect is lighter and you are not responsible for growing the person’s career.
I did all of these, and they were good practice and very informative experiences. But give yourself enough time. As I wrote in the beginning of the post, the start might not feel great and it’ll take some time before you adjust to your new type of contribution.
Finally, get yourself a good mentor on this process. The obvious answer is your own manager, but sometimes it’s helpful to have additional perspectives, in particular from someone who has some distance from your immediate organization.
Our industry needs more good managers. So if you are up for a different challenge and have the right motivations, I encourage you to try it. It can be a very fulfilling experience.
If you want to read more, I enjoyed this article: What Makes a Great Software Manager.
I’ve also read a couple of books which I found very helpful and recommend if you are going down this path:
Both books cover management topics through stories, so they are also entertaining. The Five Dysfunctions explores a set of common problems within teams. While I did not face these right away, I felt it helped me be more aware of things to look out for. The One Minute Manager is a set of very simple concepts around management that really speak to the human elements. Worth your time.