It feels good working for a company that has a very good brand image and is frequently in the news for doing innovative stuff.
As a software engineer, you get exposure to some smart people and get to learn from them.
Engineers are not treated well, and beyond SDE 2, career growth is very difficult. You'll see a bunch of engineers with 10-15 years of experience who are at the same level as those with 1-2 years of experience. They were down-leveled when they were hired and will be doing the same kind of work: routine, grunt, plumbing type. Managers frequently string along engineers, giving them false hopes of promotion, and many get frustrated and leave. I know three people who left because of this.
Managers are incentivized to give negative performance reviews as much as possible and to put at least 5-10% of their employees on a so-called Performance Improvement Plan, which is a path to getting fired. This is the case even if all the team members worked really hard and delivered all the planned features on time. I have seen a few people unfairly put on PIPs. One of them was someone who had gone on unpaid maternity leave.
There's no work-life balance. In my team, I had an on-call rotation every six weeks: one week of secondary on-call followed by one week of primary on-call. Secondary on-call supports the primary on-call, does deployments, and responds to lower-priority customer issues. Primary on-call had to respond to all high-severity issues within minutes. I used to get woken up by the pager a few times per week, very late at night.
Lack of work-life balance would have been okay if you were rewarded for the hard work, but most people aren't. Since the stock price has been going up the last few years, the RSU refreshers have been limited. Also, because promotions are super hard, your compensation doesn't go up because you are already at the top end of your level's range.
Overall, the culture favors managers over engineers. The review and promotion system is highly non-transparent; it's like a mafia. Managers in an org sit together and decide the fate of the engineers, based on who they like or don't like. It's highly subjective and biased.
There are no perks.
Assign work according to the experience level of engineers.
Give high-level and more complex tasks to more experienced engineers, and low-level, routine, or grunt tasks to junior people. This way, the experienced engineers who were downleveled when hired have an opportunity to shine and prove that they can do more complex tasks.
Don't downlevel experienced people when you are hiring them; bring them in at the right level.
For some reason, Amazon has put the SDE 3 position on a pedestal, even though it's not that senior. There are Principal and Senior Principal positions after that.
Be more honest with engineers. Don't lie to them and give them false hopes. People will leave, and they do.
Managers should have frequent 1:1s with their engineers. Mine had only a few 1:1s in the whole year.
For upper management: Evaluate and scrutinize managers more carefully.
Pay attention to their engineers' retention.
Do something when managers have really bad tech survey reviews (the annual anonymous company-wide survey), which usually happens when they don't treat their engineers well.
I have seen really bad managers who treated their engineers very badly still working there after many years.
HR call to ask some information about myself. Three rounds of technical interviews: * Two coding interviews * One OOD design interview Manager call to introduce the team and teamwork.
I took an online test and passed. Afterward, I received an email to schedule four video interviews, all on the same day and back to back. Each interview focused on a different aspect of coding, such as algorithms, advanced data structures, and projec
The interviewer was not prepared. They did not try to understand the solution, even though it was correct. I think they were absent-minded. It was a little unfortunate, but that's okay. I just wanted to inform everyone that this can happen. Not ever
HR call to ask some information about myself. Three rounds of technical interviews: * Two coding interviews * One OOD design interview Manager call to introduce the team and teamwork.
I took an online test and passed. Afterward, I received an email to schedule four video interviews, all on the same day and back to back. Each interview focused on a different aspect of coding, such as algorithms, advanced data structures, and projec
The interviewer was not prepared. They did not try to understand the solution, even though it was correct. I think they were absent-minded. It was a little unfortunate, but that's okay. I just wanted to inform everyone that this can happen. Not ever