Overall customer satisfaction is often a lower priority than doing things the way management wants them done (from the perspective of software).
Management is extremely passive aggressive, and the social camaraderie at lunch can often become an uncomfortable work discussion. It takes a thick skin and a lot of forgiveness to be happy here. Despite coworkers being very friendly, people mostly won't stand up for one another when the boss gets ornery. A fair amount of throwing under the bus happens, but not vengefully - more simply out of ducking for cover when the boss is on a rampage.
There is a rather large, rather organically grown code base that is quite fragile. I was frequently under uncomfortable pressure to fix problems that I introduced by fixing some other part of the code base. Integration tests, you say? There were none when I started. There are now a few, but by no means complete for the complexity of these systems. Unit tests will require monumental effort and time.
The major downside of software I see at Nion is how much software serves a compensatory role. Much of the software is a hack to accomodate a hardware flaw, and a lot of confusion and finger pointing results. This mostly leads to nearly constant customer support calls and bug fixing, and little time for development of new features. Further, the tiny software team is completely fragmented, with each internal project typically only having a single developer working on it. Code review did not feel welcome - other programmers were friendly about it, but ultimately avoidant.