Ask HN: How do I crawl out of the "Senior Engineer" hole?
I don't want to be a manager. But it seems like something's missing, that I don't have any "project leadership" experience on my resume (save that one time, which was a success I might add.) I'm confused about what the next step for me is supposed to be, and how to get there. It seems like the things above me on the career ladder (architect, principal, CTO, what have you) are not attainable because of this absence of leadership experience. I mean, is this something that even exists or am I just imagining it? I see peers (coworkers who eventually moved on to other places) who make these strange leaps from Sr. Engineer to Director or CTO and I don't understand how they did it. Should I just try applying to a higher-up position sometime?
I'm open to any and all career advice. This really isn't about money or responsibility, it's just about ensuring that I'm not stalling out somewhere in my professional growth. I guess I'm trying to say that I'm concerned about my long-term trajectory.
58 comments
[ 4.4 ms ] story [ 273 ms ] threadThe organizational pyramid is just that. Not every senior dev moves up (or should move up if happiness is a priority). You shouldn't look to your peers to tell you what's next for your career. How do you want to spend your time at work compared to how you're spending it now? Do you want harder technical problems? More product design work? Something else? You've already expressed that you don't want to manage folks, which closes off a lot of paths.
I don't know what I want career-wise, vertically speaking, and that would be proprietary to every employer anyway. What I'm getting at is that I feel like I should be able to contribute more at this point, most simply expressed as helping the team and company make better technical decisions. How do I leverage myself better?
I'm kind of at this point where I feel like I've maxed out whatever my job title is now (NOT just speaking about my current employer - just speaking about my career in general), and feeling bored and stagnant. I don't really know where I want to go, because I'm not sure where I CAN go. I know there's a path to management which I've turned down repeatedly (I'm not interested in managing people, in having one on ones, as operating as an extension of HR in ranking employees, etc). And I see people who have made a quantum leap somehow to something well beyond a Sr. Engineer - say, Architect (kind of an out-moded term in my mind), or "Principal" which is a kind of nebulous guru-like position. Is there a third choice beyond just staying in place?
It's just really nagging me to feel like I'm not growing. I've done so many things - desktop applications, web, e-commerce, mobile, client, server, frontend, backend, enterprise, yada yada. I've run out of room to grow in that dimension, because I've been around the block and back.
Go start a company if you want to grow. You sound skilled. Quit your job, start consulting and start a product on the side as a technical founder.
1) Don't quit your job, start consulting on the side
2) Don't quit your job, start a product on the side
Both options won't cut paycheck. Take calculated risk. OP is no longer a 24 years old super smart developer.
"Leap and the net will appear" - John Burroughs
Consulting requires networks and connections. If the person stick too long as a "Senior Software Developer" and rarely meet non-geek human being (potential customers), it'll be a while before the person can get a well-paying less-stressful consulting offers.
Second, if you work in the technology field, meeting geeks is a great way to find potential clients. People in the technology field tend to move around a lot from company to company and from position to position. So the developer you meet at one company today may well be a manager or even a CTO at another company tomorrow. They will probably be the very people who'll need to hire consultants at some point in the future. Make a good impression on them and keep in touch, and you'll have a nice network of contacts for consulting work down the road.
As a senior developer, I bet he's already made plenty of such contacts. Now it's just a matter of getting in touch and letting them know he's looking for consulting work.
My advice would be:
1) Make sure you have at least 6 months worth of savings. 2) While you're still in your day job try to land a freelance or contract job. 3) Once you have a gig, THEN quit your job. 4) When the freelance/contract job comes to an end, look for a new one.
Now point 4 will take some time. Maybe a few weeks sometimes more than a month. In that time-frame you can work on your project/product full-time. You might have to go back to contracting, but at least you can put in some decent time to work for project.
I noticed that some people weren't born to become Jason Calacanis, Zuck, Gates, Hsieh. For these type of people, they have to play a bit safe or else they will regret their choices by cutting the oxygen lifeline and hoping by 1 year things will pick up.
Let me rephrase that: following your 1,2,3,4 steps, 10 years from now he'll probably end up either jobless, have less money in the bank, or even in less favorable situation (working for less money, worse jobs, etc).
We're using the same assumption correct? that either consulting or the product were not successful.
One gig is definitely not enough. Consultant needs to build portfolio in order to get more gigs so that they can rely less from their networks. That is to assume the OP have a pretty good connections that could help him land few gigs.
People always said that "make sure you have X-months worth of saving".
People say the following phrase quite often as well: "money is not a problem". I'll add one word to that phrase... "...yet". Money is not a problem yet (so far).
Once you started to realize that money becomes an issue, your mind will have hard time to focus and concentrate. From that point onward, whatever you'll do won't be optimal.
To sum up my advise: make sure you have a fixed stable income. Once that's taken care of, your mind will have more capacity and effort to focus on something else.
Help newer engineers learn skills, help interview people, help run meetings, and instigate new projects. Cook up a new product or feature, and champion it. If it goes well, you'll be the de-facto tech lead.
Of course, you might just be at a very flat organization where nobody reports to an engineer. In many companies there is no formal idea of a tech lead - you report to somebody who used to be an engineer, but is now a manager.
To me most of the boxing in is done in your own mind. In my last corporate job I was a team lead who never touched the code. I was supposed to go though my manager for stuff, but he was the problem. I learnt to go straight to the CEO - most of the time the 'open door policy' isn't just lip service.
Many people face the problem in their careers that they think there is a stuctured hierarchy where you can't jump levels for problem solving, initiative or anything like that. So do stuff like that. Your job is really to make the company run as well as possible, whether that is coding or leading changes that need to be made. Staying in your box really means staying in a box that someone else has designed for you, and being successful means spreading your influence by whatever means. Just don't be an a-hole and treat everyone with respect, even those who disagree with you.
For the most part, I get my projects done, start my own in areas where I know there is pain, and advocate for other projects/solutions when I think they're applicable but I'm too swamped with my own work.
It's an issue I've been meaning to bring up with my supervisor ("So just how do I fit in? What's next?"). Is a frank discussion with your CTO out of the question?
A lot of larger companies are seeing this as an issue so they are adding gradients to what a SSE is (SSE 1, SSE 2 etc) but really the answer is you're going to have to move up via a team leadership role and this means more management and less engineering.
So I've never seen how becoming a manager means going "up."
Meanwhile a good leader will drive and inspire the team by making and pushing excellent design decisions, obtaining needed resources, doing the oxen's share of grunt work to get the project off the ground, and energetic mentoring of other developers.
You are a senior - you have mastered the technical. Time to move onto to different kinds of problems.
On the flip side, the best technical managers I've worked with were not very technical at all.
I did take the route of advancing into a CTO position. There were parts of it I really enjoyed, and parts of it I dreaded. Those overlapped predictably with the parts I was bad at...
I would do it again, for the right project. But with a much clearer understanding of which responsibilities I will take for myself, and what I which I will delegate.
My advice to you would be to focus on the parts of your job you love, and make sure you're getting the credit and rewards you deserve. If that means you're a Senior Developer for the next ten years, it should also mean you're getting profit sharing, an office (if you want one) and a recognized position as a driver of the company's future.
Peter's Principle. The more professional experience you get, the more you realize it's not a joke :-)
Mind you, I don't see anything wrong with being a Senior Dev if that's what you're happy doing. In general, I think there's value in an experienced developer who enjoys their work, can articulate technical concerns to the non-technical, mentor new tech hires, and carry some institutional memory.
My suggestion would be to ask (or even take) on a leadership role. Fake it til you make it, and put the results in your annual performance review. Write it up really well, and make sure you show results and not just state what you did. Show that your leadership adds value.
You do not need a formal leadership role to do this.
Mentoring is a quick way to put a notch in your leadership role, especially in your position and level of expertise. Share best practices with some junior engineers, and help them learn, grow.
You can also take on tasks outside of the office to build a proof of concept or the like that saves the company money or adds value. I have a mentor who became a senior manager after developing what became our enterprise email infrastructure during off hours with a small team of colleagues. He's now a CIO of a large part sector of the company.
A third idea, and we love this one where I work, is community leadership. Whether its helping out at a local non-profit, or spearheading a one time event for a holiday food bank, these are great opportunities to demonstrate leadership. (They're also a good idea in general, and great karma!)
That said, I am right there with you. I spent 4 years working in software development outside my current company, another 2 years at the company, and just now entered a leadership development program. There is a tremendous amount of soft skill development involved in the program I am in, and it really does help (even if it frustrates me at times).
This role combines architecture, project management, and some light management responsibilities for the team. You're still writing code, but you have overall responsibility for the technical parts of the project. It sounds like you've held this position at least once, and succeeded.
Beyond this point, you'll either need to move to organization with a full-fledged technical career ladder (and try for a title like "Distinguished Engineer" or "IBM Fellow"), or pick up more management skills and go for "CTO" or "VP of Engineering."
I'm learning management skills, and enjoying it: There are lots of problems which can only be solved by changing an organization as a whole, and not just by writing code. Even if that code is very sweet.
The sole exception I can think of was a founder of the company -- he was able to effectively delegate management responsibilities and did not need to answer to anyone when he went into heads-down mode to work on a major task.
I do miss coding. But, at the same time, when I want to play around (at home), I'm not completely burned out on it.
I was in the same situation, dev lead for 10 years. Bored. But I hated shuffling papers more than I hated being a drone...even if I was a senior drone.
What you need to do is start your own Startup.
What you're lacking in experience is only a problem if you need to actually manage people. You must likely have plenty of experience actually running a project... why not run your own project. Do consultancy on the side (even to your existing employer), but get out and do your own thing.
In time, you'll hire your first employee, then your second etc. There is far more career progression when you're growing a pyramid beneath you.
I'd been a solid dev for 10 years and the closest I'd come was being an unofficial team lead a couple of times. I found it hard, in a big company, to work on raising my profile without feeling like I was taking credit for other people's work. Sadly, it's hard to get recognized as being a "leader" if you are scrupulous about acknowledging the efforts of your team -- even if your team-mates recognize your leadership role, nobody asks them.
I'm also, frankly, an insubordinate bastard -- I always get along really well with my immediate manager and co-workers, but upper management tends not to like me because I poke fun. So it's easy to see why nobody was running to promote me, and I can't say I really blamed them.
So I jumped at the chance to be tech lead and co-founder of awe.sm. Now I have my own team, and I am getting to prove my leadership credentials first-hand. I'll let others decide how well that's going ;-)
Really, the only thing you're lacking -- and I do not say this lightly, or mean this disparagingly -- is chutzpah.
The simple (and sad fact) is, that for the vast majority of these CTO/COO/CEO types, whether they happen to possess great talent, or not -- what happened to catapult them through the glass ceiling into that "leadership" role was one of two things: (1) they were already working in an organization for some time and there was suddenly a vacuum, a great need for someone to "pick up the reins", and the were seen as "the only one in the room"; or (2) they were simply very brash, and repeatedly but persistently insinuated themselves into the "technologist, visionary, co-founder, (what have you)" role and eventually (perhaps with the help of a thick skin and/or immunity from the crushing weight of self-doubt that afflicts most normal, healthy people I know) it finally stuck -- someone finally believed them, and they got that brass ring -- that CTO job in their 20s, million-dollar funding for their company, speaking gigs at TED, whatever.
What I vastly prefer working with managers/principals in the first category, I find the latter path to "greatness" is far more common. I don't mean to belittle these kinds of characteristics, or to say charisma and the ability to sell one's self isn't important, or anything like that. But it does seem is that part of what keeps (very good) engineers in that "worker thread" category, it seems, has (very sadly) a lot to do with what made them good engineers in the first place -- the ability to stay humble, stay focused on just being really excellent at what they do, not for the vanity (or the outsize paycheck) but simply for the sake of excellence itself -- and above all, not taking themselves too seriously.
You might have to gain some leadership experience in an alternative way. Something outside of your work like sports, charities, politics, arts - something that interests you.
2. Remember; YOU OWN YOUR CV/RESUME! You can write whatever you like and think will sell you best. Don't say you're a Chess-Grand-Master if you aren't but write that which sells you and your skills and shows them in the best light. You don't need to write everything; focus on your strengths and those areas that show your team leadership and advanced skills. Structure it appropriately and you'll be able to include all your skills (so you appear in search results) and target your strengths.
3. Look for some certifications in an area that interests you that if you tag to your resume/CV will give you the leg up you need. PRINCE 2/PMP/ITIL if you're looking for management leanings; MS/SUN/Oracle architect/DBA certs if you want to keep a foot in dev.
4. Get an MBA or MSc in a specialisation.
5. Find a niche - personally, I'm in Security, but there are plenty of others out there.
6. If your present company won't give you the opportunities, leave and find a place that will. If your skills and experience isn't recognised, then there's no point playing the sucker for them.
7. Double check yourself; the problem may be with you. Work on your soft skills: Make sure people like you (don't become a kiss ass, but just try to get on with people - especially managers); Work on your communication skills (Email, powerpoint, speaking, presenting, mentoring, documenting, making a proposal).
If you don't want to be a slave to a manager/HR hiring you, then you can always go the start-up route. I have little to no experience here, so I'll just leave that hanging as an option. :-)
If you self-grant and put "Lead Architect" on your resume and your reference check comes back with "No, that wasn't his title. His title the whole time was Senior SWE.", how's that going to look?
If you want to choose your own title, and you've been doing good work for your current company, propose a new title/role for yourself.
To the OP: if you want to find ways to have a bigger influence, but you don't want any stink of management to get on your hands, you may have a long road ahead. While you don't necessarily need to formally lead (and review, set comp, etc) as a career manager, you're probably going to have to do things that look a lot like management of one form or another: technical, project, career/people, or a mix. It's hard to have a significantly larger impact without doing something beyond individual contributor work.
LinkedIn goes up the technical chain like so: 1. Software Engineer 2. Senior Software Engineer 3. Principal Software Engineer 4. Software Architect
All of our architects still code, I believe. Some quite a bit. There are also Engineering Managers, Directors, and Senior Directors, but this is going the management route. Most engineering managers here code a bit, and a few directors still code (or at least script useful queries for helping diagnose issues when working cross team)
I think it all relies on stepping up to the plate, either technically or managerially.
I don't think that minimal experience managing will completely ground you, but if you want to be a CTO, start to think like one and learn the things that CTOs have to know. You can always start at a young company and grow into a role if you pursue it. Good, young companies like to hire hungry people who want to grow into their roles. You might also get advice from some good headhunters, who see people in your position all the time.