Pros
Management runs a tight ship, you won't be working extra hours because of bad management. Offices are clean, and coffee is always available. You can build whatever you want and install it as long as you can handle it. I was able to implement whatever technolgoy I wanted as long as the software ran smoothly in the customer's pc. So, in a way I was lead, designer, architect, and test lead, which is pretty valuable if you got the brass to push it.
Cons
No good development standards, you are on your own there. You are also on your own on technology, design, architecture, build system, testing environment. No work team. Way a lot of legacy systems which are set in stone. There are no perks, and results are not important, only following orders. So if you create a new product it wont be as important as being there on time.