Should you work for a consultancy or a product company?
I've recently crossed over 2 years in a software consultancy. Previously I spent around 10 years working in product companies.
As you can imagine there are some differences between them and I wanted to write down some of the things I've noticed.
Note: These are 100% my thoughts, and these thoughts don't represent any of my employer's, past or present! I'll update this in a couple of years as I learn more and my views inevitably change.
Types of Consulting
First it's important to mention that there are a few different types of software consulting:
- Freelancers - who often work alone and find their own work.
- Augmentation - where a person or team might join an existing team for a short time to help accelerate some development
- Outcome based consulting - where a team will identify product-market fit or problem-solution fit and build the solution
In this article I'm talking about outcome based product consultancy because that's what I do!
In a product development consultancy you usually work on a team with designers, product experts and engineers of various specialities. Team size is typically 5–10. You might sometimes do work by yourself but there are better outcomes from teams so that's what we prefer.
You will usually work on projects, i.e. a specific goal and end date. The projects tend to be one of two main categories
- iterating on new problems quickly to find product-market fit or problem-solution fit
- upgrading an existing system because it can't be changed quickly and safely in its current state.
Using New Tech
In my consultancy work I've used leading-edge tech, especially the greenfield projects. Even if you're working with legacy code in consulting, it's usually because you're transforming the legacy solution to a more modern stack.
Notice that I'm deliberately not saying "bleeding-edge" because we usually don't want to use unstable, un-tested technology in client solutions.
I don't want to name any specific tech examples because they will be out of date in 5 minutes but we're often already using items in the "Adopt" ring of the thoughtworks tech radars - https://www.thoughtworks.com/radar.
In consulting work I've found that there's more appetite to select the best language or tool for the job even if it's not exactly what all the existing stack is built in.
New tools are sometimes slower to get adopted in product organisations because of the inertia in a large existing code base. However the advantage of working in a product org with a legacy product is that the decisions are often already made for you so you can just get started on solving problems.
All new features in an existing product will probably be built in the existing stack. Many companies have templates or "golden samples" for new services.
Rates of learning
As a consultant you get very comfortable with learning quickly. Not only learning technologies but every project is a new team, a new industry and a new business strategy to internalise.
I'm not saying you don't have to learn a lot in a product company, but the breadth of "new" in every project when consulting is definitely more pronounced.
One of the primary benefits of always working on new things is that you learn to over come imposter syndrome very quickly. You know that you know nothing about this new business, but you've been in this situation many times before. You're used to the ambiguity, you've solved problems for other clients when starting from scratch previously and you know you can learn quickly.
To support the learning required consultancies will spend heavily on education and training
- cloud certifications
- MOOCs
- access to conferences
- hiring external experts to quickly train
- investing in new tools like AI code generation to accelerate learning
A disadvantage to consulting on shorter engagements is that you don't get the depth of expertise in whatever industry segment and context that a product company might operate in.
Spending 4-5 years in a product org, solving a specific problem in a single industry gives you the time to try many approaches and produce comprehensive solutions across the whole problem space compared to a typical consulting engagement.
Variety in your work
There's so much variety in consulting! I've worked on maybe 8 projects in the last 2 years. The projects were in government, developer experience tools, construction, sporting tech, financial services, property tech, crypto and healthcare industries. My team has worked on many other projects in different industries that I've also had to have a passing knowledge of.
All of those industries have different user bases, markets, compliance standards and business models. You will have the opportunity to work on apps with millions of users and brand new apps looking for product market fit. Local companies and global companies. The possibilities in consulting are endless really.
I love learning about how different businesses work so this suits me well. I can't think of an advantage working at a product company might have here. (But ask me again in another 2 years time and I might be sick of jumping around so much!)
Similar to the rate of learning, working at a product company for a few years means that you'll have much more depth in whatever context your product is in compared to consulting.
Company Culture
Strong daily culture is an area where I think working at a product company is more advantageous.
In a product company you typically have long-lived teams working on products that they have long-term ownership over. The work they're doing is directly driving the goals of the organisation that they're part of, and so they feel closer to the mission and culture of that company.
In consulting you will spend a lot of your day working in your client's culture which takes you away from your org. In consulting your work directly drives the goals of the client's organisation. Of course your work does indirectly make the consultancy successful, but there is a gap there between the two.
This disjointed feeling and ambiguity as you move between the cultures on projects is noticeable to me. Missions and principles are difficult to maintain when most of your working day is in an organisation that might be quite different.
Consultancy companies are well aware of this and do the extra work compensate. Consultancies invest heavily in culture building. It has to be more deliberate and consistent compared to a product company.
We regularly check-in with everyone on projects to check for challenges and risks. We have accessible leadership and we promote candor about the work but also health and well-being on projects. We make sure everyone has a professional development plan and time to work on it.
We do weekly catchups, weekly games in-office and online, team lunches, regular project check-ins, culture surveys, monthly events to keep the team communication humming. You name it we probably do it to help retain our culture. Every consultancy works hard at this problem.
- The Gnar have a nice article about their efforts here: https://dev.to/thegnarco/exploding-consulting-myths-culture-1n56
- Thoughtworks are the content masters and have a whole blog here: https://www.thoughtworks.com/en-au/insights/culture
- A few different leaders give their thoughts here: https://dynamicbusiness.com/featured/lets-talk-culture-2.html
The final point here is that for shorter consulting projects you miss out on the benefits of long-lived teams and the trust that forms when working together on problems for a long time. Not all consulting work is short term like this, but likely more than in a product organisation.
On the flip side there are huge benefits from observing other cultures as an outsider, you can be very objective and learn from the good aspects of another org's culture. But you also have to make sure you protect yourself from anything that's too divergent from your own.
If you're into missions then sometimes the client mission is more attractive than your consulting company! I've loved working on projects where I've helped people start new businesses or helped people get fitter. The client's devotion to solving these kinds of problems is infectious!
Ownership
I think most people who work in software feel a certain level of ownership in the work they do. Building software products is a craft rather than an assembly line. This sense of ownership and pride in my work is something I don't think I will ever be able to shake.
Whenever I built something in a product organisation I knew had to maintain it for as long as I stayed at the company. It was rewarding knowing that I would have ownership on the work for a long time.
Ownership is far more fleeting in consulting. While you're working on something you're 100% committed to it, but if you're successful you have to hand the work over to the client and that's the last you'll see it.
So I feel sad now when I have to hand the work back to the client after building something for 6 months. This is one of the things I miss the most about working in a product organisation!
Delivery focus
Software is expensive to build, it doesn't matter if you're consulting or in a product company.
Most good consulting companies will work closely with clients to prioritise and reduce scope up-front to avoid missing deadlines. But the client is usually paying directly for your time so there's more attention when things get delayed.
Because delivery time pressure is higher than in a product organisation you have to monitor mental health and burnout for yourself and everyone around you as a result. No software company can afford burnout in their teams so there is emphasis on well-being in any good software company.
I'm not saying that there are no deadlines in product companies, there definitely are! But there is usually revenue that the business generates that is not explicitly the time you spend on the work. Consulting is a different model and a different mentality.
A benefit of such delivery focus is that you get really great at identifying project risks. You also reduce waste wherever you can - things like subjective coding arguments. You develop strong pragmatism and you always have an extreme focus on solving only the client's problem.
Responsibility and Self-reliance
Ok so this point will be very organisation dependent. But I feel that in the consulting work there is more responsibility and self-reliance expected of everyone, from a brand new developer to a senior architect.
You're always representing the consultancy to the customer so you can never ignore issues and you have to follow up on what ever you promise to do. The client is paying a high fee for your expertise so they have high expectations.
As a consultant there is an expectation that you're an expert at a given role and will produce high quality outcomes, there is little room for mistakes and rework. You'll often be in discussions with the client by yourself and you regularly have to advocate for outcomes that client's might not initially agree with.
Advocacy skills like this are priceless in your career and the sooner you learn them and the more you practice the better.
The equivalent at a product company might be regularity working with customers directly, fixing their problems and presenting it back to them for critique. There's definitely product company teams that do this, but I would say that in most cases it's not part of the job for a developer, at least in my experience.
The benefit in product companies is that you don't have to do this so much, it is stressful at times!
Summary
If you're a new developer the breadth of experience you get at a consultancy can really accelerate your career.
The exposure to multiple industries, tech stacks, market sizes and everything else will make you an excellent contributor to projects. You'll never have to worry if you can "hit the ground running" like you see in so many job adverts.
If you're an experienced product developer then working at a consultancy will give you a degree of freedom and responsibility that might surprise you. You'll never know what problem will be coming next and how exactly you'll lead a team to solve it - but it is up to you to get it done!
In a product company the ability to target a specific industry, a culture you admire or an interesting tech stack and work on that with focus for a few years is unique. It's not something you're likely to get at a consultancy. A product company is the best place to find stability, depth and focus like that.
I've enjoyed my time at product companies and my time in consulting. They are quite different as you'd expect. I'd happily do either again.
I hope some of the points in this article give you some insight into trying one or the other!
What are you're thoughts on consulting Vs product companies? - let me know on twitter - @darraghor!