-The very worst is an extremely inconsistent work environment. Part of why I don't move teams is I'm afraid to. Some people are called in to work weekends for a senior executive's ego (even when there are known reasons the project can't deploy earlier even if they make this sacrifice). Others get chewed out by middle- or upper-management even when they're doing an excellent job. Still others get sidelined without enough work to do, put on projects that don't use the skills they were told they were being hired for, or stuck on dead-end, nightmarishly poorly managed long-term failures of projects. Not to mention all the people who buy houses or sign long-term leases only to be told they have to transfer to the other site on the far side of the valley.
-Even without getting on a nightmare team, it's quite possible that senior management will decide that their horribly-managed project really just needs more "resources," and you'll get pulled into that letting all your hopes and dreams for both your continued employment at Overstock and the stuff you're actually supposed to be working on languish.
-Many of upper management's (especially the CEO's) pet projects are pushed through at an absurd rate, sometimes multiple at once that are all top priority and all blocking each other at the same organizational bottlenecks that management is only very slowly and reluctantly willing to allocate resources to fix. The CEO has done things like commit publicly to the world that international Bitcoin integration will be live on a certain impossible date, and also bragged to the press about supposedly locking 40 developers in a room and sliding pizza under the door to get the original Coinbase integration out. You can imagine that those of us in dev have all been very leery about that.
-Monday's #1 priority for your team that absolutely has to be dev-complete by Friday may be canceled Tuesday, revived on Wednesday with new requirements, revised on Thursday with tentative new completely different requirements that will be finalized by EOB, and then put on hold once it's deployed and is ready to flip on because business isn't really sure they got the requirements right.
-Nepotism, brownnosers, politics, and firing those who aren't yes-men. I think these problems are the main reason for all the really poor judgment calls management makes, both in running projects and deciding what to do. You're frequently asked to implement something that's obviously a bad idea or that's just copying someone else long after they've cornered the market for that product, etc. You can't push back against that with any consistent degree of effectiveness (though if someone above you catches wind of it the bad decision may suddenly be un-scheduled after all), and you can't push back against the endless string of decisions to build up tech debt in order to get something out sooner, either.
-Speaking of tech debt, yeah. There's areas of code that reliably make your skin crawl, and a monolithic app that takes over an hour to build. Any project to upgrade the code or eliminate an old framework usually takes years to complete, and most projects to restructure it are just never finished, and hang around cluttering up the code even more. Don't expect to be using cutting-edge technology because it just takes many years to get to the point where we can use it.
-Working on projects that are constantly changed or canceled and that are of dubious value in the first place is dispiriting.
-Some tech-stack decisions are awful, either because business wants to integrate with another Microsoft project, someone's convinced they need to buy a third EBI warehouse, or the architect in charge of a project has personality/ego issues.
-Talent is getting weaker as the company expands, experienced people leave, and Java devs become vanishingly rare in Salt Lake. The onboarding/mentoring process is close to non-existent, and many who don't know code standards check in code unsupervised. Many teams of short-term contractors leave behind weak work that someone else has to maintain, or are simply incompetent and flounder unable to complete their projects.
-While senior management is LGBT supportive, the dominant local culture is Mormon, so it isn't necessarily safe or comfortable to be yourself at work.
-Almost all developers are white or Asian men. There are many comments, including from senior management, that create a hostile environment based on gender, race, or religion. For instance, there was a party at the Old Mill headquarters today with vacation giveaways. The CEO was joking at some winner that he should see his wife as back-up and pursue other women. I find this very uncomfortable. At a recent standup, a 15-year employee was given a hug by one of the senior executives, and the President made loud (misleading) comments about how they were kissing and getting all over each other and stuff like that. Once she told a story about how the CEO was having a conversation with Snoop and kept exclaiming in surprise about how he knew various educated-person facts/ideas. People with dietary restrictions are frequently harassed by their team mates even though those restrictions are religion-based. There was a "beard contest" with gift card prizes last November, and the directors running it refused to answer inquiries from employees about how that wasn't discriminatory, or about expanding it to be more inclusive. Every female development team lead I've ever heard about has been spoken badly of by the male devs, and the female President (who is herself a gender essentialist and has promoted gender stereotypes in the local news) is often accused in gossip circles of having slept her way to the top, even though her strong friendship with the CEO is more than enough to explain any perceived favoritism. Luckily microaggressions aren't something I witness every single day, but they've been happening a lot this week so it's on my mind.