Pros
In general: * It's a noble cause: making clinical trials more efficient helps drugs get approved faster and cost less. * Everybody is expected to have opinions about everything--it's a cliche, but the employees are *very empowered*. You can practically write your own job description if you make a good case. * The company's doing well--raises and promotions come fast, as do special cash bonuses for things like (for an engineer) finding an exploit in another team's code. In my department: * Engineers work with a net: 1 tester for every 5 engineers, code review on every commit, test-driven development with automated continuous integration. * New development is in Ruby on Rails (that's still cool, right?) and makes every effort to do things right. * You can get paid to write open-source software--Medidata is increasingly releasing everything it can in public repositories on GitHub. * There's a big training budget if you want to go to conferences or take a course on the side. * Very relaxed environment--you'll often see us multitasking between work and a card game. * You can advance arbitrarily far without needing to become a manager; talented engineers can have authority without any direct reports if that's what they prefer.
Cons
At the moment, too many high-level design and administrative decisions are falling on the same few shoulders--people who simply don't have time to review and approve everything they see. It can be frustrating.