The good: I get paid better than my last jobs. I can browse internal resources to satisfy my curiosity about how things work.
The bad: Basically no work gets done and there's no motivation to do any.
The dev tools, docs and tech debt impart such a slow iteration speed that even when I am working a full 8 hours, only a few very small changes get done, yet somehow this is even more than most of the rest of my team can muster during an entire week.
Because of this, I normally work about one day trickle out my changes during the the week. The other days I only open my computer for standup and if I get an IM. As far as I can tell, if I can be just barely the best on the team by doing there's nothing the company will offer me to work harder. If I get asked about why it takes long to make a simple change I can point to the environment and shrug my shoulders. Of course, it's possible the rest of the team is doing that too, but I have no way of knowing.
This amounts to a glacial development pace and when I look back at the progress made since I joined and estimate the cost to the company (salary, servers, etc) it's frankly disgusting. I don't feel what I'm doing is ethnically wrong, because the company is evidently pleased with my current productivity, but I find it unsatisfying and like a waste of my time on earth.
So my question is: Is all of FAANG like this? If the market value of such incompetence if FAANG salary, how can I do good work and get paid preportionally?
As many have pointed out, it depends on teams. I have seen engineers in retail whose sole job was ensuring data entered the catalog correctly through the input system and fix any errant data. I also saw teams like mine (early kindle / early dynamodb) literally perform magic. We launched dynamo across the world with a <15 person team. But it had 3 principals and 5 sde3s in a time when the whole company had <100 principals. That team remained highly motivated through my tenure but the members went on to different parts overtime because it was too much talent concentrated in one spot.
In short I look at FAANG as flexibility. you have a major life event, you will probably have enough good will to work it out with lighter contributions. You want to build bleeding edge software, you can do that too.
I’d suggest finding the local legends now, see what they are working on, building deep knowledge about it, ask for an interview and join them. In a big place like that, there are always movers and shakers - they are also looking for motivated and talented devs for their team, so it is mutually beneficial. It will only work with your initiative and a bit of luck though.
FWIW - I still have some of my old contacts there. Message me if you want a referral. Good luck!
What degree of tenure do other people on the team have? If old-timers aren't on the team, or worse, if they leave the team for others within the company, they might be seeing writing on the wall that you can't. If this is the case, your future on this team, and likely with this company, might be in jeopardy when the reorganization comes.
Is the team just not important? Are you responsible for maintenance of some cost center that isn't worth high-level executives paying any attention to? If this is the case, your future might also be in jeopardy, but the reorganization might be multiple years away.
Are you just not listening to your manager? It's possible that you are going to be "blindsided" by a PIP due to the lack of output. This might happen if the actual output of your team isn't what you are thinking it is. Maybe the engineers who aren't outputting anything visible to you are actually outputting considerably to other parts of the organization. If this is the case, your future is in jeopardy and you'll find yourself out of the company within a year or so (yes, it actually does take a long time to fire people at FAANG companies).
It could be one of these or something else. Since you have so much extra time, it might behoove you to figure out exactly what the situation is on your team, so you can make the necessary preparations (to change teams, to get a new job before you're laid off or fired, to do whatever you think is best).
So at least what I did is stop trying to put so much of an expectation on my job to fulfill me. I took responsibility to find and do things at and especially outside of my day job that did fulfill me. Now I feel no large angst or annoyance at glacial paces at work that occur, political games, etc.. because I have other things that are more important to me that are interesting, provide meaning to me, challenging, etc.
Having a nice paying job with relatively little work to do is something of a luxury, especially in this pandemic time where the economic toll is hitting many. So my unwarranted suggestion is to find something meaningful for yourself to do/experience even if your work isn't where it's at.. you probably will even have extra time to discover and pursue that since sounds like you're not so busy at work.
You're going to have to learn that, as a laborer at a firm, the quality of work you do is, at best, loosely correlated to your monetary compensation. Sometimes you can do good work, sometimes you can do bad work, but how much you're paid is going to depend greatly on a number of surrounding factors.
So, accepting that there is perhaps not a strong link between doing work that you're proud of at work and being paid well, which would you rather have first?
If you finish work at the well-paid FAANG job feeling like you still have energy to do good work, you can contribute to open source, build some side project, or, even better, none of those things. You can use your extra time an energy learning new things or engaging in a hobby. You don't need to define yourself by your profession.
If, on the other hand, you'd rather not feel like you're just collecting a check from your job, there are certainly positions and fields that will actually ask employees to move mountains. I'd imagine that firms like SpaceX don't have room for desk fillers. There are lots of scrappy upstarts trying to solve big problems, but you will almost certainly make more if you stay parked in FAANG.
I personally am a game developer; the challenges are unique and satisfying and i don't have to worry about whether I'm contributing to something worthwhile. I also make probably less than 50% of what my friends at Amazon and Microsoft are making. C'est la vie.
There were vast differences in the pace, communication style, and project success rate among them. There were very fast-paced projects with extremely sharp colleagues. There were small projects in contact with the prospective (non-engineering) users of the tool being built. There were slowish projects with some red tape thrown in. One project was outright canceled because of architecture not matching the changed requirements.
No, not al FAANG is "like this". No, every single company inside FAANG is huge, and very much varied within.
Walk around. Talk to people. Get interested in what other teams are doing. Do some research, because I bet the tools to look into other teams' work are there, as are informal internal forums. Find a better team, and migrate to it.
Back then there was severe priority inversion, anything the desktop needed got delayed by iOS priorities but also the senior engineers with magic rubber stamp powers were working on iOS. So changes for the desktop stack never got approved without significant and needless delays.
Although you might be smart enough to know that and misdirect.
Even at the best universities, best tech companies, best startups, you will find pools of miserable and unmotivated people.
Don't get stuck.
There are brilliant people everywhere and certainly at faang. Find them, learn, and seize your opportunity to have an interesting life.
My experience were the first 2 years I was writing wholly new code and was able to write a ton. The next 3 years was all maintenance for new issues, requirements and I felt unproductive.
Also, just in general it felt like my output went down 50% or more because of code review and tests. Those were all essential but up until my FAANG job no team I was on did that stuff (games). We'd just make the game and file bugs while playing. We didn't write tests. We shipped too. I see the value and essential requirement for code review and tests, specially outside of games, but it was a rude awakening just how much slower things went.
There was also just process. Because of code-review you were required to write small changes which I totally understand the need for but it also felt shitty to have to babysit several changes through the CI. Can't submit #3 until #2 passes, etc... so a it felt like wasting so much time on something that used to be instant on a smaller game team. Another example is review of #2 requiring refactoring #3 and #4. And of course the re-write is correct but having to propagate it through changes was more work than if I could have just submitted one change. Similarly while babysitting this stuff someone would check in something with conflicts and again, fixing those conflicts would have been easier with one large change than 4 small changes so again, just adding what feels like busy work.
I get why it's important, it just feels poopy.
And yes, unless you got lucky and get to work on some interesting, infrastructural problems, it was like this.
Also tons of useless meetings where things get rehashed over and over, and people shouting "agile" and "AI" and latest buzzwords over and over without actually understanding them, and having 1 hour calls over 1px design changes.
On the other hand - comparing with start-ups, you have clearly defined role what to do, nobody can really screw you over like start-ups tend to do, the pay and perks are good, the teams are more clearly delineated than in start-ups.
Pick your poison.
Things at these companies are moving slow, because they are behemoth. Upside, when things move, they move faster than at any other big corp I now. they also tend to move if not the right than at least not the wrong direction. Also a big difference compared to other big corps I know. FAANG also turned into a political nightmare at times, office powerplays are a daily occurence.
One thing you definetly can learn, is how thngs should be run, FAANG are good at what they do. Learn whatever you can, try to understand why things are done the way they are before judging.
After all that, FAANG is not for everyone, I left after three years. The sooner you realize that, the better for you. Being one year in is not that uncommon to quite, there is alos no shame in doing so. If you can stick with it, regardless of the current economic situation, I would stick around for another one or two years. You are at the beginning of your learning curve.
If you want speed, pick a job at a start-up. From my experience you will get the other side of the coin: speed replaces planning, politics are still the same and SOPs are replaced with chaos. I know what I prefer.
My advice to you would be to pick up a more rewarding side-project, or to use the in-between hours to do something that you enjoy. Ride a bike or something. Think of your main gig as a function to make money. If it's working, and working efficiently, then you have a good function. If you have extra time as a result, use it wisely. Time is your most precious resource, and it is finite.
I spent the first few years of my career as a developer working for startups, and the break-neck pace is thrilling, but the stakes are low - you might break things for a few thousand people, none of whom expect perfection from your application. Think about how many people are potentially affected by a change to (for example) the F codebase. That's why it takes so long to release a one-liner, and justifiably so. For a FAANG company, prudence > professional development. Take the money and run; enjoy your free time and use it wisely.
If you have the patience and willingness to build that trust and go down that path, FAANG will be rewarding. If it feels slow and frustrating, then it might not be a good fit. You could bounce around to different orgs hoping to find a domain that excites you, or you can coast for 4 years until your RSUs run out. I'd say it's better to find an organization or company that gets you excited. Just my two cents.
You can do excellent work AND work 40 hours.
You don’t need to work 5 hours or 100 hours. It’s not binary. In the short term do you see any benefit? Nope. Will you get promoted? Probably not. And if you do you won’t make that much extra money.
BUT! In the LONG TERM it’s TOTALLY worth it to be known as the proactive, friendly do-er who moves the project forward. That’s how you build those relationships to be the kind of person who gets brought along to a new opportunity when your coworker/boss quits. I’ve found myself at a startup FULL of ex-FAANGs who have this attitude and all worked with each other for 10+ years. It’s a great place to be.
People think ”networking” is going out drinking with new people. It’s not. It’s consistently showing up and finding opportunities to move your team and the project forward in a friendly, collaborative way.
What you are describing is certainly not unique to FAANG, and certainly not true for all FAANG (or anywhere). There will always be places where the pace is glacial, or getting work done is hard. There will be others where it is easier.
There will be times when you are struggling to get things done, even in a good environment. Life will not always be as simple as it was (children, life traumas, financial change, political instability, medical events, who knows). Other times, life will be easier and you will have time to wonder and plan on top of regular life.
The one constant is that you are often in charge of a certain amount of agency with regards to yourself and your own output. Why shrug your shoulders and do less in your current team? If the company will not offer things to you to 'work harder', why not just do it anyway if you are capable? Some people don't even have two hands! This is flippant but the point is: do not rely on solely external motivations to do brilliant things.
Counterpoint: Don't work yourself to death in a team or organisation that will not value your output. Do good things, and use them to move laterally (or elsewhere entirely) until you find a good fit. It probably won't be perfect - but flaws can bring benefit too, even if only as a balanced perspective.
Anyway, carry on and do well despite those around you acting as anchors or wet blankets. Find some colleagues in the lunch area that will act as sails, and be their sea breeze. Invest something great, or make small invisible improvements to many peoples lives (quite possible in a FAANG) and take heart that you did well for yourself, and not for some performance metric.
At least your company isn't as dysfunctional as this: https://sites.google.com/site/forgottenemployee/
:)
That is one premise in the film version of Piketty's Capital in the 21st Century.
The inequality in the distribution of capital that has been increasing since the 1970's, while wages stagnate, is at worst a trajectory that takes us to neo-feudalism, or something that resembles slavery, colonialism or caste systems. At best, it's a long-term recipe for social unrest.
FAANG is sitting on vast amounts of capital. Though FAANG employees may loathe the thought, it is arguable that, in the end, the market value is not based on the workers, it is based on the capital. Time will tell.
The relatively high salaries can be viewed as a protective measure to keep these workers from joining competing companies. We already know the FAANG CEOs, e.g., Steve Jobs, made pacts with each other on how much they would pay out for these workers.
The film suggests workers have become liabilities not assets. Workers are costs that can be cut when needed. You can decide for yourself, but when pacts are made to limit salaries, this to me sounds like limiting a cost, not limiting how much they will pay for an asset.
Taking a long view, thinking beyond simply my own welfare, I would have problems ethically working for FAANG. I do not see these companies as contributing anything towards solving the problems we are going to have as a result of the trend to which Piketty has drawn attention. If anything, these companies will be on side of capital not labour, and the "work" they do can be used to keep labour under surveillance and control.
Asking this question shows that you do not yet understand how compensation and pay works in the world.
Roughly speaking there are two different kinds of jobs. The first kind of job is offensive. This job involves creating systems or value where it does not already exist. It is probably what you thought all engineering and development was. Surprisingly though these jobs do not always pay very well because they are high risk. Especially for unestablished workers who do not have a track record of successful value creation.
The second kind of job is a defensive job. Roughly speaking this job exists when a company already has a big Cash Cow Monopoly and can print money. These jobs pay very well because there is already a ton of money flowing in the value chain. For these jobs you don't actually have to create anything. You just kind of have to be around to make sure that nothing goes wrong.
Faang jobs have over time become more defensive than offensive.
Don't expect your current view of proportional pay for work to apply to other positions.
They are VERY different companies. Google's tooling is unparalleled and maintained by staffed teams, its work force is motivated. It's hard to move the needle - in a large company full of smart people all the easy stuff was done ten years ago, and compliance concerns are everywhere. But none of that is due to lack of tools or motivation.
Google is an engineering company. Amazon is a store that hires engineers because it has no other option.
You seem to be at exactly the point where I was when I left. Yes, the grass is greener on the other side. Do it.
Large companies do not want people like you and I making 800k/year and being at our peak productivity. It is putting to many eggs in one basket. They would rather pay 6 people 200k to do the same work because it is more stable
The thing is a lot of projects get over staffed and work gets split up with too many people. It’s also not an environment where you are allowed to take initiative and take on work yourself because a manager pretty much has to assign you work (every piece of work or project is someone’s promotion project) and how they assign work and to whom has a lot of strategy behind it.
The only good thing is the pay. The pay is so high you can FIRE pretty quickly.
It got boring pretty fast. Since your there already I would suggest saving money as aggressively as possible while you figure out what to do next.
Will you put in your best effort and do your best work only when conditions are ideal, or will you cultivate the habit of always doing good work?
By doing one day's work and spreading it out over a week, you are selling yourself short by developing poor habits.
Whatever you do, do not consciously develop bad habits. Analyse why it takes a long time to get anything done. Try to identify the reasons, do small tests to validate your theories on what would improve the process. Rinse and repeat. If nothing else, you would learn a lot from the process.
There is a term for this called "sandbagging."
> I don't feel what I'm doing is ethnically wrong, because the company is evidently pleased with my current productivity, but I find it unsatisfying and like a waste of my time on earth.
Sounds like you have a motivation and procrastination problem. Pleasing someone or some organization != ethics.
> The dev tools, docs and tech debt impart such a slow iteration speed
Help streamline how the dev tools are used. Tools alone don't solve for much, they need a solid and frictionless process to follow. Document that process to help yourself and your team. Find some common threads or repetitive issues in the tech debt and fix it without waiting for someone to ask you to fix it. Those kids of work may even help get you promoted and open up more interesting projects.
A lot of engineers at startups, like myself, want to work with talent that is skilled enough to get into FAANG bit too bored of the extremely glacial pace these companies work at.
On a more on topic note: I've heard about, and observed, similar behavior from friends of similar companies: doing very minimal work and being surprised at the massive rewards they get.
Sounds like the Change tool chain is way, WAY more efficient than my "20k+ employees corp but not FAANG" general career experience... Most places I've worked for (mostly mining/engineering) have a change process that takes 2-3 weeks to get something HURRIED through a change process.
Maybe a non-technical role would suit you more. Try asking for "team admin" responsibilities as a route towards team management.
You can do good work at any company, but FAANGs especially will reward you with compensation and opportunities if you stand out.
Take a good look at your team within the org. Is it a sinking ship? Do people sing its praises or lament it? Would it be considered a success or a mess? You don't want to be on a sinking ship, it's only a matter of time before it attracts higher ups attention and people start to investigate what's wrong, if you're caught in that fire you will be blamed as part of the problem. So either become the ship's captain, or switch team.
Finally, it might be because you are too low down the chain and not seeing the bigger picture. A lot of the hard work at FAANGS isn't coding related. It's about decision making. Choosing what task to do next, what component to rewrite or replace, what business goal to meet, which project to invest in next, etc. Sometimes this takes a while and in the meantime, there's little change to do on existing live systems. What you should do is get engaged with that decision making. Learn who your stakeholders are, get involved in the planning process for your team, understand what business you serve and what their problems are, figure out the goals leadership has set out for your org and your team, etc.
In other words, at FAANGS you don't get work handed to you, you're expected to come up with the work yourself, be your own leader and advance the team and company forward independently with minimum hand holding. Don't wait for people to tell you what to do, figure out what needs to be done, what should be done, influence others to agree and support you, and get it done.
On this kind of topic I try not to generalize across a whole (large) company.
Things can be different across teams, offices, cities and countries within the same company.
In my experience "no work gets done and there's no motivation to do any" is the very opposite of what I've seen.
My suggestion: get out of the team bubble and talk to people in different teams and geographical locations.
EDIT: on second thought, I don't want to speculate, but if the team has serious productivity issues the hammer can come and hit the whole team in future. Amazon, generally speaking, tends to push people to either grow or leave.
I've been reading/contemplating Willinck/Babin's book Extreme Ownership of late -- I think you might find some resonance there.
No. All big companies are like this, not just FAANG!
The process is supposed to be there to protect things from breaking and for allowing so many people to iterate on the same codebases. If it's just that costly and everyone knows it what is the issue?
You're saying that somehow the cost of you or other teammates is disgusting, which is very funny! Tech companies have some of the highest profit per-employee than any other company. Why are you feeling shame towards this? As long as you are putting in the expected time and effort I really wonder why you would feel shame.
If you think the tools can be improved maybe you can work to improve that for everyone?
There's no reason you need to identify yourself or your work output with the company that employs you. A lot of people try, but it's not the only way, or the best way.
Meaningful work is a basic human need, but the market doesn't always provide it. If you can meet your basic material needs and then some by working one day a week, you are way ahead of most people.
Spend the rest of the time working on something that pleases you to work on that wouldn't please FAANGCorp. Work on something they would never let you do. You're free!
Not all startups are like this, but yeah few good growing startups.
I am working in a FAANG company, almost all the things slow the dev velocity down are originated from postmortem action items, new hire super stars stop complaining immediately after writing their first postmortems.
If I were you I’d consider an internal transfer. Try to find out which teams are doing the really interesting work.
The salaries tend to be higher simply because these large organizations are typically much better capitalized, not necessarily because the people that work there are that much better than everyone else. This is why a lot of high performers tend to strike off on their own at some point in their careers - dissatisfaction with mediocrity. But then their own companies, if successful, grow to a level where, once more, productivity and quality regresses towards the mean and they find themselves in a self-created bureaucracy as the organization matures.
What you are describing exists in almost every big company. I assume that you are working on a mature product with a big code base. In these projects the pace of development is slow and the changes are typically small and incremental. Engineers tend to get burnt out as building anything requires an egregious amount of back and forth with PMs, TPMs, QE, etc. As a result probably 90% of the engineers are not motivated to build anything instead optimize for reaching the next level (L5 L6 etc) and payday.
I came to the same conclusion as you and ended up quitting. However if you want to stay there is another path.
Like I said 90% of the people you are working with are burnt out and their work is boring, but 10% are legit engineers building the future. They might not be working on your team, or your product, or even your org, but they are there. If you can collaborate with these people you will find your work 1000x more enjoyable and these are the type of people who will go on to do great things. You can be one of them and this will carry you on to bigger and better things as your career goes on.
First you need to prove yourself to your own team as someone who can get things done and isn't a wimp. This can take as little as a few months. After that look around your own product and org for something that you would be totally stoked to work on. Maybe this is an inventive product idea you came up with, maybe its something a secret team is building, who knows? Start reaching out to your manager and people on that project and offer your services. Start small build an integration with some other product, fix a few bugs, etc. Be nosy into what is happening within your company, stay upbeat, and be willing to step in and be the man. If you have that attitude and can keep your passion going you can get to those rare higher levels of the engineering profession. If you check out of your job and stay depressed you can make a living for a while but you will stay where you are. It is what you make of it, and if your company or your manager won't let you progress in the way you want, you can always quit. Don't stick around for years doing the same old BS, and don't let your career be controlled by your manager, but there is another way. That being said if you are young and a new grad it will be much more difficult until you have proven yourself over a few years.
I will say a megacorp feels much less productive than a startup, because of the amount of overhead involved. Meetings on product design, meetings to coordinate development, meetings to talk about how many meetings we have, a month spent writing perf reviews, launch processes that require buy in from three different PAs to change the color of a widget.
If you've also worked at a smaller company or a startup where you are one of five or ten developers given vast authority and responsibility for broad swaths of a codebase and you spend all day pounding out code, it can feel very unproductive.
The problem is that you can only have something like 20 or 50 developers working on tangentially related projects like that before they stop being able to work effectively.
If you have a software project that needs, say, 10,000 developers to pull off, what you end up doing is hiring 20,000-40,000 developers and having them spend half their time or so coordinating the development. This feels unproductive to the individual developer, because you could be writing so much more code, but it really isn't -- if you had all these programmers programming indiscriminately, you'd be writing a lot of code twice, not writing some code that's needed, and writing a lot of the wrong code. It'd be a mess.
Of course, sometimes things are broken, globally or locally in a megacorp. Sometimes the planning goes out of control and too little actual work gets done even by megacorp standards. Sometimes a project is actually a small project and you have a team of 40 developing something that could actually be developed by a startup of ten. Sometimes things go wrong.
The point being: if you feel like a cog in a machine, well, you're always going to feel like that in a megacorp. But do you feel like a effective cog in a machine that's doing something important? If you don't like being such a relatively small fish, you might want to go back to a smaller company. If you don't feel like you're making a meaningful contribution, even accounting for the necessary overhead, or you don't like what you're contributing to, consider another job in a different or different part of a megacorp.
1) if you're in CA, with liberal moonlighting laws, start working on something of your own, save money, and launch what you're working on for side income or full-time entrepreneurship. Of course, if that excites you.
2) Change job
There is a 3rd option, you can move within the company to a different team, but that may or may not be better than your current situation - but it's worth trying..
- average bigco team dev has speed X
- startup like team in bigco dev is ~5X, given lack of bullshit (but still some)
- actual startup dev is ~10X, given marginal bullshit difference between them and a fast bigco team
- small founding team dev at ~20-30X, given lack of bullshit from non-trivial company size
- individual solo bootstrapper moves at ~50X, given lack of any inter-personal communication/coordination needed (This is my current status, having jumped from the second point to here in a single step, and it's insane.)
Now, this doesn't mean these velocity speeds translate linearly to net impact on users. But there's some dynamic there worth understanding. It's also interesting how leverage changes here. In the last bullet point, if I stop working (and say, type an HN comment :)) dev velocity goes to zero. In the first bullet, half the company could take a day off and dev velocity probably would remain relatively unchanged.
The age also plays a factor, fb teams are much younger, people have much more energy.
I moved to working at start ups where the code is open source. Start ups move faster, and it's easier to use open source tools than internal/proprietary tools. At the large tech company, we couldn't use anything past C++03 (this was in 2016), due to technical constraints. At my start up, we use the newest C++ as soon as it comes out.
For what it's worth, the start up I work at now is fairly large and has a lot of code running in production. So I get the reward of pushing to prod, but the dev speed of a smaller company. Sure I take a pay hit, but I still make more than enough money, and I get to work on cool stuff.
First, step up your game. If you are the best on the team without even trying, and doing so little work, then you don't understand why they hired you.
Specifically, you are acting like an individual, when you should be leading the team (leading, not managing).
What you should be doing is taking your team to the next level.
Working to make them better developers.
Working to make the team more efficient.
Working to make the codebase better (as opposed to just improving the app).
Working to improve the toolchain.
Working to make the development pace faster without ruining quality.
Etc.
Many more things, but I'll keep it to that list - I think you get the gist of my comment.
Small changes at huge scale have huge impacts. Think of car designers who work hard to eek out 1 more MPG from a car (and them multiply that by a million cars).
Discipline and many small deliberate actions got us to the moon - it can get you where you should be.
Maybe I'm naive but I would think that quitting a fine job in this economy just because you are asked too little off it...well it just seems plain wrong on every level I can think of.
Then again if you are so unhappy then there is really one constitutional obligation (I guess you're in US) and you have to try to honor it. Move away and try to be happy elsewhere.
However, what is always slower is the pace of development.
For example: I was at a small startup as the lead Devop. I was working about 85% capacity on average. Since takeover, that has dropped to about 15%. If I was a dev, I suspect the dip wouldn't be so pronounced, as there is still lots of work to do porting code.
But: the documentation is shit. So very shit. Some of the tools are good. SOme of them are pretty shit. Everything is re-invented from the outside, even when it doesn't need to be.
There are way more fun jobs out there, but at the moment I'm not walking away from the mountain of cash and security that comes with being in a boring role.
If you were on my team then low productivity would not fly. I see many teams at my FAANG company and all of them have very high expectations. The companies are big enough though that there are occasionally teams that don't hold up.
I challenge you to stop thinking about FANG and focus on yourself instead.
Have you brought this up to your manager? Have you tried to make things better? If things are as bad and you are as good as you think, it seems you got a great opportunity to have impact. You could improve things and slowly turn your team into a high performing one.
If you haven't, try this: gather data points on why everything is terrible, come up with proposals for improvements, write a 1 or 2 pager and run it through your manager/other stakeholders. Get buy in and then start working on it.
Step 1: Decouple these two ideas. Getting paid a lot of money has nothing to do with good work, and visa versa. There are plenty of people who get paid a lot to do nothing, or sometimes even less than nothing, as you have discovered.
Step 2: Please let me know when you figure this one out. I, too, am flummoxed. I have given up and gone into non-profits where I just focus on the "doing good work."
I was in the same position many years ago, but they used the lack of output to try sabotaging.
Money is all that measures these jobs. Even if able to do something at a startup, the company/product will likely be shuttered within a short period of time. That is, there'll never really be an opportunity for it to shine or be used. You could've just done that at home. Further, the shuttered company lives on as a technicality to still own everything you did with them.
If able to also work stable/normal hours and only 5 days/week, that is another positive step. I spent hours day on night working on that nothing. Set hours leaves time outside of work. Waste not, eh?
Definitely save. At least 50% of take-home salary. To a high-yield investment account, even if just buying into the S&P 500. Avoid debt. Always pay cash, even for a house.
You may have problems finding another job with nothing to represent your time. On the other hand, supply and demand. Beggars and choosers. More importantly, most just lie on their resume anyway.
Use their time, start your hobby projects.
Don't forget to have fun.
Fun is skipping the classes.
It's perfectly normal to take day to makes changes in a company. Going through tests, build, code reviews and staging over multiple environments.
This can easily scale into weeks if there are challenges like opening firewalls or access permissions.
It's the normal pace of development in large companies. Unlike in startups where developers could push the application straight to prod over ssh any minute.
That is really the crux of the matter - "good work" can have many definitions, so I'd first make sure that any FAANG you work for matches your personal values. Do the coders at Finding a job that pays amazingly well while also working smoothly and matching your values.... that is tricky to find. So you need to start thinking of which of those levers you are OK with changing. Does more money make it OK to be less efficient? Or would you prefer less money for a smaller company that doesn't have the same scaling problems internally? So to answer whether all of FAANG is like this, both yes and no will be true answers. Every company has its own unique dysfunctions - but they do all have them. It is up to you to figure out which corporate dysfunctions are acceptable.
What you're describing can be fairly typical at larger companies FAANG or non FAANG.
However, sometimes a big enough project with enough priority comes along where an exec gives you the ability to bypass a lot of red tape. These types of projects are exactly the kind of thing you want to find yourself on and they've given me immense satisfaction.
You may also look to expand your role by fixing/improving things without being asked. I find it hard to believe that you can complete everything that needs to be done on your project by only working one day a week.
I will tell you as someone who oversees a team of engineers, the ones who see the vision and understand why we do things and can get ahead of future issues are way more valuable than people who pick off stories off a board.
I've heard rumors but wow
Uhh.... what? As you say you're only on the computer 1 day a week. So go do something else. Go fishing, spend time with your family/friends, take up a hobby. Life isn't just work. Sheesh.
If you want to "do good work and get paid preportionally" then start your own company. Tech jobs aren't a meritocracy.
I left bc I didn't like London, I didn't like the DE role, and I can make a lot more money in Dubai (higher comp, no taxes, low cost of living, high conveniance and luxury).
General observation: the large the company, the slower it is to make changes because of a larger codebase, legacy concerns, more complex interactions with the rest of the system, handling scale, and more stakeholders.
I work for a large videogame company, things are more or less the same, except we have two clear modes of operation among teams: * "production" (gameteams themselves), work in frantic mode all the time (crunch time being very common) * all other teams, work in glacial mode, technical debt is pretty high, same as your situation
When I started, it was my dream job. Years later...
Quite difficult to find a dream job and maintain that state of mind for long.
I would suggest you speak to your manager(s) and find / create some new projects, be creative and proactive.
Or, your current job may not really make you happy and you'll need to find something else to do.
I joined a unicorn recently and have felt similar feelings, however I am on an infrastructure team and there is tons of work to do so it's relatively easy to not stay blocked (if we are blocked it's usually our fault). That said, we end up blocking a lot of teams (lack of resources, lack of tooling, things just take a long time). I find the architecture pretty standard so it's easy to navigate around though
> only a few very small changes get done
I can echo that. I've tried to make bigger/more changes but the team can't keep up with them and they introduce too much risk. A lot of my day-to-day winds up being balancing risk, change, and upside. The work is a lot more deliberate which is good for big changes and bad for small ones
> I normally work about one day trickle out my changes during the the week
To be clear, I would not recommend doing this. I strongly prefer to work hard and then find a place where people work as hard as you. Complacency is the worst (for me)
> it's possible the rest of the team is doing that too, but I have no way of knowing
It's a bit unsettling that the team doesn't talk about things like this
> when I look back at the progress made since I joined and estimate the cost to the company (salary, servers, etc) it's frankly disgusting
How much value have you added though? At my company we have multiple simple fixes that save multiple millions of dollars annually. It's pretty easy to justify cost at scale. Maybe you need to examine the value you're providing further?
> I find it unsatisfying and like a waste of my time on earth
This says "it's time to move on" to me. I would go to a smaller company personally or move to a different function (e.g. infrastructure). I sympathize with your comments about dev speed - that's a huge one for me. It sucks to be bottlenecked by development process rather than bottlenecked by something more in your control
I can tell you that lots of huge companies have this, but not consistently. Some teams move fast while some move glacially. Greenfield work can move the fastest, unless you get stuck waiting on someone to build environments.
Definitely don't stay there too long if you're unhappy. Worst case you try something new and it stinks, in which case you try again.
It sounds like a great deal to me- in the past, I certainly would have felt personally guilty, but at this point, I understand the value I provide to my employer and how much work is required to achieve it.
A lot of my time is spent paying down technical debt that other eng have introduced, so we can get back to reasonable velocity. In the past, my company didn't really see that as valuable, but I articulated it in terms of potential revenue gained and they immediately let me get back to what I knew was the right thing to work on.
At the non profit I had times when I’d get that feeling for a few weeks as I was ramping up on something but largely ended up feeling like each day was the same.
The startups were a little different but at least at the last one the hard part about my job wasn’t writing code it was doing my best to make sure what we built was maintainable.
Now at the FAANG I feel like I’m learning a lot of new things and working with people who care about building good software.
So no. It’s not like that everywhere.
At one end of the spectrum, you can come up with a great idea and spend day and night working on it as a solo founder. Your wage might be 0, but the work will be as interesting as can possibly be since you are the only one deciding what you are working on.
At the other end of this, you can imagine a hypothetical position where for $5,000,0000/year, you would do anything you are asked no matter how boring.
Where you exist on this scale is up to you.
It took some discipline but I've started to spend any painful wait times to either do additional work (other repo, next commit, other branch, etc). Or to work on performance of the system that is slow (parallelizing tasks, bulk insertion of test fixtures, cached results so we only rerun invalidated portions etc)_
The cure is to join a startup, or find one of the P teams at the big company.
ALSO, in case this is in fact a thread about Amazon (which some appear to believe) maybe part of it has to do with the news we sometimes see posted about how "work conditions" are terrible at Amazon? I couldn't blame them for a response, if this is it?
All the issues you describe are opportunities to have huge impact on a global scale if you decide to solve any of them. But if you truly are disgusted by the state your company then that's not your path. I think you would likely thrive if you set your own path and work in an environment you built. You might need to quit once your creation becomes too successful though to avoid this problem again.
And even within a particular company, especially very large ones, there's probably variability across orgs.
From your description, it sounds like a couple of things missing, such as:
- candor (does nobody speak up about this?)
- open communication ("of course, it's possible the rest of the team is doing that too, but I have no way of knowing").
May I recommend that you bring up this topic with your team? If you are thinking this, chances are others on the team experience the same.
That can be harder than you think at first but remember that nothing stays the same forever. Change is inevitable.
In the end, this is why some people leave and start or join startups. Maybe a new opportunity will present itself because of the people you met and worked with while at your FAANG and they will invite you to join them (or vice versa).
2. "only a few very small changes get done,"
To me, you can learn to make large changes. Your skill level determines how many changes you get done. You can work harder to get more done.
3. When you work harder, your skills grow, your compensation will grow. FAANG is usually good at this. If they aren't, you can quit, but this takes at least a year because promotions are lagging.
You are not looking at the bigger picture and your dismissing the development regime as incompetent reflects your lack of experience.
Would you accept a LOC standard as a measure of 'competence'? How about this: significant continual development of running distributed system with xxx bugs per xxx commits with minimal surprises, as base expectation.
I was in a job exactly like this last year, and I quit. I regret it. I miss the money and it was good for my resume.
The shift to 100% virtual tele-work could be a countermeasure, since under-recognized and under-utilized talent exists all over the world.
Maybe you just had bad luck with your team allocation.
That said, if it's the same in all other teams, I'd totally quit as well; not having a sense of progress is devastating in the long term. (And made me quit science, btw).
At FAANG doing things that have a multiplicative effect across the team/several teams/entire org/entire company are rewarded extremely well and a rapid way to advance your career.
Well, it is ethically wrong. If it was not, you weren't trying to mislead the rest of the team by artificially spreading out your work.
By cultivate becoming a naturally a curious, resourceful person on your own, you demonstrate the self-directed effort to learn to solve problems that are small will lead to bigger ones that are interesting and engaging.
- Your performance does not correlate with your compensation, not to mention that there are huge disparities between competency levels. You have people who don’t know how to use git getting the same paycheck as 10 yr vets that could reimplement git in a single day. You have executives getting outrageous equity plans and salaries for running entire product lines into the ground before going on to the next company for even bigger paychecks. Welcome to capitalism, lol.
- There is tremendous waste in these organizations because humans haven’t yet figured out how to scale them properly while retaining individuality (i.e. it’s easy to create an organization comprised of 1,000 robots that do exactly what they are told). There is simply too much politics going around, too many conflicting interests and “market forces”. And so processes are invented and have to be followed, entire departments need to get involved in code reviews, design meetings and so on and on. It’s pretty depressing tbh.
- Don’t listen to people telling you your job should be your job. Work drains you mentally and precludes you from doing stuff you’d otherwise do. Don’t accept the moronic (sorry, stoic?) concept of “well, you have to pay the bills!”. These people trade more than half of their lives “just to pay the bills” and have an occasional vacation. It’s beyond depressing. Your job should be your passion, and the major provider of meaning in your life. Getting a hobby will not compensate for selling your soul.
I would challenge that perspective. It sounds very much like an ethical conflict to me. Does your contract say anything about the hours you are expected to be working?
So, no, it’s not all like that.
@faang0722, you're being a slacker, and not doing right by either your company or yourself.
You're at one of the top companies in the world, and are safe from the jobs disaster that's gripping the entire country. Millions of people are desperate to receive $600-1600 from the government this month because they are unable to work. Millions are putting on shitty facemasks and still showing up to work at grocery stores and warehouses and wherever, risking disease because they have no other choice. Meanwhile you can't be bothered to work at home on your laptop more than one day a week, because the build system and tech debt makes you sad?
You say the company is evidently pleased with your work and that may be true, but now you're part of the problem. You think the company tolerates shitty work, so you've decided to tolerate shitty work. Don't.
Since you don't think what you're doing is ethically wrong, have you told your manager that the work assigned to you is so simple that you only actually work one day a week? Of course not.
So either start putting in your best work, or switch teams or company and see if it suits you better... or else accept that you're being a freeloader and pretending to do more work than you really are.
Firstly, you're measuring pace compared to companies that are struggling to survive, while these companies are not.
Secondly, the benefit to these companies of hiring boatloads of staff (89.9% of staff are newer than me and there are about 5 times the number of people now than when I started) is not really to get a lot of stuff done and done quickly; but instead the following:
1) More eyes on a problem means potentially less defects, even if it slows things down. Especially with giant systems like search or ads or huge social media sites a small change not well considered and done quickly could cause serious problems. Your job at this company is truly more like an engineer than a developer. You're not there to "develop", but to slowly and carefully engineer.
2) It's like firing a shotgun, something is bound to hit the target. You hire 80,000, 100,000 etc. engineers and one of them is bound to produce something genius. At least that's the theory.
3) The more brilliant well-paid developers you have internally the fewer are out in the market doing work for competitors. (Or worse, creating new competitors)
Having been through an acquisition and then seen others, I feel like #3 is most important to understand management behaviour. They simply cannot afford to have the market disrupted. Luckily for them most of our industry churns on this process: a) Get VC, b) Make something 'disruptive' c) Get acquired by the people you're disrupting d) Rest & vest.
While here I've seen some of the most brilliant engineersing and cleanest nicest code. But all done for rather banal and slowly implemented tasks.
... Also the process has surprised me, I've been on projects that felt like ridiculously slow and mismanaged progress was what was going on and then 6 months later and not really delayed there was this shiny beautiful product sitting on a store shelf with code in it that I worked on (a very small amount), and I honestly couldn't figure out how it got there because the whole process seemed so broken to me. And yet there it was, and it was good.
So for advice, what I'd say is this: if you're young and in the early stages of your career still then spend 4-5 years, dig yourself into it, learn what you can, and then _move on_. If you're older, like me, well, you could find your niche and milk it until you can retire. [Not sure I'll last that long myself, tho, I'm looking for something new now]
Honestly, you are surrounded by really smart people, there is a bottomless amount of knowledge you could absorb in companies like this, even if the work can seem unsatisfying.
EDIT: I should also mention that you should be careful about measuring productivty right now -- during this COVID-19 situation -- compared to normal times. Things are moving very slowly right now.
So, use your time wisely.
If you finish your week's work by Tuesday midmorning, spend the rest of your week doing something worth YOUR time. Treat this situation as an opportunity, not a curse.
You could be learning something. You could be prototyping an improvement to some aspect of your employer's software suite. You could be writing tutorials, or even books, on how to do something interesting to you. (How do you think all those O'Reilly books get written?) You might do a side hustle of some kind. It's probably not doom-scrolling.
Before you start doing that, of course, double check that you're meeting your job expectations, and that you're not stumbling into the Dunning-Kruger effect in your job.
Why are you leaving instead of improving the team's throughput and work environment?
What makes you think you won't encounter the same issues elsewhere?
We can pretty much rule out Apple and Netflix, which leaves you only with Facebook, Amazon and Google.
Interesting typo considering the current climate.
Take a look at the work life of FAANG employees in their APAC and India offices.
> The Gervias Principle: Sociopaths, in their own best interests, knowingly promote over-performing Losers into middle-management, groom under-performing Losers into Sociopaths, and leave the average bare-minimum-effort Losers to fend for themselves. >
Couple of things about them that can differ from other firms:
1) The one I was at heavily rewarded self-motivation. If no work is getting done, the work for the engineer to do is identify why that is and either overcome the obstacle or build support and service tooling so that when the obstacle is removed, the team is ready to hit the ground at full speed. Think like water; if you hit a wall, don't freeze... flow around or over it, and fill the space you occupy.
2) Software engineering at the FAANGs differs from other places (especially startups) because, to be blunt, there are stakes. The only thing startups are out if they fail is money. FAANGs make software relied upon by billions of people, trade hundreds of millions to billions of dollars, and have sweeping cultural (and in some cases physical) impact. I don't know what project you're on, but some projects cannot allow for error in software development; it translates to lost dollars, lost goodwill, or possibly lost lives. I've never seen practice at a FAANG that rises quite to the level of industrial / physical infrastructure or aerospace engineering for quality control, but it gets up there. To that end, the processes are wildly different from ones a person may be accustom to at a smaller company, because there are systems in place designed to minimize the risk of engineer error. Sometimes, that means the engineer can't make progress until they learn enough to know why the system is stopping them, and that is by design; it's how the company encodes decades of hard-learned failure lessons into the process itself. It's more taxing than a startup's process, but that's because startups tend to create, in contrast, teetering edifices of fragility (consider Twitter's early years when they unexpectedly got popular; Facebook, Google, and Amazon can't afford to just have a service not work because of the failure mode "people actually want to use it"). And sometimes, progress at FAANGs gets slowed because unlike smaller companies, they have to consider whether what they're doing is good for society in some sense (either from a moral stance or, far more often, the practical stance of "We need an internationally-scoped legal review on this feature so we don't get sued out of a tenth of a quarter's worth of profits").
3) Some FAANGs are much better at software than management. They assume individual engineers will know when things aren't going well for them and will self-correct. To my mind, that's an error (not a lot of engineers I've met are comfortable with emotional self-direction, and it's certainly not taught in software engineering curricula), but it's what I've observed. It may be helpful to talk over your concerns with a trusted coworker (ideally on another team, to minimize the odds of any promotion jealousies creeping in) and see if they experienced something similar and what they did about it. In my experience, most engineers at the FAANGs went through a period of feeling like this wasn't for them at some point.
4) There is absolutely such a thing as a sucky dead-end project in FAANGs. My first project was one. I didn't do anything like find my footing until I got off of it. It eventually disintegrated under the weight of its own bad engineering decisions, but I lacked the perspective at the time to realize I was standing on a sinking ship. It was a ship that made an awful lot of money though, so the company was extremely willing to throw careers at it to keep it afloat, if the engineers doing the bailing were willing to hold the buckets.
All of that having been said... Even after I found projects that resonated with me and I could make real contributions to, I left because I felt like my career was stalling out working on projects at a glacial pace with mixed chance of success, even knowing why we did it that way. If the work isn't fulfilling, and if you can't see a clear path from the value of the product to benefits for real people... Maybe it's not worth you're time.
I don't think there is anyway way to stop this cycle, I've seen it play out too many times. The only way to sort of delay it is to ensure the C-levels are lined with at least one technical ex-SE type that'll call out BS when they see it.