Free food, free t-shirts, free laundry, good pay.
If you're right out of college, this might be the place for you, but that's mostly because you won't have much work experience to compare it against.
As an engineer, with "engineer" in the title, and over 10 years of experience, I really thought I would get to do more engineering. Unfortunately, the job is really about 50% business analyst, 20% project management, and 30% engineering. You are expected to own every aspect of your project, regardless if anyone else actually does. Also, you're told you have the opportunity to choose the team you want to be on, but for me, that choice was removed at the last minute.
Bad management, bad leadership - all managers are expected to be individual contributors, which is basically another way of saying that they aren't particularly good at either role and do not have time to devote to both. Also, be prepared for mansplaining.
More money than sense: Gobs and gobs of money are being thrown around. There's basically an offsite every other week. Never mind about work, deadlines, or being competent; it's more important to go glassblowing. The pay is nice; in fact, it's the best feature about the place.
The company that wants to connect the world would rather lose talent than have remote workers. No, seriously. Say you're on a team and your team decides to move to another office that's like 1 hour away. You are kicked off the team and put on another team. What sense does that make? A new mom wants to WFH? Not allowed. Seriously, it's called Skype, people.
And speaking of teams, the team structure is completely whack. Instead of having a core group of people I work with on many projects, I have a different group of people I work with on each project – a completely different set of SWE, PM, DS, and DE for each project. This completely limits our ability to grow more efficient with each project, let alone build any sort of a professional relationship.
You're not allowed to fix things that are legit broken. I've only been here a short time and have already had to suffer fools who prefer poorly designed metrics with political BS to actually measuring things properly. Bug 1: told not to fix it – too big to fail. Bug 2: never got fixed by the other team. Bug 3: too high profile to fix. Seriously? Why not just admit all your metrics are wrong?
People care more about performance reviews than actual performance. No, really. If I hear the phrase "make an impact," I will vomit. What this really means is not "do good and useful work" (which is how it might be interpreted); instead, it means that you should do very little on the very high-profile projects and then post it everywhere to make sure people notice. Also, keep a log of your work so that you can share it with your absentee manager come review time – otherwise, he (yeah, I said he) likely will have no idea what you worked on or why. But instead of this being a meaningful signal, it just becomes more noise.
Separate managers from ICs. Some of the best people I have ever worked for were not programmers.
Stop focusing on impact. It sounds like a colon and is utterly meaningless.
If it's broken, fix it. If your metrics change as a result, deal with it.
Build a real team structure and provide some actual leadership.
Focus on programming for real reasons. This stuff is far too random and scattered, and it gets abandoned three months after completion.
Change job titles and descriptions to accurately reflect the work.
Stop having a blame and fear-based environment. It does not lead to good code.
Phone interview with some technical questions about code. Next round is technical, where you will be expected to live code. Haven't heard back yet, and I'm adding more words to complete the review.
1st round: 2 questions in C++, which is not optional, but a must. 2nd round: a system design round. 3rd round: 2 problems in Python, which is an option; you can choose between C++ and Python.
25 minutes to solve a minimum of 3 SQL questions. 25 minutes to solve a minimum of 3 DSA (Python) questions. It is extremely difficult to solve DSA within this time constraint.
Phone interview with some technical questions about code. Next round is technical, where you will be expected to live code. Haven't heard back yet, and I'm adding more words to complete the review.
1st round: 2 questions in C++, which is not optional, but a must. 2nd round: a system design round. 3rd round: 2 problems in Python, which is an option; you can choose between C++ and Python.
25 minutes to solve a minimum of 3 SQL questions. 25 minutes to solve a minimum of 3 DSA (Python) questions. It is extremely difficult to solve DSA within this time constraint.