Pros
* Friendly working environment. * Interesting domain around drug discovery and laboratory automation - much more fun than average boring enterprise software. * Attentive, professional and motivating management. * Employee feedback being heard and acted upon, with one-to-ones and appraisals being actually useful. * Carefully planned onboarding and training procedures, making sure new joiners don't feel lost. * Regular social events that are actually fun. * A nice feeling of being a part of a company, instead of being an outsourced, contracted resource. * Good work-life balance, never being forced to work extra hours. * Skilled, friendly and ready to help colleagues. Good communication within the company. * Technical management that understands the day-to-day issues faced by developers and actively helps in removing impediments. * Remarkably good and actually useful documentation. * Well-thought-out software development process, with an appropriate emphasis on various stages of the software lifecycle and a sane approach to estimation. * Opportunity to travel to customer sites and oversee how the software you worked on interacts with cool laboratory hardware that a software person wouldn't be able to see otherwise. * Appropriate focus on upfront analysis, making sure all the important requirements are properly captured in advance. * Valuable software design discussions resulting in carefully considered and understandable product technical decisions. * Good approach to enforce software quality by mandatory code reviews and multiple levels of tests.
Cons
* Large technical debt and too little emphasis on repaying it. This gradually increases development and maintenance costs and decreases developers' satisfaction. * Awkward, non-standard, custom component versioning approach that is not compatible with industry-standard tools or version systems. * Too much bureaucracy and contrived procedures, and the "fun" factor of software development being lost somewhere along the road. * As for a product company, too much focus on short-term projects and too little emphasis on a long-term product vision, especially from the software technology perspective.