Ask HN: Moving from a product org to a consulting org: What should I know?
So far in my software engineering career, I’ve worked at a product focused company and at a media company (building internal APIs/tools/etc.). I’m interviewing at a small software company that’s more of a consulting shop / contractor. Teams have several active projects, and it sounds like most contracts last for less than a year, with several multi-year engagements mixed in.
So my question is: What should I be considering before moving into this sort of work? A variety of projects sounds like it could be engaging, but on the other hand, maybe I’ll get bored writing the same boilerplate over and over? It also sounds like consulting has the potential to expose me to a wider variety of technologies and languages, which I see as a plus. But I’m worried that being involved with shorter term projects means I won’t get the chance to gain _deep_ expertise in any one thing, which might hurt my future job prospects?
Any advice would be greatly appreciated.
73 comments
[ 3.1 ms ] story [ 122 ms ] threadFirst: I think it’s a great idea. Consulting, especially in an agency environment w/ many clients is high energy. Depending on the size of the team you can still wear many hats and touch a lot of different projects. It ends up adding a lot of color to your day to day life.
As far as the monotony of boilerplate: that can be seen as a drag or as an opportunity to develop in house best practices, protocols and tooling to eliminate the drag of all that as well as the room for error/inconsistency.
It’s a lot of fun! I encourage you to jump in feet first. Don’t worry too much about your future career prospects - continue to grow and learn and i’d wager this will make you a better candidate in the future.
My network grew larger than it ever did in agency environments. I built the entire Four Loko website at one point. I have work still running on Farmers.com. I got to provision the first Linux instances inside of a big spooky hedge fund in Century City. It was a great time in my life.
- "long-term" architecture of projects is non-existent on short contracts (anything less than ~2 years)
- The ownership feeling is very different if you're working directly with a client, or if you work with your own team
- Even if the project sucks, it's nice to know that you won't be on it forever
- Networking as a consultant is great
- Your manager is always planning for the next project, any "down-time" is lost revenu, so expect to spend less than a week when switching between 2 projects
- I found salary negotiations simpler as a consultant, basically I knew what my manager was charging for my day. Remove some % that they're willing to live with. Then, you can do some easy math. This was within a small shop, so I wouldn't know if that would scale to big groups.
One challenge in particular is that I have next to zero inertia in my thinking...I will stay with an idea exactly as long as I think it's the best compromise of factors, but if I find a better idea I pivot like a light cycle in Tron. In the consulting world I always have to explain my thinking anyway so this was generally fine. In the product world I'm finding that people in my sphere build mental models of my thinking (or expect me to toe the line) and get surprised in not-great ways when that's not the case. For OP the advice might be that most people won't (likely) have a clue who you are or how you think, and the assumptions and patterns you've developed in a product org might be wildly different than the status quo from place to place. I would say overcommunicate and apply 'when in Rome, do as the Romans do' unless you see a compelling and explainable reason not to.
A related issue is that I will tend to argue multiple positions simultaneously. This might be specifically from the infosec part but I see everything as a tradeoff and unless I 'try on' a position I can't really fully appreciate the nuance. In consulting this worked because it let me test counterarguments and try to land on a well-considered place. In the product role this just tends to confuse people I think, especially if the arguments go against the party line. I don't know if there's anything valuable to extract here for OP.
I also struggle a bit with low 'ownership stamina'. Keep in mind that my average engagement length as a consultant was 2-3 weeks, but I'm great for MVPs and that's about the extent of it. For OP this really depends on your role...if you're staff aug on year contracts there's probably nothing for you to learn from this. If you're short term I think the lesson is that any tech debt or 'I can deal with that later' burden that you are assuming from a decision isn't actually going to be yours to bear. For OP, if applicable, I think the lesson here is to realize that all burdens are going to your customer so prioritize documentation, minimizing loose ends and lowering tech debt/operational costs.
Good luck! It's probably going to be stressful at first but you're going to meet a lot of cool people and neat problems along the way. If you used LinkedIn, get ready to blow that puppy up!
Essentially your salary is investment for the company, not cost.
In the agency model, the company's profit margin is everything they don't pass to you. There are too many incentives to overwork and underpay you. The larger the agency, the more this is true (see accenture). But give it a try and if it sucks you can always quit.
I like consulting directly with clients because it does expose you to a lot of different industries and also pays pretty good compared to most startups. Working with other agencies has been a very bad and expensive decision for me in the past.
I personally think working for a consulting org is very stressful and they tend to keep all the profits at the top. Better to follow the other advice here and start your own--maybe start with a consulting org, negotiate a less restrictive non compete, build your client list, and start your own.
There are many ways to bring value other than writing code, mostly trying to fix broken processes at your client's and putting out fires that nobody cares about anymore.
In other words, if you care and value deep expertise then consulting may not be the best place for you. It certainly was not for me.
(sorry for the negative take, it certainly depends on the company's culture and how they are positioning themselves on the market)
This is a reasonable thing to worry about, but don't overlook the opportunity to gain broad experience across the entire product lifecycle - not just with multiple technologies, but also working with customers, developing requirements and designing products to meet them, ops and maintenance, tier 2/escalation support, and all manner of other aspects of working with software that a lot of engineers in my experience tend to overlook.
You won't come out of it with exhaustive knowledge in one specific stack, sure. But you very well can come out of it a much more well-rounded engineer, and that can easily do more for your ability to contribute - and thus your prospects - than any single deep, narrow specialization ever will.
I started my career in the kind of role you're considering now, only in those days the tech was all Perl 5 and PHP 5. I was good at them then, but have barely so much as touched either language in about a decade at this point. No tech stack is forever; what's been of enduring value has almost entirely been the kind of broad experience I describe. Not all that many engineers in my experience can and will also sit down with clients to help figure out what they actually need, and then prioritize, plan, schedule, and lead the work to build it. Not all that many engineers can and will volunteer to handle customer support escalations, and be able to do so effectively, in order to get insight into where the pain points are and how to solve them. A job like the one you're considering is a great opportunity to learn those things by doing them; I don't know of any better.
Sure, if you ultimately want to take tickets and work tickets somewhere in the bowels of a FAANG, stuff like that probably won't be all that useful. If you want to start your own company, I think a job like this will be of immense value to you. Ultimately, of course it's up to you and what you want to get out of your next role - I hope I've been able to provide a decent sense of what this kind of role can give you.
The entrepreneur thing is true too, I went from an employee to running my own operation and nothing was really surprising. I'm not sure how many other jobs you can make that transition so easily.
As for disadvantages there are several. Your main concern is the first one and it is real. You can only spend so much time on a project, and that means you may never get to take it to the depth and maturity that you want. In most cases you're there to start something or fix something. Once it is started the client will take over, and if it is fixed, it's fixed. So if you want to go deep into a subject, I would pick a different path. It can be a bit sad to put your heart into something for a year and then not be able to see it all the way through. The other disadvantage is around the politics of the kind of work. This is a three party system - there are your goals, the goals of your company and it's consulting business, and the goals of the client. Those don't always align and it can be complicated to navigate. You can also find yourself in situations that are uncomfortable - like dropped into a project timeline that you weren't part of estimating. It can be a bit sink or swim in my experience. The most important factor in being successful is communication / stakeholder management and making sure expectations are clear to everyone.
It's given me a lot of experience quickly, but it's a real challenge. It is fast-paced and intense and thus it is not for everyone - but if you're thinking about it it is probably worth doing for a few years to get the experience and see how you like it.
If you find a technology you really like that's popular with clients, it may be that you get to use that with every client and then you can gain deep expertise in that. Don't be too picky here, this is an opportunity to get access to a lot of customers to find out what technology is really in demand. Contract-to-hire is also a valid thing that happens if you find a client with full-time positions open that you really like working for; you may have to negotiate with the consulting org for a finders' fee. Some orgs are not okay with this though, so I would only suggest it if you know it will work, or if you have a backup plan for another job in case it fails.
Extra advice I can give is that the relationships involved when doing consulting is pretty different; in my experience, unless the clients are all big IT firms, you likely won't have strong engineering management guiding any projects, and the client may not even be able to help you out with technical issues at all. It's on your team as technical experts to get in, figure out what is going on, and then get out. There are a number of ways to deal with this but the number one rule is: cover your ass with clients! I've seen lots of projects go south because of bad communication and failure to manage customer expectations.
Also find out what people do when they are on the bench (unstaffed). Sometimes you're allowed to work in your own projects on full pay and sometimes there's an internal backlog.
If any of the above is not true go the consulting route with the goal to have your own clients. Its exciting, you pick the people you work with and the work you accept. At the time of this writing there is plenty of software work for consultants who are interested in long term B2B companies. You dont need many. We are a team of 4 and have about 5 large long term client. We are also building a product on the side (and this is the real icing on the cake)
When I made the change I was worried about healthcare. Using the healthcare.gov market place I ended up paying about the same for slightly better (local) insurance.
- 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:
Solo consulting is more work than many other positions you can find. If you want to work part time on a personal project you are better off finding a product org with flexible scheduling then solo consulting.
At the beginning I was very active in the startup community and that meant several small contracts with startups / small companies.
With my network growing (and ageing) with me, I started having contacts in bigger companies, which landed some contracts with FTSE 100 companies.
That translates to more experience which helps you land similar roles.
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.)
By that I mean, you need to bring your A-game every day and essentially always be selling to the client (and always billing). There's no room for you being in a rut or having off days consulting and at a client site. Take your sick days rarely. That's great for some people but doesn't work for everyone.
You will not get time to analyse technical details deeply enough before presenting to clients. Focus on code quality is seldom lesser. Be prepared for a lot more talking than a product org. Be prepared for a lot more work and constant pressure of timelines.
[1] https://etrading.wordpress.com/2006/05/31/permie-vs-consulta...
The agency landscape is pretty broad. Some shops are very technical, some are design lead. Some can dump an army of bodies on a project and some deploy lean tiger teams. My experience was doing a lot of strategic engagements. I got to do architecture and real planning and quality control. Sometimes it was fire and forget popup projects. Rarely if ever did we own any support role which was pretty great. Got to flip between web, mobile and even experiential work. Very frequently thrown into stuff with no training which is always exciting/terrifying depending on your personality.
Consulting companies tend to optimise for output (delivering on time, code quality, reported bug counts, number of stories, sprint velocity etc.)
A full time product engineer has more skin in the game and freedom to work across the stack while consultants might be restricted to non-prod environments and therefore limited access to infra/devops work and prod support/troubleshooting. YMMV.
There is a huge learning in supporting what you build and not getting that experience can be a limitation in consulting.
However consulting offers you the opportunity to work across domains, tech stacks, work with new people, travel etc every 1-2 years whereas in product companies a commitment of 2-3+ years is desirable.
Finally, it boils down to quality of the group of people you are going to work with. A consulting firm with higher density of talent would be more interesting than a mediocre product team.
1) when times get bad you will be “expensive” and among the first to be let go.
2) you have to be expensive enough to afford bench time in between gigs. When the economy is good I plan for 85% utilization. Covid had me at 50%, until very recently.
3) if there are multiple consultants and or consulting firms be prepared for political games where each firm tries to position themselves to take other spots in the organization. It will range from limited access to information to outright bus throwing. The best way to stop this is highly detailed accounting of how you spend your day and what roadblocks you face. Send this to your supervisor daily via email. It’s worth the 30 minutes and has helped me on numerous occasions.
4) on a similar token don’t be afraid to mention your success. It doesn’t have to be a brag but if you build some take the credit before someone else tries to.
- Consulting is great for people with good people skills, but it can turn into hell if you haven't them.
- It's very easy for experienced workers in some shops to take advantage of the "new meat", and basically shove you their work. Be on the look for that situation. If it happens run as fast as you can.
- Find out who are the top performers, get as close as you can. Some of them will just be political hacks, but others are fountains of experience, and learning from them will provide you with invaluable insight into their fields.
- Be ready to ship crappy products. Consultancy is about doing things fast and keeping costs down. Nobody expects perfection, although you'll hear business speak like "excellence" repeated constantly. Your bosses know it, your clients know it. If you are the kind of person that has trouble living with that (i.e. perfectionist), you'll be way happier in product orgs.
- Insist on meeting the client. Engineering consultancy is 20% about making the thing, 80% about understanding the clients needs and managing their expectations. All the big failures I've seen in consulting come from having middleman between the guy building and the guy talking to the client. You don't need to be there all the time, but enough to not be playing telephone with others about what the client wants.
Since starting at a product company I’ve been able to build deep expertise, but I still rely on those consulting skills when talking with product people, QA, or if we need somebody to quickly ramp up on 3rd party libraries or understand something outside the scope of the team.
This all only applies to small, short term engagements though. Multiyear engagements are their own beast and I always stayed far away. Consulting politics is another layer of hell that most people will want to stay away from.
I've worked in different sized consulting organizations. The bigger the consulting project, the more middlemen on both sides. Large consultancies focus on large projects at large customers. Large customers have a bunch of middlemen talking to the middlemen at the consultancy. What is sold, what is required, what is actually done...it's like a big maze...
If all you care about is a paycheck and checking some "delivered" boxes, these large consultancies are fine. If you are the type of person who gets upset because you feel like what you are asked to do can't possibly be right, try to find a smaller consulting org where customer success actually means something.
>If you are the kind of person that has trouble living with that (i.e. perfectionist), you'll be way happier in product orgs.
100% Agree. Note that smaller consulting orgs can be more focused on not delivering crap, but a change in profitability or strategy can change that quickly.
I will also add that companies using consultants can be divided in two distinct groups:
1) The companies who know where they are doing and they are using consultants as extra hands/expertise. 2) The companies who expects consultants to (magically) fix their deep problems just because "we pay".
I have worked for both and 1) is definitely more enjoyable (as you can imagne!).
For consulting, it's key to remember that your experience will be almost completely driven by the specific projects and teams you're on. Two people can go to work for the same consultancy on the same day, wind up on different projects, and have totally different experiences and outcomes. (This is particularly true at larger, more management oriented consultancies that might not be able to put you into technical roles at all. Even though I came in with years of professional engineering experience, I spent my first year at a big five consultancy building UI mocks in Excel, and watching the client's Java team make dubious design choices. After some growing pains, I was able to navigate my way over into a release management role where I was able to have a more positive impact.)
This is also true for one person working over time for the same consultancy. A great experience on a great project can turn into a terrible experience almost literally overnight with the wrong change in staffing. The upside is the opposite - if you can outlast the rough spots, you can usually find a way into a better situation, thanks to the more dynamic staffing model. It's easier to change teams within a consultancy (where it's expected to change) than within a product company (where the company has an incentive to keep you staffed where it knows you perform well and have experience). I have seen people leave product companies because they can't get away from maintaining the thing the built. (Ironically, though, I left my first consultancy job in part because I couldn't get away from a particular project with the political pull of a small black hole.)
For the technical side of the work, it again varies from project to project, but your involvement in a given consultancy project will on average be shorter than your involvement in a given product project. This makes it much harder to implement anything resembling a long term vision - there just isn't enough time. It can also make it hard to understand the full impact of the decisions you were able to make while you were there. If you're staffed for a build out, it's very plausible that you see the system go live, immediately get staffed elsewhere, and wind up with no real direct perspective on how well your design/code operates in production. Conversely, for greenfield build outs, consultants are often very much involved in project startup, so spend a lot of time setting up build/ci/cd processes.
As negative as some of that might sound, I did and continue to highly recommend engineers spend a significant amount of time doing consulting work, even if product work is the long term goal. The biggest positive about consultancy is that it can put you directly in front of customers and directly at the point of trying to solve 'real world' problems with software systems. Learning to develop customer facing skills and understanding what's truly important (and not important) to people in the 'real world' is hugely beneficial. Along those lines, I've been doing product work for the last few years, but there's not a day that goes by where I'm not thinking how I'd react to our product if I was in that other role, as a consultant, trying to use it to solve somebody's business problem on a too-short schedule with a too-small budget.
I have made that change recently and it's hard for me to let go the stupidities and the crappy job we're basically forced to do "because best practices, unit tests, (you name it) is not priority".
Money can be better, tho.