Since the turnover rate is fairly low, there are insufficient opportunities to do other things within the company if you want to pursue different interests or end up on a team that is a bad fit.
The compensation structure is based purely on performance, but the subjective methods for determining performance seem to be designed to reward more junior level engineers, while creating a predictable plateau for senior engineers. It would benefit a prospective employee to negotiate a good starting salary, since raises can be meager, even for those with acceptable performance.
Local leadership consists mostly of senior engineers that get promoted to be team leads. This is not necessarily bad, but considering the size of the office, the small number of teams, and the fact that team leads have no path for promotion, ineffective managers or those with personality problems tend to stick around longer than they should.
Despite the work culture that Garmin tries to foster, the engineering culture remains frustrating and inefficient. The tools used to document and review software are largely in-house creations. While there is purportedly an effort to improve the tools, the current state is below average and leads to an inordinate amount of wasted time trying to navigate them. Industry standard version control tools such as git are used, but dangerous practices like allowing engineers to push untested and unreviewed software to the master release branch make the codebase unstable and creates unnecessary headaches for developers, management, and customers. Design documentation is virtually nonexistent, supplemented insufficiently by a mess of conflicting and out of date wiki page entries.