Pros
1. The company is engineering focused and led top to bottom (the CEO wrote the coding standards as an early employee). As a Software Engineer, I never experienced "out of touch" management or unrealistic expectations. All of my managers had been with the company years, started out in my role, and were nice people. No egos or difficult personalities. 2. The 401k matching program. At least when I was there, Garmin matched 12.5% of an employee's salary per 10% they contributed (5% base, 75 cent/dollar up to 10%). If you stay around for the 5 year vesting schedule...this will give you a HUGE head start on retirement as a young employee. 3. Work life balance was great. Expectations were 9-5, get your work done, and nothing more. 4. Software jobs here (in my experience) were very well structured and regulated. A lot of the best practices and standards for software development, testing, and tracking projects are transferrable and give you solid fundamentals. 5. Never paid a cent for health care premiums, high-dedctible plan was still reasonable, and Garmin contributed some to employee HSAs. 6. The 45% discount on products (that stacks with normal sales) is a steal. 7. At the time, Garmin sponsored employee race (running, cycling) for over a dozen events every year. I heard they cut back on this, but it was an incredible perk, and helped me cultivate a life long hobby that bettered my mental and physical health. Overall, excellent benefits and perks, good culture/management, and a great company to hone your skills at early on if you plan to continue working at large companies.
Cons
1. As a Software Engineer, being on certain teams or products can can easily pigeon hole you and limit your skill set, marketability, and future job prospects if you aren't careful. I worked in Aviation on a 20+ year old product line, in C (you don't see a lot of job postings for this anymore), and that leveraged mostly in-house libraries, conventions, and tooling. When I started looking for my next opportunity, I saw 0 (and I mean 0) jobs that my experience at Garmin qualified me for. 2. This is another gripe with working in Aviation in particular, but projects moved extremely slow with all the regulation & testing that comes with writing safety critical software. I didn't mind this slower pace, but it can be monotonous. I had been gone from the company 3 years before the last product I worked on was released. 3. Benefits almost made up for it, but when I left, salaries were at least 20% below market value. This was hard to justify when I was trying to save up for a home as a single earner. 4. Hard to advance, stand out, or make a meaningful impact. Teams can be large, and if people didn't leave after a year or two for better compensation/location, they stayed around for a long time. When I onboarded, average employee tenure was 7 years. When I left, after 5 years on my team, my path toward a Senior position was a vague discussion. At my next role at a smaller company, I was able to learn a new tech stack, build a new product line from the ground up, and advance 2 levels to team lead in less than 2 years. Overall, pay could be a little better, and I wouldn't recommend working in Aviation specifically as a Software Engineer unless you have a passion for the industry or product line. I have heard this sentiment many times from or about both former and current employees that have switched teams. Consumer, Outdoor, or Fitness products are likely more fun to work on.