Piaw Na, Author of: An Engineer's Guide to Silicon Valley Startups (http://books.piaw.net/guide/index.html), Author ...
Répondu il y a 191w · Voté par
Drew Eckhardt, 20 years as a system software engineer, 5 startup veteran · Author has 1.1k answers and 8.3m answer views
Here are the pros and cons of going into management.
- Managers are much more likely to have a well-defined schedule, since meetings pretty much can't go much past 5:00pm, and don't usually start before 7:00am. When you're no longer an IC, you aren't usually expected to go on call. If you have a family, management is much more conducive to spending time with them than an IC with on-call roles, or who might be expected to push hard at the end of a project to the exclusion of all else.
- Managers get involved in long term strategic direction in ways that ICs are not involved in. Sick of getting projects cancelled by upper management for no reason? Well, being a manager and being able to represent your team's interest is one way you can get involved.
- As Jeff Nelson mentioned below, managers have a much higher ceiling. Not only is the management ladder easier to climb, managers get much more leeway in making mistakes than engineers do. In a New York Times story which I reference here: Startup Engineering Management, 2nd Edition, I note that a poorly performing engineer in the same position would have gotten fired, while the poorly performing manager described in the article not only got coaching, but got a promotion for simply not being the worst manager any more. This is huge. As an IC you rarely get any individualized coaching that companies regularly put into managers.
- Politics is paramount to performing well as a manager in a medium-sized to large company. It doesn't matter how successful your team is, if you can't sell your success to upper management, you are screwed, as is your team. (Note that this is very different at a startup: a startup's dependent on success in a deep way that medium to large companies aren't, so even if you aren't an ass kisser, build a successful team and product at a startup and you're golden). If you read Dale Carnegie's How to Win Friends and Influence People (Review: How to Win Friends and Influence People), and you feel slimy every time you use a technique that's described, you are probably not a good candidate for management in a medium to large corporation.
- You really have to be able to derive pleasure from your team's success, as opposed to being able to point at certain modules/architecture/designs and say, "I did that." This level of indirection is difficult for many to stomach, but is essential to success as a manager.
- There are no good formal training programs for engineering managers that are worth jack. A degree in CS from MIT, Berkeley, Stanford, CMU in which you worked hard, understood the work and did major projects pretty much guarantees that you will be a competent IC. An MBA from Harvard doesn't even come close to guaranteeing that you'd be a great engineering manager. In fact, depending on your technical background or lack thereof, it could make you a terrible engineering manager. (That's why most MBAs go into financial fields rather than engineering-oriented startups --- the MBA training is actually more of a grounding on the financial side) This shortage of formal training (or even informal training) means that there are no guideposts. Every bit of success you have depends on either your ability to pick it up as you go along, or close mentoring from other more experienced managers.
- Even worse, performance as a manager is completely context sensitive. That means that your skills are completely non portable from company to company. Again, this is no big deal if you're skilled politically, but it does mean that your social awareness has to be very tuned whenever you switch companies.
For me, every time I went into management it was because the alternatives were usually much worse. In other words, if I didn't do it, they'd go out and hire an outside manager to manage me, and that rarely went well. But at a large company, there's probably room to be an IC forever if you pick your managers carefully and don't mind the eventual ceiling.
Michael O. Church, a étudié au Carleton College
Mise à jour il y a 190w · En vedette sur Forbes · L'auteur dispose de réponses 1.5k et de vues de réponses 13.7m
Vous aurez Probablement want to go into management or, at least, some sort of technical and architectural leadership.
That said, don't think of it as either/or, even though others will push you to think in such terms. Doctors who end up managing others are still doctors, and identify as such, and will still spend some time on "doctor" work. Law firm partners are still lawyers. I think that it's often good to still identify as a software engineer, enough to stay motivated to keep yourself current and maintain the respect of your subordinates, and (unless you've crossed fully to the dark side and have no intent on coming back) to spend at least a quarter of your time writing code, even if it'll never be put into production. Being "a boss" doesn't mean you have to stop doing the work that you manage. (You should, however, avoid being the sort that takes the best work and delegates the crap to his subordinates. People hate managers like that. You should take the ugly easy work and, occasionally, a hard "fun" problem that most other people couldn't solve. Or pair with your best subordinate and make it a mentoring exercise.)
To be blunt, being a traditionally gérés programmer has most of the downsides of being a manager. There are star individual contributors ("ICs") who get to hop around from fun project to fun project and call shots and work on whatever they want, but if you're not one of them, you're better off being a manager than an IC. Sure, middle managers have to deal with politics, have little control over their own time, are at risk of other peoples' fuckups impeding on their careers, and are lucky to get 25% of their working time available for "real work" as an IC would define it. Piaw Na's answer discusses that. The flip side: grunts are aussi pushed around by political forces, rarely get to decide what they're working on, are just exposed to others' incompetence (including that of colleagues and superiors) and are lucky if they get to spend 25% of their working time on projects they actually consider important.
When you step up from being a grunt to middle management, the downside is that you can no longer hide. You're expected to be a leader. If you slack or fuck up, you can pass blame around and toss subordinates under the bus in the short term, but that doesn't last forever and you'll lose everyone's respect. A grunt can fall to 5 hours per week and still has half a year to a year before he's fired. A highly-titled IC (say, a Staff SWE at Google) can slack for two years or more, coasting on the presumed prior accomplishments that made the title. For a contrast, a middle manager who slacks hard and starts gumming up the works of a whole team is going to be spotted. There are middle-managers who are worse than useless, but not because of laziness. If you want the "comfort" of knowing that you could drop to 5 hours per week and stay employed, you won't get it in middle management, because people actually depend on you. You also have the perennial ethical conflicts between managing up versus down, the conflict between people management and product management (what if the best thing for your people is to let them leave their assigned project?), and the need to snag some of the juicy technical work to keep current but without becoming that (generally hated) archetypal boss who took the job to self-assign the fun stuff and delegate the shit work. There's a lot of balancing of conflicting needs that you have to do, and it's not easy for everyone.
Enfin, middle management has a time-in-grade factor. While programmers complain about age discrimination, it can be worse for executives, and while chronological age is less often used against someone, time-in-grade issues are much more severe. No one cares if you're 32 or 47 or 61, exactly, but spending more than 5 years as a middle manager gets you the "terminal middle manager" label. You won't get the best people under you (if you can't get yourself promoted, why would they trust you to get leur promoted?) and will generally see a decline in the quality of products, teams, and jobs open to you. Eventually, you'll be "expensive" relative to the perceived (if not always the actual) value of what you do, and you'll be managed out.
In that time as a middle manager, you want to bounce past the effort thermocline, which is where jobs get easier and cushier (due to enhanced power and social status, and the willingness of almost anyone to do you favors) with increasing rank, rather than more difficult. A middle manager's job is harder than a grunt's, but a VP's job is easier than a Director's, and a Director's job is easier than that of a scrappy middle manager trying to make himself matter. (That doesn't quite apply to CEOs themselves; CEO-ing might be the only executive job that is actually difficult, but it applies up to the #2 spot in most companies.) It's when you get past the effort thermocline that you're actually "in the club".
Middle management in a typical company, quite frankly, sucks. You are responsible for others' work, but you don't get to set strategic direction, you're still implementing others' crappy ideas, and you get no respect from above. If you don't move past the effort thermocline within 5 years, people will think that you're a loser. ICs, at least, have a justification of not wanting to get into "that management bullshit". If you're labeled a terminal middle manager, you fait get into "that management bullshit" and just sucked at it. So why might I recommend it? A few reasons. First, if it's a small and growing company, you can move past the effort thermocline. That opens a lot of doors. You are part of the business, not its materials. If you want to be a startup founder, you'll need connections and you get those as an above-the-thermocline startup employee, not some loser engineer on 0.05%. Second, it's a learning experience. If you have to write a PIP, you will know how to beat one. (You can't prevent yourself from getting fired, but if you know what managers know, that nearly guarantees you can get yourself a severance-- should they go bad, and one always hopes that they won't-- in future jobs.) You may even enjoy the subtasks that, while poorly rewarded by executives, are intrinsically rewarding-- such as mentoring and supporting the people below you. Also, the political and social competition that sets in when you become a manager may be nasty, but the only way to learn it is to play. Finally, in most organizations the negatives of middle management are just as true for ICs, such as time spent in pointless meetings (the backlog meetings and retrospectives of "Scrum") and the lack of autonomy and the unrealistic expectations. The main thing that you give up by becoming a middle manager is the freedom to slack and hide, which, in a truly dysfunctional organization, might be the only thing that keeps you sane... while you look for another job.
One programming-specific part of this that is sad is that, at some level, you're going to be expected to give up your identity-as-programmer. Like I said, doctors are still médecins when they manage other doctors, and law firm partners are still avocats even if they don't argue cases in court, and MDs are still banquiers even when they spend most of their time on relationships rather than financial modeling. Programmers don't have that, unfortunately. Even if software engineering is what you do-- and you should try to sneak away some time for it, even if you're a CTO--companies call you something else (like "co-founder" or "VP of Engineering" or "
I think the big problem, relating to the above, is that we have a weak tribal identity. We're so scared of the big, bad business world that we let a lot of talentless people take charge at the top, because they promise that they will talk to those other scary, bad business people and make sure there is money to pay for our foosball tables. We give up our power to the "business guys" because they tell us that their jobs are much more difficult than they actually are. In fact, we can learn their skills much more easily than they could learn ours. We expect executives at tech companies to be hired externally and non-technical and no one bats an eye; internal promotion isn't really the norm in our industry. We worship money and "success" (meaning billion-dollar IPOs) without asking where it comes from, especially on Hacker News and to a lesser degree on Quora, and it's actually a bit sickening. Most of us don't get to answer to our own (who may not be programmers but ought to be technologues, goddamn it) and cure cancer or develop clean energy, but somehow got stuck helping non-technical businessmen unemploy people.
So long as technologists fail to develop a tribal identity, will be a distinction between the in-the-know (but rarely technical, and ideologically incongruent with the technologist's progressivism) executives and the more earnest, politically inert and shy, build-something-great technologists. So long as that regime is in place, climbing the ladder will eventually require a switch from "our" mindset (make more awesome!) to "theirs" (do the same thing with less cost, and then appease people with lies and call it leadership!).
Did I answer the question? I tried. If not, it's because there are too many uncertain variables. I'd like to say that there's a payoff in being a lifelong technologist. ("Technologist", to me, is a broader and more meaningful distinction than "software engineer"; I'd include designers and the most progressive 10% or so of managers and investors as technologists.) I don't know if I'll be writing production code when I'm 60. Even now (and I'm 31) I spend more time reading about machine learning algorithms or programming paradigms, and coding is something I do to try out ideas, not an end of its own. 300-line days are a rarity for me; perhaps that means I'm wise, perhaps it means I'm slow, perhaps it's because the languages I prefer (e.g. Haskell) are badass and don't require you to write a lot of code. But I intend to remain a technologist, even if that becomes uncool again, and I'm emotionally invested in the fight against the non-technologist assholes who currently reign over us. So I'd like to say: yes, keep coding, keep learning, and stay a technologist. D'autre part, if you want to start at $650,000 per year (plus carried interest) and work 11-to-3 and have lots of power over others' careers but zero responsibility, then Sand Hill Road is hiring.
Edmond Lau, Author of The Effective Engineer
Mise à jour il y a 139w · Voté par
Drew Eckhardt, 20 years as a system software engineer, 5 startup veteran · Author has 291 answers and 6.5m answer views
Staying a software engineer is a fine career choice — just don’t expect years of technical experience alone to carry you up the career ladder. As a rough model, your career success and growth is proportional to the value you create.
Technical Ability + Experience ≠ Impact
Engineers with over 10 years of experience at places like Google will often wonder why they’re still only a senior software engineer on the career ladder. What happened to the promotions that seemed to have come readily in their earlier years? Why are some of their peers getting promoted above them?
One of the biggest career mistakes that engineers — particularly those who opt out of management — make is to equate technical ability plus experience with increased impact. They hold onto a belief that if they continue to do good work, they’ll eventually be rewarded with a promotion. That mental model is flawed for two reasons.
First, your technical ability to write code and build software plateaus over time. When you first start out, you're frequently making technical mistakes. Every small project becomes a learning opportunity that hones your programming skills. As time goes on, you become more proficient at coding and software design and make fewer mistakes. Your early promotions up the initial rungs of the career ladder reflect your early technical learning. By year 10, you’ll still learn — and you might still be picking up new programming frameworks and languages — but your progress and improvement isn’t going to be as dramatic as it was in year 1.
Second, experience doesn’t directly translate into impact. If ten or twenty years from now, you're still solving the same scale and scope of problems as you’re tackling today, then you haven’t increased your ability to create impact. And if you’re not creating more value, why would any employer pay you more than someone without that experience? This observation is independent of industry or profession.
Ça peut être facile, confortable, Et même amusement to keep doing what you’ve been doing — and it can be a reasonable lifestyle decision if you’d rather spend your energy elsewhere on life outside of work — but you shouldn’t then also expect your career to grow on its own. What matters isn’t the number of years of experience but how much value you create. To keep growing your career, you have to keep finding new ways to increase your impact.
Management Is Just One Leverage Point to Increase Your Impact
Transitioning into management is one way — but not the only way — to grow a successful career. Many engineers become managers because management provides an obvious and well-defined leverage point to scale your impact. Teams need managers as they grow, and years of technical experience can be a useful asset when developing management skills. As a manager, you influence and affect the work of your reports — and if you’re a good manager, you increase the value created by everyone on your team. If that additional value exceeds what you could have created as an individual contributor, your career ends up net ahead.
Management, however, is not the only path for career growth, nor is every strong engineer well-suited to becoming a manager. As long as you can find other leverage points to amplify your impact, your career will continue to grow. Most large companies where technology plays a strong role, such as Google, Facebook, Amazon, Microsoft, etc., will also have a well-defined technical career track to recognize that other leverage points exist besides management. Climbing that ladder to become a staff or principal engineer, however, is where many engineers struggle. The less conventional paths outside of management require more creativity, and there are fewer available narratives of successful engineers outside of management for us to model ourselves after.
So How Do You Actually Create More Value Without Becoming a Manager?
The key observation is that while your technical programming ability may plateau, the impact of your technical contributions doesn’t have to. Your ability to decide where to spend your efforts to maximize your impact — quelle code to write, quelle software to build, and qui business problems to tackle — is unbounded. It’s this ability that distinguishes the most valuable and effective engineers from everyone else.
So how do you grow your impact as a software engineer without becoming a manager? You identify and solve problems that are core to the business, or you enable those around you to more effectively solve those core business problems. It’s in this alignment of your technical efforts with business value that your career grows. When the hours you put in directly translate into meaningful and measurable results, when your efforts directly move growth and revenue metrics, your employer is incentivized to give you more resources and flexibility so that you can achieve bigger results faster. 
Here are some examples of how you might amplify your impact without going into management (and without co-founding a startup, which typically leads to management), based on software engineers I know:
- You build tools and abstractions that multiply the output of the engineering teams around you. For example, Jeff Dean, through his contributions to Protocol Buffers, MapReduce, BigTable, Spanner, and other systems infrastructure, has increased the output of other engineers at Google by over an order of magnitude. It’s no wonder why Google created the engineering level of Senior Google Fellow essentially for him.
- You develop sufficient expertise to consult on software or experiment designs from other engineering teams, and your feedback is valuable enough that it shaves days or weeks worth of work or it turns key projects from failures into successes.
- You become an expert on a deep, technical field that is material to a growing company. For example, you become a machine learning expert and then work on news feed ranking at Facebook, ads ranking at Google, or search ranking at Airbnb. The projects you ship directly translate into growth and revenue for the company.
- You identify a critical business opportunity, perhaps by working with the sales and business teams, and you become part of the founding team within the company to build out a product to address that need.
- You build out onboarding and mentoring programs to teach and train other engineers, and you make them significantly more valuable members of the team.
- You play a key role in building out a solid hiring process, and you help recruit and close engineering hires.
- You make significant contributions to building the engineering brand for your company. For example, if diversity is a strong part of your engineering brand, you may move forward the state of diversity in hiring in the industry.
These are just a few examples of how you can increase your impact, but the possible paths are limitless. Notice that in none of these paths, is building software an end goal — rather, it is a means of helping the team and the business succeed. If you're looking for more possible paths and techniques to really accelerate your engineering career, I've assembled a collection of resources and proven techniques to help you maximize your impact, based on interviews I conducted with engineering leaders at Google, Facebook, Twitter, Stripe, Reddit, Airbnb, and other tech companies.
Focus on what creates the most value. Your career success and growth will follow.
Crédit photo: Mike Lewinsky, Nowhere to go
À noter :
 One corollary is that if you work on a team or a company that isn’t growing, it will be more difficult for you to grow your own career because the value that you can create is limited. If you’re working on a dying product that loses the company money, how much value could you possibly be adding? This is why Sheryl Sandberg argues in Lean why it’s so important to hop onto rocket ships when evaluating job offers.
Jeff Ronne, OO, Java, C++, C, noSQL, WebServices, Big Data, automation, control systems, AI
Répondu il y a 188w · L'auteur dispose de réponses 3.3k et de vues de réponses 4.9m
It is a question that very engineer should definitively answer within the first 5 to 10 years of their career. The earlier the better. A good plan is a key item in life.
The clear obvious unavoidable fork in the road is the management track or the technical track. For most people the management track is by far the best option for financial security as older software developers are, have always been and will always be rare. Despite how you may want to rational this otherwise, look around any company and this fact is obvious. Do not fool yourself.
"The first principle is that you must not fool yourself — and you are the easiest person to fool." Richard Feynman
"In theory there is no difference between theory and practice. In practice there is." Yogi Berra
Personally I choose the technical track 4 years into my career and decided to maximize my earnings so I could have fewer financial constraints later in life. I have always planned and thought about the long term never assuming the that present trends last forever. Technology changes rapidly and as a developer one has to retrain themselves every 5 years or so without end. This has worked out well for myself but some of my peers have had a more difficult time as time moved on.
In fact when I started working the technical track did not exist simply because the real problem of older engineers was far less visible. The corporations invented the technical track term to convince many senior engineers that they were not at the company that Dilbert works at. It is a rather pathetic effort to mask the real challenges facing older engineers since the reality is by and large unchanged. The problem is the same and now just has a name tag.
If you choose the management track it is somewhat of a Ponzi scheme / insiders game with most people getting stuck in lower management by definition. It is still relatively more financially secure being an older low level manager than an older software developer.
If you choose to stay on the technical track you should plan on becoming financially independent sooner as opposed to later as the good times do not last forever. You need to appreciate the risks with your career timing out before you are fiscally secure. It is always better to work in life by choice as opposed to need.
Jeff Nelson, Invented Chromebook
Mise à jour il y a 190w · Voté par
Devendra Ramchandani, M.S Software Engineering & Enterpise Software Technologies, San Jose State University (2016) and
Muhammad Yousaf Sajjad, M.S Robotics & Software Engineering, The University of Texas at Arlington (2010) · Author has 1.6k answers and 19.9m answer views
That's a great question and one every engineer should consider carefully.
In my view, they are two very different career paths. As soon as you take the step to go into management, your skills as an individual contributor are much less important. They may give you important context into how to make decisions and prioritize projects, but that's about it. Where your career used to be about your technical abilities, now it's about soft skills.
On the plus side, managers often make more money and have a higher ceiling for career advancements. (Very few engineers are ever promoted to VP or above role