| Having been in a product org, a consulting org and having done consulting alone, I think: - The type of work you do is largely the same across all orgs - unless you're a specialist in some advanced field nobody else can do or you can convince someone in power that you know how to do the occasional cool project - Both can have long useless meetings. Product orgs' meetings will be crap about how the company is awesome and will make zillions or crap about process-but-not-process-cause-we're-agile; consulting orgs' meetings will be all about having 5 muted engineers on reddit while the client comes up with 3 new requirements per minute - Product orgs can get by doing way less work, if people lazying around and doing the bare minimum or nothing at all upset you, avoid product focused orgs - I think you can divide consulting orgs roughly in two groups: - Doing client work with in-house project management: a nightmare of people trying to squeeze more work out of you until you die
- Giving engineers to organisations: largely like working in a product org
- Consulting orgs have the advantage of rotating clients more often, which means you'll have to deal with horrible people for a shorter amount of time (unless the horrible people are inside your consulting org). In product orgs you'll have to deal with them until they leave for somewhere else
- Consulting on your own is definitely more work & more money but, more importantly, reduces the risk of running into horrible people
|
The only thing of real value in a software agency is the team. If your programmers get pissed off and move to another company, you are going to have to spend money to hire and onboard someone, and leave money on the table (you need engineers to fulfill your contracts). So, unless an agency's management totally sucks, they will put a lot of effort to keep their personnel happy. This means, for example, having decent project management (and that's kinda natural, as you tend to do a lot of projects). Second, working the engineers to the bone is very much _not_ in the interest of the agency – if you work super hard and burn out, the customer gets all the upside (project delivered), and the agency gets all the downside. So, a decent agency will be good at pushing back when the client tries to abuse their employees.
This is one of the reasons why we strongly preferred managing the work ourselves, and why we stuck to hourly billing (which is super annoying to most of the time, but it aligns the incentives in that regard slightly better than if you bill by the day).
If the agency is doing staff augmentation, the developers are mostly left to fend for themselves. This is problematic, as it makes the devs to (justly) wonder what is the agency doing to deserve their margins.
(Of course, your mileage may vary. Ours was a small shop with very senior people, and we were doing very interesting projects. Working at a huge Indian outsourcing company is going to be a very different experience.)