Pros
* Good salary * Decent benefits * Free food * Opportunity to learn some new technologies * Really cool mission
Cons
* Good managers are stretched too thin to be effective * Bad managers toss their reports under the bus, spend all day playing politics without contributing to the work itself in any substantial way * Stack ranking makes teammates unable to trust each other; very low team cohesion * Cart-before-the-horse mentality on some projects (let's build it first and try to justify its existence later) * KPI-based project management leads to a lot of people trying to "game the system" by calling things done that aren't really done - just for the sake of ticking off boxes and looking good * Due to above strategy, there's a TON of technical debt but no one talks about it. Tech debt lowers developer velocity but developers are still held accountable for deadlines. So overtime is required to compensate. * Too many meetings leaves too little time to do actual work - additional overtime needed to compensate. * 2-week sprints with all of the above distractions (plus tons of planning overhead) leaves very little time for developers to do the actual work during work hours. And goals/requirements frequently change mid-sprint. * Engine-check review process is basically a popularity contest * Too many hires straight out of college -- naive short-sighted technical decisions being made in absence of good technical leadership * Low-key bullying / intimidation * MANY ICs are burned out and just don't care anymore * Cargo-cult SCRUM - go through the motions but seem to miss the whole "people over process" part of agile * Poorly managed hyper-growth * Super-ambitious "alpha male" types rule the roost - competence plays second fiddle to confidence * Accomplishments and wins are ignored (unless it makes for a compelling demo), failures are blown way out of proportion. * Over-communication. You will be asked for status updates multiple times per day, by various parties, and you must drop what you're doing and sooth their frayed nerves. * Micromanagement - be prepared to have every line of code and every single decision you make put under a microscope and scrutinized and debated publicly in a surprisingly antagonistic manner. * No mid/long term planning. Everyone pivots wildly every 2 weeks as priorities, goals, strategies are debated and changed. Utter chaos. Distinct impression no one knows for sure where we're headed. * High ops due to immature/buggy software being forced to go live too soon * Extremely low levels of trust between ICs and management