Having a long, successful, and technical career (one person's opinion)

As I’ve been working with developers looking to grow with their careers, I’ve been asked one question (or variations on it) repeatedly:

How do I grow my career while remaining technical? I don’t want to be a manager, I want to be a senior technical leader.

That question has prompted me to think about my own career, and what it means to be a senior technical leader. I’ve come to this conclusion:

Growing and having more influence means scaling your reach.

Let me go into some detail about what I mean by that statement.

No matter how good you are, there’s only so much code you can write. Being more senior doesn’t mean you code faster. You don’t finish designs exponentially faster. You are still a single individual, and you will still only get so much done in so much time.

Managers scale because have significant influence on their staff. To grow as a technical leader, you need to answer the question of how you scale? If you continue to view yourself as an “individual contributor”, you will find that you reach a point where you cannot continue to grow. (It’s even more important for your management to have a good answer to how you scale in the organization.)

Your value as a technical leader is measured by the positive influence you have on the other members of the team.

Scaling your Technical Skills

There are many ways that your technical skills can scale across your team. They all have a common theme: As a technical leader, your responsibility is to raise the technical skill level of the development team as a whole.

Here are a number of examples that your could take on to have a positive influence:

  • Pair Programming with Junior Staff: You can help junior developers learn good habits, better coding skills, frameworks, language techniques. You can also ensure they are following proper practices (as defined by your organization, be that TDD, formal specifications or other processes).
  • Start an in-house learning program: This could be a lunch and learn series, where developers present ideas to the team. You can take the role of program chair, and drive the content. You can present your ideas, and thoughts on software engineering and development.
  • Mentor Developers: Work with your management to make mentoring junior developers an explicit task. Measure progress by showing how you are helping these junior developers achieve their growth targets.
  • Proactively review designs and code: Reach out to the other developers on your team, and offer to help. Look at what they are doing, and offer feedback. Make sure that the outcomes get noticed: Did you positively influence the design? Are the team members growing as a result of working with you?
  • Propose and Implement training programs: There are a lot of options available for those that want to improve. Everything from online offerings, to libraries of content, to conferences to in person training programs. Work with your team, get proposals, get budget, and make it happen. Measure outcomes: show management that the team is improving.
  • Build something on the side: Work with team members to build proof-of-concept implementations for new libraries and new tools you want to use. You can even consider working with a charity (like HTBox) to buid software that can help their organization.

It’s About Your Growth too!

If you follow all  those suggestions, you may become a very respected senior leader for your tech team. Or, you may be seen as that jerk that criticizes everyone.

It’s about how you deliver your ideas.

The best senior technical leaders have learned how to critique, teach and help people grow. They are able to make suggestions that help people grow. They are able to have people take pride in their work, and yet want to improve it.

If you want to take on this role, you need to spend a lot of time working on how you deliver your ideas to your peers, and to the team members you want to view you as a technical leader. You’re not a manager; you have no real authority. You need to work on your inter-personal skills, and grow the muscle to affect change with everyone on your teams.

Yes, I’m talking about soft skills.

One of the best bits of advice I ever received was this:

There are few people that listen. Most are just waiting for their turn to talk. Be a listener.

These developers you want to mentor: they have knowledge you don’t. They’ve thought about the problems at hand. They are doing the best work they can today. Your job as a mentor is to tell them they are wrong, but to augment their thinking with your insight. That’s only possible when you listen to the thought process behind their design and code. You have to learn as much as you can about the problem, the proposed solution, and the thinking behind the process.

Only after you have listened, and learned as much as you can, will your guidance carry weight.

What about the company?

The last piece of the puzzle is to determine if your current organization’s culture values the role of a technical leader. Some do; some do not. You need to work with your managers to see if that role exists in your orgamnization.

If not, you can work with your managers to create it.

And, if your company and your management team aren’t interested in a role you want, you need to decide if it’s the right fit for you.

Some Closing Thoughts

More and more, it is possible to remain in a technical role and achieve career growth. You need to learn how to make technical skill scale across an organization. You need to convince the team and management of it’s worth. Most importantly, you need to grow the skills needed to be viewed as a technical leader.

Created: 2/5/2016 5:50:41 PM

Current Projects

I create content for .NET Core. My work appears in the .NET Core documentation site. I'm primarily responsible for the section that will help you learn C#.

All of these projects are Open Source (using the Creative Commons license for content, and the MIT license for code). If you would like to contribute, visit our GitHub Repository. Or, if you have questions, comments, or ideas for improvement, please create an issue for us.

I'm also the president of Humanitarian Toolbox. We build Open Source software that supports Humanitarian Disaster Relief efforts. We'd appreciate any help you can give to our projects. Look at our GitHub home page to see a list of our current projects. See what interests you, and dive in.

Or, if you have a group of volunteers, talk to us about hosting a codeathon event.