Incompetent management. This is partly due to how the company is structed in a flat manner, but they also put accomplished ICs into low-level management positions where they start out managing several dozen (30+) people which is about 3x too many. The next level of manager commonly has 100+ direct reports. It's way too much work to place on far too few managers, so management tends to be incompetent. Because of this, "managing up" is required for a successful career simply because you have to manage yourself and then let your manager present that to his own manager. Incompatible tech cultures. Bytedance is a Chinese company and it really shows in how they do work in China vs. the US. There is a heavy emphasis on unity/harmony in the workplace which manifests as doing what you are told by the higher ups. You do not dissent, you do not disagree, you do not discuss. Doing so can cause visible signs of discomfort and it's common for them to feign agreement in order to end whatever discussion is going on. Incredible focus on short-term, measurable gains. It's led to a hodge-podge of outdated tech stacks mixed with highly customized forked open-source tools with no long-term plans for upstream merges or actual maintenance. Code is frequently copy-pasted, code reviews are practically nonexistent, docs are written almost purely for performance review and so read more like advertisements than technical documents. Very political. Working cross-team can be very difficult. People jealously guard their work and seem to be constantly in fear of any project that could lower the impact of their own work. Bad projects are kept alive and used far longer than is reasonably justifiable due to politics. Good projects cannot get off of the ground because some higher up somewhere doesn't think it's a good idea. There are committees and bureaucracy everywhere for all sorts of things and approval is commonly multi-stage.