5 ms·
Ask HN: How do I crawl out of the "Senior Engineer" hole?
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 one 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.
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.
- gauthr 16y agoIf 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.
- webwright 16y agoYou 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 16y agoIn 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 16y agoI'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 16y agoHere, 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.
- apike 16y agoIn 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 16y agoYou'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 CO's and non-CO's), so there's no room to lead anything. This is really more about whatever I do next.
- brc 16y agoThat 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.
- mikeryan 16y agoSo 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.
- throwaway_boy 16y agoIn the places I've worked that were large enough to actually have names and levels and whatnot, manager/non-manager was always a totally separate dimension from job level. You could easily have a level N engineer being managed by a level N-1 manager. A level N engineer becoming a manager produced a level N manager, it was not a promotion. So I've never seen how becoming a manager means going "up."
- Goladus 16y agoA 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 16y agoThis 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.
- zachster 16y agoI'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 16y ago> 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 :-)
- locopati 16y agoEven 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.
- abyssknight 16y agoWhere 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).
- ekidd 16y agoThe 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 16y agoAs 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 16y agoSeveral 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.
- swaits 16y agoHere at SCEA (San Diego Studio), for programmers we have: Associate Game Programmer, Game Programer, Sr. Game Programmer, Staff Game Programmer, and Sr. Staff Game Programmer (of which there are none that I know).
- clark 16y agoThe 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 16y agoYeah. 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.
- toast76 16y agoIt'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 16y agoThis 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 ;-)
- maxawaytoolong 16y agoIt's easy to become a CTO at a small enough startup.
- deleted 16y ago[deleted]
- deleted 16y ago[deleted]
- variety 16y agoI 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 16y agoI 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.
- greyman 16y agoWhere 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.
- Aegean 16y agoYou 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.
- CyberFonic 16y agoYou 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.
- paolomaffei 16y agoI'm sorry but don't you a have a Project Manager position in your company for overseeing whole projects?
- Musashi 16y ago1. 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 16y agoWhile 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.
- trizk 16y agoAs 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.
- cellurl 16y agoIf you want something you have never had, you have to do something you have never done.
- dalore 16y agoSounds like you should do your own startup. Then you can be whatever title you want.
- crenelle 16y agoFolks 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.
- joshhart 16y agoSome 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.
- lubujackson 16y agoFirst 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.
- stevewilhelm 16y agoMay 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.
- bigbang 16y agoSorry to digress, but does an MBA in any way make the senior engineer to a management role go faster, in a software company?
- rms 16y agoIf 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 http://asana.com/jobs#PM
- jonathanlambert 16y agoI 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 >
- dspeyer 16y agoMy 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.
- deleted 16y ago[deleted]
- shorttime 16y agoDo 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.
- amorphid 16y agoIf 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.