
Ask HN: How do I crawl out of the "Senior Engineer" hole? - throwaway_boy
I've been a software engineer for over a decade, and worked at huge companies and little startups. I know this probably sounds insane, but over that entire time, I only worked on <i>one</i> team/project where there was a notion of "tech lead", that is to say a technical individual contributor who was responsible for decomposing a project, overseeing the more junior engineers in its implementation, but was not a manager who managed those engineers. And that tech lead was me. Every other team/company I've ever worked at, I've basically been in a team scenario, where everyone worked in their own silos. I've always owned entire subsystems (even as a total newbie, painful as it was), never with another engineer over me, never with another engineer under me. I've had the words "Senior Developer" on my resume for almost 8 years now, over half my career.<p>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?<p>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.
======
webwright
You don't want to be a manager, but you want to move up from Senior Developer?
Directors and CTOs generally are (largely) managers. A big part of their job
is sales (selling product vision to the engineering team, selling engineering
realities to executives, selling jobs to prospective hires, etc). Do you want
that role?

The 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.

~~~
throwaway_boy
In my mind a manager is not necessarily a leader or the leader. And certainly
not a technical leader. Agreed though that a director/CTO is more of a
management position, but I've seen coding CTO's, especially in the startup
world.

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.

~~~
mikeryan
I've pretty much only seen coding CTOs in the startup world (or small < 30
people tech services companies).

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.

~~~
yesno
Here, let me give more "less painful" advise:

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.

~~~
mikeryan
So I can't speak to his particular situation. But in general I disagree with
this. I think quitting the job is the most important part. Consulting _is_ the
safety.

 _"Leap and the net will appear"_ \- John Burroughs

~~~
yesno
That is assuming everything will go well: this person will get a few customers
ASAP, within 1 week or 2, to stay a float for at least 1 - 1.5 years.

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.

~~~
gnosis
First, if he quits he might be able to consult for the company he just quit
from. They, presumably, know he's good and can do the work. So they could hire
him back as a consultant (where he'll probably make more money and perhaps do
more of the kind of work he's really after).

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.

------
toast76
It's like reading an Ask HN from me. You sound like me about 3.5 years ago.

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.

~~~
seldo
This was absolutely my solution to the same problem.

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 ;-)

------
variety
_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._

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.

~~~
j_baker
I don't think this is unique to programming either. In fact, this is the
reason why so many Narcissists and Psychopaths make it into management.

------
apike
In an organization that doesn't have a defined career path for engineers
(which is to say, most organizations), you need to take responsibility for
yourself if you want it. If you're on a team of engineers and nobody is
leading, then step up.

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.

~~~
throwaway_boy
You're right that more initiative will be required of me. In hindsight there
were times when there was a vacuum and I could have done something (ultimately
the vacuum always stayed there; noone stepped up as it would happen.) Lesson
learned. Right now my company is extremely small and utterly flat (it's
basically C _O's and non-C_ O's), so there's no room to lead anything. This is
really more about whatever I do next.

~~~
brc
That terminology sounds almost military. Is that in your past? Because you'll
have to throw out the services mindset where there is both a structured path
upwards and a structured chain of command. Those things are great for
organising massive amounts of people towards difficult goals, but that's not
necessarily the right fit for software development.

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.

~~~
throwaway_boy
I actually wrote C-asterisk-O's and non-C-asterisk-O's, as in wildcards of
CEO/COO/CTO/CFO, but HN seemed to parse my markdown and I didn't notice.
Whoops. :) No military past in my background.

------
gauthr
If you want to get leadership experience, you will need to take on a role that
requires it. To get that role, you will have to ask for it. The minimum
requirement for leadership is the ability to get things that you want.

------
abyssknight
Where I work there is a career path for technical people, but it tops out at
the "Senior Staff" level. Now, as far as the role goes, you can be an
individual contributor up to a point before becoming a "manager". You can lead
a team from a _technical_ standpoint without being a "manager". Those are what
we call Technical Leads, Software Architects, and Chief Engineers.

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).

