Requirements are never clearly defined. Developer has to start working on it due to commitment made to some high stakes customer. The initial (poorly defined) word of mouth requirement then keeps changing throughout the time of development making overall software design and code quality very poor and flaky. Its very easy to find C++ code with > 1k (sometimes more than 5k) lines of functions. Many times some code is written as POC and then just left around as real product, since no time is allocated to clean it up, and sold as a production ready feature in product. It feels like there is not much sense of ownership of code.
Good development practices are not setup. Code is checked in randomly without good code review most of times (not for first few days as junior employee, but after that you are all set to mess around), causing lot of build failures and feature breakages pretty much every build, making your life miserable if you are caught in wrong place (team) at wrong time.
Engineering has unlimited vacation policy which is awesome but not when abused by few people, also it totally depends on your manager if you are eligible for it, have seen some people going on vacation for months, which is totally unfair to others who are not allowed the same. Very unbalanced work environment, pretty sure some people put in less than 40 hours per week while some have to work crazy hours sometimes even on weekends.