Pros
The work is very challenging. There is never a dull moment. That said, it is also very rewarding... financially and mentally. You can't really put a dollar value on the professional development that occurs as a result. Almost every rollout is a new set of people with unique needs from the software. As a result your problem-solving, business analysis, and similar skills improve by leaps and bounds every day.
The product they offer is very strong. It kicks butt resulting in successful projects, happy clients, and generally high morale. The competition is all big-name software firms, but their products aren't even remotely close in functionality, cost-effectiveness, or success ratio. It feels great being the little guy and going into these incredibly large, complicated projects and doing a better job, at a better price, and actually delivering on time.
Structure is very horizontal, access to the partners is surprisingly open. Partners are very involved, very hardworking, and have an impressive mix of genius and business acumen. They seem to go out of their way to do the right thing for the employees and the clients and that ideology permeates the company culture.
People are generally fun-loving and very bright. They hire really well, lots of math majors, lots of Engineering/CS majors, and overall just a good, interesting mix of people.
Cons
Depending on the type of person you are, moving every couple of years can be taxing. The physical relocation process is well managed but the answer to "where will I go next" is often times complicated and hard to nail down.
If you're big on "Titles" the horizontal nature can be frustrating. The room to grow is definitely there though as they reward hard work and professional growth with better compensation and more opportunities. The opportunities will often result in even more work and more responsibility but that's just how the corporate world works in general.
They turn the software contracting paradigm on it's head and then smash it into a million little pieces. People with previous software industry experience often find they need to throw away their previous conceptions about what a software company is "paid to do" and embrace the company culture. It's scary, but it works.