- Below-market salary. For me personally, it was about 20% below market, and I saw others paid as little as half of what they would be paid for the same skills at many other companies.
- Other than PTO, the benefits were quite weak, especially insurance (low-grade medical plan from Kaiser, no dedicated vision/dental)
- While the company had good DEI by some metrics, the gender diversity was sorely lacking; the large majority of employees and all-but-one members of management were men
- Slow-moving despite being a small company and therefore not having the bureaucratic red tape of a larger corporation
- Very siloed work; many things were owned by a single person and if that person wasn't working, e.g. for vacation, those things either didn't get done or were handed off temporarily to someone who had little-to-no knowledge of how to do those things
- No upward mobility for developers; when I was there, there was one level of Software Developer and then if you were absolutely mission-critical _and_ management knew that (not guaranteed; I saw someone who was absolutely critical get overlooked for the whole time they were there) _and_ they liked you a lot personally, it was theoretically possible to get Distinguished Engineer, but realistically this role was only available to the 2 people who already had it - the CEO's father and the CEO's friend, who had genuinely both contributed significantly to the company but whose close relationships to the CEO gave an impression of nepotism, whether or not that nepotism was real.
- If you start work early in the morning and leave an appropriate amount of time later, you may be perceived as not working enough because management has a tendency to unintentionally base that assessment on how much of the day they see you working, and they tend to start later
- Developers were explicitly banned from writing unit/integration/etc. tests, and instead, all testing was manual. When I started with the company, the lead developer was not even aware of what these types of testing actually were. Their reasoning was that it adds more code you have to maintain and that manual testing can get you 80% of the way without having to maintain any "extra" code.
- Code reviews all had to go through one particular person, so if he wasn't available for any reason, your code didn't get reviewed until he was available again. This improved slightly during my time there to allow others to review, but he still had to review it after so the problem persisted.
- Most code reviews involved redesigns of the feature the code was for, which required reworks of the code
- Most code reviews involved being forced to change your solution to the problem, regardless of whether the new way was better than, the same as, or worse than the original, to satisfy the reviewer's personal preference
- Used Team Foundation Server for version control, which is simply not a very good tool by comparison to the more standard git
- Rather than take a dependency on any existing UI framework, used an in-house virtual DOM UI framework that was built to be similar to WPF in terms of how it's used. As might be obvious to the reader, this meant performance issues and bugs in the UI framework itself were regular occurrences and, while we did have the ability to go in and fix them, we often did not have the time because the team was so small, and so workarounds were routine.
- Lots of hardcoding, rather than configuration
- Most localization was done with Google Translate, except Chinese, which was translated properly by someone fluent in both languages. - Superstitious management (using the number 4 in the code required strong justification) - Even if you can provide a well-reasoned, provable argument for why something should be done another way than how management wants to do it, it is extremely difficult to get them to change their minds on anything
- Management is sometimes very rude to employees they don't like
- Offer letter and employment agreement stated that the SEP would be paid each year and did not make any stipulations or state any requirements for eligibility, but it later came to light that, unless you meet the stricter IRS requirements to be paid (working at least 3 of the last 5 years, being over 21y old, and earning at least $650 in that year), they would not pay it out for your final year at the company. This difference was not communicated to anyone until an employee left the company over how management handled the fact that they had discovered it, and then a mandatory company-wide meeting was held the following business day to notify everyone.
- SEP payout % depended on company performance, so while they gave around 20 to 25% many years, it was also theoretically possible to go as low as 0%