------
zachster
I've always thought there should be no cap on either salary, or glamour for
advancing developers. We've all seen how a single person can drive the
productivity of an entire organization. The career path promoting great
developers into managers (and eventually CTOs) tends to take people out of
something they're great at and put them into something they might not be so
good at.

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.

~~~
wlievens
> The career path promoting great developers into managers (and eventually
> CTOs) tends to take people out of something they're great at and put them
> into something they might not be so good at.

Peter's Principle. The more professional experience you get, the more you
realize it's not a joke :-)

------
mikeryan
So there's a slight cognitive dissonance here. Outside of an architect role -
the only real way up is taking on more management tasks.

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.

~~~
Goladus
A think it depends on what you mean by "management task." If you take the
initiative to drive a really valuable project, can assume a leadership role
while ignoring a lot of the tasks the company typically assigns to a manager,
like performance reviews and meetings and ticket/bug metrics and timesheets
and project plans and timelines and deadlines and fielding every request that
comes your group's way.

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.

~~~
alttab
This comment may be lost in the fuss but shouldn't be under-rated.

You are a senior - you have mastered the technical. Time to move onto to
different kinds of problems.

------
Musashi
1\. Most HR departments use "Senior Software Engineer" as a catch-all title
for techies. Irrespective of the title that work gives you; you should name
yourself as an Architect or Technical Lead or Consultant, or all of the above
for the various roles that you've done (any other role that you can back up
with from your experience and skills). So long as you've been doing that work
there is no harm in that. Your skills and experience should back you up in the
title, whether or not the actual title of the role was such. If you retain the
title of Software Engineer, then that is all that recruiters will view you as.

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. :-)

~~~
sokoloff
While I agree in theory with #1 & #2, there's a very real element of danger
there. Many places will only provide a reference for start date, end date and
title/position.

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.

------
jonathanlambert
I don't know what to say — we're super aggressive in my company about
promoting talent to technical leadership roles. I run a small (22 person)
product/professional services company.

I think it might be the companies you're working for. If you're talented, and
you've talked to your boss about it, she/he should respond in the shorter term
with an opp. to accomplish your career goals. Or you need to leave the company
and _get_ a technical leadership job.

You might just be too tolerant to the paycheck.

I think that's why so many posters are suggesting you start your own startup.
Get aggressive (politely) about what you want. Once you know what you want,
the world either responds or whatever limits that circumstance goes away (if
you're _really_ clear).

My 2c. Startup or be clear with your boss or company switch.

< blatent advertising > BTW, we're hiring tech leads. :) If you do Drupal or
Mobile, email me. :) And no, this does _not_ affect my advice... I'm just
saying... < / blatent >

------
joshhart
Some companies have technical positions beyond Senior Engineer.

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.

------
ekidd
The game industry uses the title "Lead Programmer", which I like. A lead
programmer supervises "Senior Programmers."

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.

~~~
zach
As a word of warning, nearly every single lead programmer I know (in games)
find that their schedule and responsibilities tend to expand to the point
where they have annoyingly little time to focus on writing code.

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.

~~~
swaits
Several years ago, my producer forced me to stop coding, because it was
cutting into my time to manage, and I was frequently becoming "critical path"
since I couldn't stay focussed entirely on coding tasks.

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.

------
lubujackson
First of all, forget titles. There's really a mush of random titles near the
top now, and they can mean COMPLETELY different things depending on the
company. Think about your job on a personal level. What skills do you want to
refine? What skills do you want to learn? What skill do you want to flex every
day?

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.

------
trizk
As a very senior (and hopefully talented) software engineer, you should be
getting a fairly decent paycheck. Here two workable options, bound to get you
the result you want, with a degree of risk: 1) Save money while working on
"side-projects" at home. If and when one of them take off you should be able
to fund through early growth 2) Join a very small, interesting start-up and
take a relative pay cut for equity. If the start-up grows you will naturally
assume a technical leadership role such as Director or CTO.

