Photo by Scott Webb on Unsplash
I wasn’t a big fan of managers in my decade long programming career. I took pride in my accomplishments as a developer, the individual contributor. After all, I was the one making things happen or part of the team that made things happen. We built features, fixed critical issues and in my view, only reason business existed was because developers worked hard.
I’ve been manager for almost three years and been leading software development team for quite some time now. And, I wasn’t a great manager to start with. I’m far from being a great manager but I’ve learned a lot in last 3 years. Most of the skills I’ve learned isn’t technical.
Here are three things I focus on.
1. Relationship & Influence
In leadership expert John Maxwell’s words, ‘Leadership is Influence’. This should be number one in a manager’s list. To build influence you have to go above and beyond your role to make sure your team members are comfortable experimenting and have confidence to think out of the box without fear of adverse consequences.
Building influence includes two components — having competency in what you do and ability to switch off technical mind and focus on what your team loves to do. It could be going for lunch together, fitness sessions, may be bowling nights and other ways of just having fun at work.
2. Trust In Team Members
One of the easiest trap to fall is to get into specific details and micro manage. As a manager, you’re captain of the ship, focus on the direction your ship is heading, not how individuals are doing their job. This doesn’t mean you should ignore it but let your team members make decisions best to their ability. Most of the time, if your team is empowered, they will come up with good enough option if not best.
Believe me, there’s no perfect code in the world. Show a code to programmer and they’ll tell you how it can be improved. If you have team member not producing minimum acceptable output, then you need to go back to drawing board.
Think why is that the case, is it because the team member doesn’t have motivation or may be is struggling with process or simply going through rough time in life. So, rather than getting stuck into tiny details, focus on outcomes. Trust your team.
3. Be a Manager
If you come from developer background as I have, it can be hard to let go of the things you could do yourself. Starting as a manager, you might realise there won’t be a list of things to check off. There will hardly be a moment where you get to stand in front of directors or business stakeholders and say ‘I did this’. It will instead be ‘The team accomplished this and major contributors were your team members’.
You’ll also be spread thin doing support, meetings, documentations, fixing server issues, advising on solutions, approving leave, hiring, managing interns, curating backlogs and more.
I find there will often be temptation to take on a task but that won’t do any good to your team. Too often managers forget that they are supposed to build a team and empower team members. You won’t be able to say ‘I built that feature today’ but you should be comfortable with the fact that you enabled your team members to be their best. Of course you won’t get credit for it and it won’t be visible to most of the team members. You're a manager so focus on being manager not the tasks.
Being software development manager isn’t for all. If you enjoy building things, getting things fixed and getting deep into problem solving, you would be great individual contributors. I’ve seen some fantastic programmers in my career who get things done and are leading the team in their own way.
If you love building a team, helping shape the product/ culture and be responsible for ultimate outcome then you can be a good manager. But remember there will be a lot of frustrations, setbacks and stress as a manager. Sometimes you may even question your existence in team but never lose sight of the ultimate outcome.