Pros
Challenging engineering problems. Software engineers are in touch with physical product. Talented colleagues. Good cross-functional collaboration. Management supports any educational activities. Great appreciation and solid bonuses for creativity. Well designed promotion mechanism. Strong retention program. A lot of business travels with full reimbursement of expenses.
Cons
People management career track developed much better then technical one. Rapid business expansion causes fast accumulation of technical debt and result in expensive development. Management predicts company growth well but can't provide appropriate office space in time, so working space is crowded. Management-driven Agile without Scrum Masters. Business driven decisions cause a lot of stress.