------
crenelle
Folks who go beyond Sr. Engineer are very much into putting their ducks in a
row -- with extreme prejudice. They become CTO, Consultant, Senior Member of
the Technical Staff, Fellow, Startup Partner. That person initiates projects,
begins the R&D, writes the proposal, estimates the budget, create slides and
do presentations, evangelizes the ideas. You sometimes orchestrate prototype
development if you don't get to put one together yourself. If necessary you
take the idea and build a company around it.

------
Aegean
You need to show your management that you can handle architecting a design
from scratch or take a leadership role. Nobody will ever see your potential
and offer you the role. You have to take the initiative and express your
attitude on this. If they don't listen then you can switch your job to one
where you have more control (i.e. a startup) or start a startup yourself.

------
bigbang
Sorry to digress, but does an MBA in any way make the senior engineer to a
management role go faster, in a software company?

------
stevewilhelm
May I suggest that you talk to some of the peers that you mentioned that have
moved on to other positions. Ask them how the "strange leaps" came to pass.

You could also ask these peers how their current positions differ from that of
a Senior Engineer. What is better, what is worse, what did they find
surprising, etc.

Finally, ask the ones you really trust for an honest assessment of your
strengths and weaknesses.

In my experience, many Senior Engineers have a hard time moving up to larger
(in scope) problems or projects because it requires relinquishing ownership
and control of subsystems (silos to use your term) to other engineers, other
teams, and other companies. To do this well requires political skills many
Senior Engineers lack.

------
dalore
Sounds like you should do your own startup. Then you can be whatever title you
want.

------
clark
The alternative track is 'research scientist'. That's the title where you get
to play on the company's dime. Unfortunately, it usually requires a PhD and
have a strong publication history.

~~~
throwaway_boy
Yeah. That's way not me. Not really interested in playing, anyway. Would
rather ensure that I work someplace that's run well so I can go home and play
with a clear conscience.

------
dspeyer
My first thought is that this is the sort of problem managers are supposed to
help with. If yours is a good one, raise the issue with him. Failing that, my
thoughts:

It sounds like the position you want doesn't exist at your company. The next
steps:

1) Figure out exactly what you want to do. Write specs? Write the most
difficult code? Mentor other engineers?

2) Look carefully to see if the position exists after all, with some non-
obvious name.

3) If not, figure out what employer or class of employer would have such a
position.

4) Apply.

------
shorttime
Do you want to stay at the same company? There's always the option of moving
on to something new with more opportunities. Being able to do that opens a lot
of doors and one can climb the ladder quicker rather than waiting for someone
to retire/leave. The reason I say this is because many companies only promote
people based upon the company's _need_ and not the individual worker's merit.

------
rms
If anyone is looking for a product job, I just came across one of those rare
awesome product jobs.

Mention that you saw the job listing via my comment on Hacker News and I'll
split the "unusually large" referral reward with you or give the whole thing
to your favorite charity.

<http://asana.com/jobs#PM>

------
paolomaffei
I'm sorry but don't you a have a Project Manager position in your company for
overseeing whole projects?

------
CyberFonic
You must be a very capable senior engineer. Management will not promote
someone who does good work, reliably.

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.

------
greyman
Where I work, if one doesn't want to be a manager, he can go up by being
Architect and then Senior architect. Those roles doesn't require leadership
experience...simply, the best engineers who doesn't want to manage people will
become architects.

------
amorphid
If you want to move up and you don't want to be a low level manager, I see two
options:

1) Join a company with a technical track for higly skilled individual
contributors. 2) Become a consultant.

------
maxawaytoolong
It's easy to become a CTO at a small enough startup.

------
locopati
Even in a team where there is no architect or tech lead, there's room for
leadership. What parts of the process don't flow smoothly? How well is
information shared within the team and to other groups that you work with? Who
makes decisions about the planning and organization of dev projects? Who
brings new hires up-to-speed and mentors them? There are lots of places where
you can take on more than just dev work and you never know where that can
lead.

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.

