I’ve done quite a bit of mentoring. I enjoy it because actually “saying it” forces you to transform your vague ideas into crisp ones. One of the most frequent issues people want to work through is how to become a senior technical individual contributor (IC). We all have lots of examples of technical people that go into management and advance their careers. That model of career advancement is as universal as it is straightforward: Manage a bunch of people, don’t screw up, ship on time and then do it again at a bigger scope until you stumble and get fired.
The path to becoming a senior technical IC is less obvious to people so I thought I would share some thoughts on the topic.
Do your Job
Sivaprasad Padisetty (Siva) is the Director of development for the Windows 8 Management and Solutions Platform team and is one of the finest technical managers you can find. A while ago he gave a very thoughtful detailed talk about the dynamics of being a technical IC and one of his key messages was, “do your job”.
The point Siva was making was that every job level has its lessons to learn and that you have to take the time to learn them to completion before going onto the next level. For example, a key element of very senior technical ICs is the ability to formulate and drive strategy. If you are a junior developer, you should be focused on great coding practices, great design and great development processes and time spent thinking about strategy may not be your best investment. Chances are that you are not going to be invited to the meetings where strategy is discussed and determined and let’s be frank – who is going to listen to a junior engineer about strategy if they can’t write good code? That is like a kid being convinced that he belongs in the World Series so he is not going to waste his time playing little league. Play at the level you are, do your job and master the lessons it has for you.
The next aspect of “do your job” is really a statement about focus and priorities. It is important to stop and think about your career – every once in a while. Mid-year and end-of-year reviews are explicitly about this. Other than that, you should “do your job”. In other words, the way you advance your career is not by spending a bunch of your time thinking about how to advance your career. It is by delivering results and having a real impact on the customers and the business.
Here is the model that you need to keep in the forefront of your mind: you can’t prosper unless the company prospers, the company can’t prosper unless the customers prosper. So if you want to prosper, then focus on the customer and the company first and then the right things will happen over time. Now sometimes things go wrong and the math doesn’t work out correctly – you can prosper while the customers/company don’t or vice versa. My experience is that these things all work out in the end. You are the level that you are and you will find yourself in that level in time. If you are below where you should be, that will self-correct by the company recognizing and fixing its error or another employer will recognize and fix that error for them.
Become a Development Lead or Manager
I tell anyone who wants to become a senior technical IC that they need to become a Developers Lead or Manager for a period of time first. This confuses people because that is explicitly what they don’t want to do, they want to be an IC not a manager. Here is why you need to do it. Any senior IC has to partner with a manager or a management team in order to be successful. If you don’t understand that job then you can’t be an effective partner. You need to understand the job well enough that you know when you can successfully push for something and when you should just keep your mouth shut because it isn’t going to happen (e.g. “Our org has better developers than the other orgs so we shouldn’t have to fit the curve.”) You need to understand the full magnitude of the crap that manager has to put up with and go through in order to create an environment where his/her people can get their job done. You need to understand it, you need to appreciate it and you need to partner with them go create a successful environment as well as a successful product. Your team can’t succeed unless your boss succeeds so you need get that in focus and enter into a true partnership with that manager. Knowing what that job really entails is the best way to be a great partner.
The Three Things Every Very Senior Technical IC Must Have
Most technology companies have a set of levels that your manager can promote you to. Above that, there are a set of levels that your manager can submit you for but can only be given through some sort of community process. At Digital, your boss could promote you through Principal Engineer but then we had a very lengthy process to become a Consulting Engineer (at least it was lengthy for me 🙂 ). At Microsoft, we have something similar but we call them Partners and it is open to a wider audience (PMs and Test as well as Development). Because your boss can’t give you this promotion and because your boss might not even be privy to the process, they might not be able to give you a clear set of steps you need to perform in order to get promoted or be able to articulate the promotion criteria.
The first thing you should realize is that this boundary is a very hard barrier to break through. The vast majority of developers are going to top out their technical careers below this barrier. There is nothing wrong with that. Related to that is the fact that there is a very different set of expectations on the other side of that promotion so you if you are not ready for that game and you get promoted to that level, life is going to be super uncomfortable. While various companies have various processes, my experience is that they all basically look for the same three things that Jeff Schriesheim explained to me years ago at Digital:
- Technical “twinkle”: A history of technical accomplishments that other senior engineers look at and say, “wow”. Not just a bunch of code or a slew of features but rather something that shows originality and accomplishes something that could not be accomplished even if you had 30 or 50 principal engineers working on the problem. Twinkle is the hallmark of a special engineer.
- Business impact: At the end of the day, the company is about having an impact and the easiest way to measure that is money. You can have all the twinkle you want but if you aren’t putting cash in my pocket – then your presence is indistinguishable from your absence.
- Community acceptance: At big companies, major things happen by having senior people work together to solve hard problems. If you will not be accepted by the existing community of senior technical ICs then you can’t contribute to solving this class of problems and therefore you are not a senior person.
Once you are a Senior Technical IC, there is another set of rules and dynamics that come into play but that is a topic for a future blog entry. I’ll leave you with this. Getting promoted to Consulting Engineer at Digital was one of the proudest moments of my life – I was accepted into one of the finest technical communities the industry has seen (the list of people in that community is staggering). One of my mentors was Mark Storm, a Consulting Engineer. When Mark congratulated me on my promotion, I joked asking him if I know got to learn the “secret handshake”. Mark said, “We don’t have a secret handshake but we do have a motto: Often wrong, never uncertain.” 🙂
Jeffrey Snover| Distinguished Engineer and Lead Architect for Windows Server