Pros
By far the best thing about working at Network Ninja is the people. Their turnover is very low, and I can guarantee that's because our teams like the people they work with. This isn't an office politics type of environment. We don't throw each other under buses. We back each other up, and we're real with each other. I came to Network Ninja 10 years ago, and I frankly thought this would be a transition job due solely to the fact that it was programming in PHP, which I didn't think would be enough of a challenge. I very quickly realized that the challenge was not only there, but it was very fulfilling. We solve business needs and can immediately see the benefits we give to our customers. We get a lot of instant gratification in feedback that I've never had with any other development position. The benefits at Network Ninja are amazing, and the pay is very competitive. Developers have complete freedom. The management is generally non-technical, and this is the type of environment where a developer who enjoys architecting, implementing, and supporting his or her own solutions will shine. This is not a micromanagement situation in the slightest, and management trusts its development teams implicitly.
Cons
Sometimes there's more work than is realistic to finish. Sometimes customer-dictated deadlines are not realistic. As with any remote position, sometimes work hours blend into personal time. It's a very flat company structure with little room for promotions of title. This isn't a con for me, but if your intent is to work your way to the top, you might be disappointed when you realize the top is one or two levels above you when you're hired in.