Pros
You get to work with some very bright people, and may often have direct interactions with clients and customers. If interested, you get to tap into open-source development. They try to look after their own people; remote-work is quite common, and work schedules are flexible. No micromanagement. Good benefits in terms of health, dental, 401K, etc. The technical staff, peers and software engineers are very helpful, friendly and most are very capable and skilled.
Cons
- Lots of invisible expectations. Your job description and title might say "developer", and yet you will end up doing marketing, sales, pre-sales, support and being on-call at odd hours. Travel and attending conferences for marketing purposes may be in the cards. Lots of distractions and opportunity to get stagnant as a developer. - Depending on where you end up, almost all of the development work is maintenance, eventually gets mundane and stale and you end up doing consulting work where you get assist clients on how build and deploy existing open-source solutions. This means, many meeting where you watch someone struggle to edit an XML file or type a command somewhere. - They almost exclusively work with higher education; from a technical perspective, this can depressing very quickly. The types of projects, clientele and tasks you'd be assigned are often quite frustrating, and have next to no value for individual growth and development of a career path; they only allow the company to bill and make money. - As a consulting company, your job is to bill. Almost everything else comes second. Billables are often what matter, and you must make sure to stay "utilized" and billable as much as you can and this is what you would be evaluated on (among other things), yet you have no control over your tasks and schedules. Certain projects would go into very long periods of inactivity until the client makes a decision, which negatively impact your billable percentage as you would go into non-billable mode until they find something else for you. - Lots of meetings, lots of distractions. Sales, marketing and a very large number of project managers have no clue about the technical nuances or aspects of the very thing they manage or sell. Constant hand-holding, correction of proposals, and educating management on what the project is about, what the challenges are, why something is or isn't possible, etc. Repeatedly. - Project management feels 99% unnecessary. Manages are effectively accountants and run billables and numbers. Most of the time, you will be doing project management yourself directly with the client, communicating status, budget, spent hours, remaining hours, etc. - You are advertised to clients as a "[senior] consultant" (specially in sales calls and marketing blogs) and yet internally, you're software developer XYZ. Remember that you are not a consultant; you are just a full-time employee. Big difference, and this is just marketing trick to look good. - Very very few opportunities to grow one's career, learn anew or advance in technical matters. Unless you're brand new and a noob, you will very quickly grow stale and stagnant. The "career advisor" system has changed many times, to a coach, to an advisor, to a group of peers and then back. It's almost entirely useless from a career growth POV. - Depending on where you end up, you would potentially be asked to work on 6-7 projects throughout the week, each of which could be as small as 40-50 hours in total budget. Context switching can be insane, and those 40-50 hours for the 6-7 project can go on for months, since throughout the week, you'd be spending 1 hour with one client, 30 minutes with another, etc. Keeping your timesheet accurate is crazy, and by Friday, you will be entirely exhausted having jumped from one thing to another constantly. Most of the work you'd be doing is client-handholding, meeting after meeting, and very little development work. - Company has lost a lot of very key, experienced, senior people in the past couple of years and seems more are leaving. There is a lot of business speech, surveys, change in process and re-process. The continued focus seems to be on generating billables, and less so on quality and happiness.