If you are a software developer with your eye on a management career, your path to get there may start with the role of senior developer. What are the skills and traits you need to be a successful senior developer that will also set you up for that promotion to management?
Excellent communication skills are essential as a leader, and they’re also a hallmark of a good senior developer.
- Learn to listen well. Creating a safe space and listening without judgment are important prerequisites to getting people to talk to you openly. Practice intrinsic validation to develop these skills.
- Communicate proactively both up and down the management chain. Provide your coworkers and your manager with the information they need to do their jobs well. Learn to anticipate what they will want to know. This multi-directional approach to sharing information will be important when you become part of a management team and your peers are leaders of their own teams.
- Be personable. This doesn’t necessarily mean you need to get good at small talk. Most introverts find it uncomfortable, and many software developers already have a tendency to avoid it in the name of efficiency. But you want to portray yourself as approachable and empathetic, rather than aloof and uncaring.
If you have a micromanager, here’s a tip from management researcher Liz Wiseman:
When your manager asks for updates more frequently than you want to give them, you will feel the inclination to rebel and provide less information. To improve your relationship, lean into that discomfort and give the micromanager more information, more frequently.
Since you are meeting them on their own terms, this shows the manager that you respect their desire to understand what is going on. It will make you both feel less defensive around communication issues, and sometimes it even has the effect of reducing the micromanaging behavior.
Get interested in the business
The higher you go in the organization, the more accountability you will have for business metrics. To be a successful steward, you will need to learn progressively more about how the business works, what incentives motivate your employees and customers, the challenges faced by the company, and the business needs of clients that your firm tries to solve. The more you can learn about these things now, the more prepared you will be to move into leadership.
- Talk to your clients. Get on the phone with them when project management or executives are discussing designs, pitching ideas, or selling solutions. Learn their terminology. Find out what is valuable to them and how they feel understood and valued. Learn your internal culture around customer relations, support, sales, and marketing.
- When making designs, think like the customer. Learn to ask the questions that will be most relevant to your clients to help you discover design flaws, suggest better solutions, or resolve concerns up front instead of halfway through the development cycle. What are they really trying to accomplish with the feature they asked for? Why is this bug so egregious in their workflow while other customers aren’t bothered by it? Will they like it if we add this feature or would it require too much retraining of their employees? What assumptions are we making in this design? What if the user did this instead of what we intended?
- Learn about your products. Take training on how to use your software from a customer perspective. Discover how your products fit into your clients’ business processes. What additional needs do they have that your company isn’t yet meeting?
- Understand the competition. What other companies in your market do similar things? How do they do it? What customers do they have that you don’t? What customers do you share? Why do some clients choose them over you?
In addition to all this, it will be helpful to understand the general principles of running a business. These are the kinds of things you might learn in a business management, human resources, finance, or accounting degree, but the level of understanding you need at this point doesn’t require you to go back to school for an MBA. Talk to leaders in other roles throughout the organization and learn how they do their jobs. Read books on the topics that interest you. The idea here is to get some baseline business administration knowledge so you will understand how you fit within the management structure once you get there.
Ask your manager which aspects of the business are most useful to know, and make it your goal to learn a little about those things each week.
After you’ve developed that baseline, ask a middle manager or executive the same question and make a similar goal to increase your understanding.
High-level decision making and delegation
As an individual contributor, management relies heavily on you to take the lead on complex technical projects and to be involved in the gritty implementation details that undergird them. This is still true as a senior developer, but your role will most likely involve some aspect of coordination within the team to accomplish the project together.
After you move into management, your responsibility to contribute to the critical path of the project timeline will be far less prominent and you will spend much more time coordinating and leading the team. As such, it’s useful to start thinking about this transition even while you’re still a senior developer. Several of your technical skills will make you successful at this:
- Deep domain knowledge that reveals hidden complexity early. When you understand your problem domain deeply (retail, insurance, advertising, entertainment, etc.), you have a much easier time recognizing and ferreting out potential pitfalls early in the design process. For example, it may sound simple to change the numbers in the reporting engine for a particular scenario. But you understand that doing so has ramifications for other types of reporting, and you may even know that because a certain piece of logic is shared, the change will impact another workflow totally separate from reporting. This level of understanding only comes through experience with the product and an active curiosity to learn more about it.
- Knowing when and to whom to delegate. You understand the architecture and infrastructure of the project well, which gives you a better idea of which parts of the project can be parallelized or divided among team members and which require concentrated effort by a single person. You are also beginning to understand the capabilities of each member of your team and what kinds of projects suit their interests and skills.
- Understanding which decisions to make up front and which to defer. Some details are best left to the developer who implements them and don’t need to be decided before the project begins. Your domain and product knowledge make it easier for you to know which details can safely be left to the discretion of individuals on your team and which details must be nailed down from the start or require consensus from internal or external stakeholders.
Once you understand these things, it’s important to learn to delegate to others on your team when appropriate. Giving up control over pieces of the implementation may be difficult for you, since your training emphasized precision and attention to detail, attributes you prize. If feel the impulse to micromanage a junior developer on your team who’s helping on your project, the next section is for you.
Make a list of projects you have worked on recently. Identify the high-level decisions you’ve made when designing and implementing those projects. Are you particularly strong with domain expertise? Are you great at delegating or do you tend to micromanage? Are you good at planning and anticipating challenges?
With that list in hand, identify areas where you’d like to improve on your strengths or shore up a weakness.
Finally, look at the projects you have coming up in the next six months. Which ones can you use to help you build the skills you want to work on?
The biggest value-add of a senior developer is not that their individual production is so high but that they increase the productivity of the others on their team. This is also true of management. And in either case, you can build your team in this way through mentorship.
Leadership is most effective when it does not require micromanagement. The two main reasons for this are that the leader’s time does not scale (meaning they cannot continue spending time micromanaging each team member as the team grows) and that trust and autonomy, often absent under micromanagement, fuel individual empowerment and, subsequently, productivity.
Mentorship is a balance between giving too much detail, information, or direction, and being too hands-off. The former is stifling while the latter feels floundering. As a mentor, you want to teach and train another person, giving them just enough framework to succeed while also giving them space to struggle and grow on their own.
Many of the principles of mentorship apply to leadership as well: listening, empathy, accountability, and mutual interest in a successful outcome.
Mentorship can be formal or informal. If you’ve never had a mentor before, now may be a good time to seek one out so you can learn from their example.
Who is someone you admire, either in your organization or elsewhere? Invite them to have coffee or lunch with you, or take a walk together. Ask them how they got where they are in their career and what they would suggest you do to achieve your aspirations. Be willing to accept advice and critique. Implement their suggestions and follow up.
Take on more responsibility
The tired aphorisms, “fake it until you make it” and “dress for the job you want, not the job you have” apply to your responsibilities in work as well. Offer to take on projects you are not quite qualified for, mentor a junior developer even though you’ve never done it before, volunteer to make a client presentation about a feature you’ve worked on even though you’ve rarely talked to customers before. Asking for responsibility like this shows a few things:
- You are willing to stretch and grow.
- You will take ownership. This includes owning your successes as well as your failures.
- You want to advance.
A promotion into leadership usually comes before a person is really qualified for it, with all the skills necessary to be an excellent manager still nascent. It will be a learning experience, and you will be asked to do things you don’t know how to do. So you want to demonstrate to your management now that you are good at growing into a difficult role, that you will put in the work necessary to be successful.
During your next one-on-one, mention to your manager that you are interested in taking on more responsibility. Offer to give input on technical decisions or be a mentor to a junior developer on the team.
Ask them in what ways you could help them be more successful in their job. Often there are things the manager wants to change or improve about the team, and by making yourself an ally in their efforts, you can build up your manager and make them look good. Do this with an eye toward service rather than self-promotion, and your efforts will be more valuable to the whole team.
Being a senior developer is a rewarding position and can teach you a lot about what it takes to be a successful manager. Examine your current responsibilities in light of what skills they are helping you develop that will benefit you later in your career. Be clear about your aspirations, keep that goal firmly in mind, and do your best work in your current sphere of influence while you work to get there.