They fire people on the spot. They call you in the afternoon and revoke your access the same day. You cannot even say good bye on Slack to your coworkers. It can only be explained by a total lack of trust & transparency. They don't give you any time to prepare, they don't give any time to improve performance (this is what happens in normal companies). Same with performance reviews: managers wait months (!) without making a hint that something is wrong, just to tell you on the official yearly performance review that you performed poorly. Why not tell earlier on a 1-to-1 meeting? This is total lack of any communication & feedback. Low salary. I was able to find a job with total compensation that is 3 times (!) larger than what I had at Yellowbrick. A lot of broken business processes: It seems that people who happened to be in charge, just don't understand how to run a company from the point of view of development and best practices. A couple of very concrete examples: they have never updated C++ compiler or Java libs. At some point they "suddenly" realised that, among other issue, it leads to unpatched vulnerabilities which get reported by various tools. Then entire company stopped developing and wasted several months on updating dependencies (which is immensely harder to do when you have to update everything). Another example: they never invested in build system. As a result, there was a ton of ways to build the product, each of which worked for some teams, but not others. There is no such thing as "proper system design". Everything is done hastily as a proof of concept, and once it works as a proof of concept, and once it's shown to a customer, there is no time to change anything. It remains in this state indefinitely and becomes technical debt. Any attempt to improve is reproached (because there is another "proof of concept that should be implemented ASAP"). As a result of the above, there is constant fire-fighting. Most people, most of the time are fixing bugs (don't expect to write much new code). No postmortems at all. (by postmortems I mean what is described in the chapter "Postmortem Culture: Learning from Failure" in Google SRE book). They never fix the real root cause issue. They might fix a bug in the code, but not in the business processes / culture. People spend weeks (!) fixing issues that should be rejected very early (at a design review or on a PR review). As a concrete example, they created code that assumes that the network can never fail (outrageous assumption!). Then a co-worker spent weeks talking to Azure support trying to reproduce the issue, and then trying to figure out the source of disconnection (if it was some switch or k8s node, or anything else). A similar story with monitoring. There is no monitoring whatsoever. In other companies, you can't push anything in prod without adding counters (like, number of retries, number of messages in-flight, response statuses, per region, per machine, per client, etc...). If you don't have this counters, you don't know if it's working as expected (but not for them!). And when it does not work, you spend days trying to figure out what went wrong. Developers don't have clear scope of responsibility & ownership. Every developer can be / is thrown at any part of the stack and is expected to somehow fix bugs. Developers are not supposed/allowed to have a vision for their part of the stack (because there is no such thing as "their part of the stack"). You literally get assigned random Jira issues. Once you have a fix, you're expected to make this number of PRs: * 2 PRs for old releases, 2 PRs for CN, 1 PR for master in the main repo (5 in total) * 5 PRs for identical branches in the test repo(s). 10 (!) PRs in total. Each PR must have reviewers and needs to pass preflight tests. Finally, you need to manually fill in the parameters of Jenkins jobs, and among other things, you have to remember that for old releases, you need to specify the old URL of the test git repo, but for new releases, you need to specify the new URL of the test git repo. This is insane waste of resources. Finally, you're expected to log the amount of time you worked on every Jira issue. The CEO certainly has a template for company-wide all-hands meetings, it goes like this: 1. Describe how bad the situation is outside (in other companies / markets / COVID etc...) - shift the blame. 2. Explain how "moderately well" Yellowbrick is performing. 3. Announce that 10% of the company has been laid off. 4. Reiterate how bright our future is going to be. (speech like this occurred multiple times) -------------------------------------------------------------------------- Now, all this happens not because people are bad (on the contrary, people are mostly very nice here). It all happens because this is a startup, and like every startup, it has to fight for every day (why would you invest in build system, if next week you cease to exist?). Unfortunately, it does not make this a better place to work.