179 comments

[ 2.8 ms ] story [ 237 ms ] thread
I agree with the author, and would add/modify a few things.

If you're successful as a consultant, you'll soon discover economic incentives steering you towards an established business model, which can take some of the thrill out of it.

By far the most valuable experience has been meeting people at all levels of an organization without being a part of their power hierarchy. When you're a neutral third party who has suddenly appeared in their daily routine, conversations go differently and people open up more. The company founder seeks your opinion about what direction to take the company--even when the question is far outside your scope of expertise. The forklift driver tells you of problems he dares not reveal to his manager. And the HR director, feared by many, turns out to be the best advocate for those who run the other way when she is near.

what do you mean by "And the HR director, feared by many, turns out to be the best advocate for those who run the other way when she is near." ?
HR is generally seen as being anti-employee, in the sense that the reason they exist is to protect the company (legally speaking) by managing its relationships, benefits, compensation, etc., with employees, and this often pits the company's interests against those of the employees.
It's quite silly for anyone to see HR this way in the first place. They get paid by the employer. Union execs get paid by employees. Figure out which is pro employee.
Human Resources mean managing the resources that are humans. Not resources for humans.

HR is there for the company.

I don't know a lot about the mechanics of unions, but are the salaries not paid out of employee dues?
Depends on which union, really. Corruption is a real problem in some of them, and in others the will to fight is weak or state laws make them much less powerful.
(comment deleted)
Any founders or early employees out there who have experience doing this after their startup exits or closes? This idea really appeals to me and I could see myself doing this sometime in the next five years. I'd be interested to hear how it's gone for others.
After shutting down my startup I went into consulting. Frankly the work was easy compared to startup life and my experiences trying to move fast and iterate were exactly what my clients wanted to do.

I had a ton of knowledge gaps about enterprise, but they were relatively easy to fill in.

What channels are best for advertising oneself for consulting opportunity?

For example, I am good at general software engineer (dev process, culture, management philosophy), and detailed technical work for distributed system (cloud/backend).

Where do I let people know that?

networking events, conferences, previous colleagues. face to face encounters, most of which have been severely cut back the last year.
All of which work for people seeking a normal job as well.
You can also simply apply cold. Ultimately turned the offer down due to concern about burnout, but I had a great experience interviewing with McKinsey. Compared to most tech company interviews, I felt like I was given every opportunity to showcase my strengths as a generalist, and the people I spoke to were all very likeable and invested in the process.
different teams are very different but I also can say McK Analytics was +10 -- lots of invested and interesting people.

Though I do see that only 1/6 of my interview panel is still there 4 years later?

There's a difference between working as a consultant for a body-shop (no offence - and I do appreciate that McKinsey is nothing like Accenture) compared to doing consulting under your own name though.

Out of curiosity, what would you have been doing under McKinsey?

> my strengths as a generalist

I'm curious to understand this phrase, and how the interview process helped.

I think a lot of developers would prefer to sell themselves on their ability to take high-level business problems and work with a team to come up with software solutions, rather than just their raw technical skills. Of course, it's important to understand the details too, but I get more excited by delivering solutions which make my customers' lives easier than implementing a low-level algorithm that already exists in a library somewhere anyway.

McKinsey case studies are more similar to real work than most interviews. You're given a large business problem, and then you're responsible for demonstrating the sorts of questions you'd ask a real client in order to do product discovery and get accurate requirements. Then, you talk about the way you'd architect a solution and go into the details if you have time. At the end of the interview, your interviewer asks you realistic questions like a client would.

I do like pair programming exercises (the ones where you get a realistic problem with an open-ended solution, not the type where the interviewer yells at you until you get the One and Only Solution). And McK does a bit of that too, with questions which validate your ability to develop across the stack, but aren't anything you wouldn't encounter in a normal day at work ("implement a JS component in whatever framework you want", "given this table structure, write a query to do X in whatever SQL dialect you want", "implement a basic REST API to fulfill this use case in whatever language you want").

(comment deleted)
I did this as my first job out of college and then within the core dev team at a large corporation serving multiple brands. You definitely see patterns and can help identify problems inside developers and managers do not see or dare admit. However you can also be seen as a warm body churning billable hours paid to the company at 4x your salary until you burn out. The lack of ownership of outcomes also means a lot of the real valuable lessons you get after your hard work are lost to you. It is however great for engineering roles where you are implementing tech the core team is new to. If you are an open source contributor or a specialist in a niche architecture, consulting would be a great gig, just make sure you make it a point to learn about the outcomes or decisions that come out to your work.
Here in Mexico we have an opposite view of this: The majority of developers have spent their professional life doing "consulting" jobs in outsourcing firms. Few devs have experience developing a product and taking care of it 2 or 3 years later.

The difference shows in the type of code they do, the "ownership" and engagement they have: Those with a consulting mind will do something and then have the notion that once its "done" they don't have to care about it. Those that have been bitten by their own code from the past have a better notion on how to write maintainable code.

Very interesting and unexpected points. Thank you for sharing that view.
That's outsourcing, not consulting.
That's outsourcing for the employer, but consulting for the employee. If I consult for a US company while being in South America, I'm still a consultant. They are the ones outsourcing.
I don't think that's true.

You're a freelancer, that works for a US company.

A consultant is an advisor, that should have some specific technical or domain knowledge to advise people with.

In reality, everyone can call themself a consultant and i bet you can charge better money calling yourself consultant, even if you don't possess any specific knowledge and just work as a regular dev.

No, there are non-US companies that sell consulting services to US companies. If you are employed by one of these companies, you work as a consultant for a US company (usually as part of a team with several compatriots), and you are not a freelancer since you are employed by your company. If the contract finishes and you're left without a project, you're still employed and drawing a paycheck, and it's your company that finds you a new project to work on.
Right, but nobody hires code monkeys for their bargain outsourcing sweatshop. They hire "experts" with "years of experience" for "consulting" to produce "custom solutions."
Consulting is outsourcing
There is "cheap outsourcing" though and actually hiring a deeply talented expert for that one thing you need done, and done right preferably. And anything in between.
The article specifically excludes outsourced development from its definition of consulting:

I’m not talking about becoming one of those contractors who are billed out by their companies as “consultants” but are really just serial hired hands. I’m referring to a true consultant role, where you are paid to bring expertise, give advice, and drive technical change.*

Yeaaaah, I have never once heard anyone use the word "consultant" to mean the latter.
Clearly multiple people in this thread and the original article itself. Maybe you’re looking in the wrong places?
I've spoken to multiple consultancies to try and figure out if the career path would work out for me.

All of them made it clear that their MO is to provide asses in seats to build software quickly, then hand it over to the customer to whatever they liked with it - generally hire a bunch of outsourced developers to keep it barely alive, maybe add a feature or two per year.

Now TBF this is Switzerland, where salaries are always very high, but employee stock options etc. are pretty much unknown (outside of Google). Generally that means that companies are already spending shitloads of cash on software developers, so they might as well hire them as employees, not contractors.

When a major company "brings in consultants" they generally mean exactly calling up one of the major consulting firms and bringing in a bunch of outsourced short-term people (those "hired hands") and not e.g. freelance experts; and while these "hired hands" contractors are quite different in practice from "proper consultants" as the article describes, they usually are advertised as the same thing.
By "serial hired hand" I think the article is taking about someone who is technically a contractor but gets repeatedly contacted by the same company for the same project over a period of years. They end with (almost) the same level code ownership as a regular employee. That's not what the parent comment was taking about.
I'll second this. US SWE who spent a good portion of his career either doing consulting or working for a consulting company. It left me unable to care about the products of the companies I eventually settled down and started to work for. I have a very problem-centric attitude where I need to be fed well defined tasks and can't seem to care about the overall product, with it's various problems and features.

Don't get me wrong, I think consulting is a good thing for people to do, but don't let it distort your thinking. It's also easy to start to see everything in your life in terms of your hourly rate, and you start making weird choices regarding how you spend your time.

In response to the other replies, I'll say 'consulting' entails both work for hire(I was a core member of the platform team in a major media device company for 6 years) and full project design('We have a rough idea and we need to to architect, code, test, deploy and sometimes maintain a system'). It is not just working at a body shop doing shit work for hourly pay(although sometimes it is, depending on the economy).

I'm a consultant right now after doing software engineering for almost two decades. I owned a lot of my code before which got me to appreciate caring for maintainability.

I generally work as an advisor rather than a coder but if I do end up coding, one of my primary goals when working for a client is ensuring the code is high quality, maintainable, self-documenting and that any workarounds and cut corners are clearly marked as such and highlighted to the client.

You can just do this because you want to be proud of your work. Because you don't want to hate your life. Because you didn't spend 18 years of your life learning to end up writing unreliable diarrheas just to save yourself 30 mins a week.

And those dev shops in eastern Europe / asia are not consultancies. They're freelancing agencies with a sales pitch. Consulting implies expertise.

>Here in Mexico we have an opposite view of this: The majority of developers have spent their professional life doing "consulting" jobs

There's a saying here in Russia:

Can't code? Consult. Can't consult? Manage.

Love this saying and from my experience, a lot of people actually do exactly this.

I've worked with many managers that used to be bad developers. Most of them were bad managers aswell.

I've also worked with a few managers that were still very good coders, they tended to be much more hands on and productive with their managing aswell.

What makes a good manager for you?
Someone that actually manages things and takes away a lot of the communication between devs and users/customers.

Someone that has a broad overview of things and keeps things in line between devs in different teams, QA etc.

Someone that tackles existing or future problems hands on, by clearly communicating them and prioritising and assigning them to the right people.

Someone that makes sure, that requirements/backlog etc. are always in a workable shape.

Most managers that i work with lack in one or multiple of these areas.

Some managers i worked with do none of these and just report numbers and budgets, while avoiding to do anything useful towards the actual project/product.

I guess in this saying what "consulting" means is some vague "Agile, SAFe" BS consulting. What is being talked here is a software consultants who actually create software.
Based on my own experience as both an employee (~10 years) and consultant (~5 years) in The Netherlands, I'd say in The Netherlands generally the more experienced, more skilled workers tend to go into consulting. Most consultants I worked with did deliver better results and seemed to be slacking less.

I attribute this to the following with regards to work culture in The Netherlands:

- developers mostly interested in job security or promoting into higher roles within a company stay employees

- developers who feel that as an employee they are underpaid with regards to their skills and abilities, these developers tend to move into consulting as it gives them more control over their income, since as a consultant they choose their own rates - these kinds of developers are likely not interested into management roles as well (or they might opt into consulting as PM, SCRUM master perhaps)

From what I can tell, consulting rates in the Netherlands are significantly higher indeed compared to employees. At least 50% more on average.
Freelance consultant in NL here. The consulting-firm rates can be much higher, but usually freelance consulting is much cheaper than employees. One of the reasons I went into this is I was working in both academia and in companies at the level where I was hiring for projects, and the ridiculous money that just gets eaten by overhead and middle management is absurd. If you hire a PhD and pay them close to ~40keur/year (NL is comparatively higher salaries for PhD than other places), you need about ~100k per year for that person. University bench fees, or corporate overhead, computing resources, insurance, pension. If you go up from PhD for 1 FTE senior engineer in a company it gets worse, they get ~60k before income tax, it costs closer to ~200k for 1 FTE (this is a real recent example for a project I am involved in). On top of that you need to give them a contract, so if you hire a lemon (which will happen at some point), you are stuck with them at least for a year. For me, and I think for some experienced project leaders, it makes much more sense to hire someone as a contractor per month, if they keep delivering, then keep them, if not, don't. If you keep them, maybe you pay 80k for the year. Another aspect is that the cost of a external person is just a cost, like buying computing resources/equipment for a project, it can be easier/simpler to factor into a project (as its not a continuing cost commitment) and depending on the arrangement, can be deducted from the companies VAT. Freelance consultants do their own admin, handle their own expenses, work from home (though so does everyone at the moment) so the hiring company just pays directly for results. To a new manager/project leader, prospectively, it can seem like a higher cost up front but that's only if you compare 80k to 40k which isn't fair or what you will see when you look retrospectively at the project cost. Consulting firms lose most of this benefit because they still have all those extra costs/commitments involved. Business is strange.
Can I ask you some questions about being a freelance consultant in NL? I'm a Dutchie myself. If you're up for having an online chat or IRL coffee [1] my email is in my profile.

[1] I live in the Amsterdam area.

I've been to a few of these "Hackers and Founders" meetups in Amsterdam before Coronavirus hit, and ran into interesting people who know about stuff like that. I love their strict anti-douchebag policy!

Café De Doffer or the Hacker Building might be a good place to meet up, once that kind of stuff is happening again. But I don't know when that might be.

https://hackersandfounders.nl/

https://hackerbuilding.nl/

>We were originally a group of friends who co-worked from different places across the city. We dreamt about getting our very own building so we could create our perfect work environment of likeminded people. So when the moment was right, we made that happen.

>Our group is pretty tight-knit but very welcoming to newcomers too. We have a strict anti-douchebag policy, which means we only have friendly people here who are open and welcoming.

> they get ~60k before income tax, it costs closer to ~200k for 1 FTE (this is a real recent example for a project I am involved in)

That’s a pretty ridiculous overhead percentage. Even given all the taxes in the Netherlands, I have no idea how you could possibly arrive at that (given legally mandated stuff, obviously you can make it as crazy as you want).

Absolutely ridiculous indeed. That example is from a month ago for a medium-sized, research-oriented child company of a much larger tech company. They get a lot of funding from grants and collaborations so one could argue it as a way of funneling money from grants back into the larger company's pocket.

I have been trying to find/join/create a organization or group structure for research that would be more open/fair and less susceptible to corruption/waste but it's not visible enough of a problem to get support for it, and too new or odd sounding to get granting body to take a gamble on it.

A non-profit with everyone's salary visible, who work on delayed-release but open-source projects, seems like a good start to me, after all most of the research grant money is public money, it should be visible where it's being spent. Bounties for researchers/the pubic to fix active bugs. And a mandate that the code (or other work) gets released after ~2years no matter what. Commercially-paid early access and support. Harder to make a business around for sure but the amount of projects I have worked on, that don't get released as they are not profitable or the company/university are too lazy to make a profitable license/product around and refuse to just release the IP. I had one project that was patented and then the company is just sitting on it (for almost 10years now) waiting for a competitor to release something similar so they can seek licensing from them. It's heart breaking seeing all that work/energy/money just get locked up in a private gitlab repo to die when some of it can literally save lives or kick a field into the next step.

Did both and consulting rates are indeed higher at face value but that is compensated by the risk. As an employee you will be paid if there is actual work or not, me as a consultant will be terminated the minute my work is done.

So if you are good in a field where there is demand, and you actually like doing negotiations & finding opportunities, doing your own bookkeeping and not forgetting your pension funds: go for it!

Just to be clear, you're talking about freelance consulting in NL, correct? I can believe that. Based on my conversations with peers, the big consulting firms seem to be the exact opposite however:

- Spending endless time on useless reports.

- Technically ancient development practices.

- Delivering "courses" or workshops to clients on topics they only themselves learned about 2 weeks earlier.

- Extremely low starting salaries, with long working hours, and a ladder culture that's been described to me as very corps-like (dutch name for fraternities).

As a relatively fresh FTE, the "big consulting shops" have given me the strong impression that it is where technical prowess goes to die.

Yes I meant freelance consulting. People working at big consulting firms are just employees.
Employee vs. consultant aren't mutually exclusive right? Were you thinking of employee vs. contractor?
Employee and contractor/consultant/freelancer aren't necessarily mutually exclusive -- they can be "layered".

There are "management" companies that will employ you full time, and draw up contracts with other clients, who pay them directly, then they take a cut of their fees, withhold income tax, and pay you the rest.

But they don't find clients for you, and it's nothing like working for a "big consulting company" (i.e. outsourcing shop): it's up to you to find the clients, and to agree with them on the work and the rate.

Of course you need to have an agreeable client(s) before they will hire you: they won't help you look for work, and don't interact with your clients beyond drawing up contracts, sending them invoices, and taking their money.

I've worked as a full time employee of the Dutch branches of a couple of international "payroll management" companies (Segment BV and TCP Solutions), in order to qualify for the Dutch "30% Ruling" for highly skilled migrants (which makes 30% of your gross income tax free, which is game changing especially in the higher brackets, and it has other benefits, which more than offset the management company's fees).

30% tax ruling in the Netherlands. Get to know the benefits of the 30% reimbursement ruling for highly skilled migrants and see if the tax advantage applies to you:

https://www.iamsterdam.com/en/living/take-care-of-official-m...

>Are you eligible to apply for the 30% tax ruling?

>The most important factors are:

>The employee has to transfer or be recruited from abroad by a Dutch employer;

>The employer and employee have to agree in writing that the 30% ruling is applicable;

>The employee should have skills or expertise that is scarce in the Dutch job market;

>The employee must meet a salary threshold (this is indexed annually).

>Read more in-depth information about the 30% ruling, discover more benefits of the ruling, and find out whether you are eligible. https://www.iamsterdam.com/en/living/take-care-of-official-m...

Segment BV:

https://www.segmentbv.nl/

TCP Solutions:

https://tcpsolutions.com/nl/

TCP Solutions bills themselves as doing payroll services, HR services, fast payout and pre-financing, and recruiting and working abroad, and they help out with compliance with Dutch laws, taxes, and regulations.

I initially applied for a full time job at TomTom in Amsterdam, but since it's hard to fire of somebody with a full time contract in the Netherlands, they first hired me as a consultant through Segment BV for a three month trial period, to see if I was a good fit.

After the trial period went well and they were happy with my work (which gave me a lot of leverage), they made me a decent offer for a full time employment contract, including relocation and hiring bonus and a good salary.

Although the full time salary TomTom offered was great for the Netherlands, it was actually less than the net amount I was being paid through the management company as a consultant. However TomTom's relocation and hiring bonus and full time benefits and stability made up for that, something a management company doesn't give you.

The key role the management company served was to hire me full time as an employee of their Dutch company, which qualified me for the 30% ruling (successfully applying for which requires...

Don't do this on HN, this is a news site.
> There are "management" companies that will employ you full time, and draw up contracts with other clients, who pay them directly, then they take a cut of their fees, withhold income tax, and pay you the rest.

This sounds partially similar to how barristers' chambers work here in the UK. The chambers' clerks manage the barristers' contracts but also find them work, unlike in your example. In turn the chambers takes a cut of the barrister's fees (and the clerks, traditionally Cockneys with sales skills, can earn well into the middle hundreds of thousands: https://www.bloomberg.com/news/features/2017-05-23/the-exqui...). Pupil barristers who are still in training are paid a salary of £50-100k or so, which comes out of the 'pot' that the fees go into, but after that point they have no guaranteed earnings. The barristers are obliged to take any contracts they are offered (https://en.wikipedia.org/wiki/Cab-rank_rule),

I think that would be an interesting model to adopt for software engineers. You would join a 'chambers' which has a good reputation, and, by accepting you as a member, they would signify that you're a talented engineer. They would do the work of finding clients - which after all isn't a natural part of an engineer's skillset - and take a cut in return. Essentially the chambers is being compensated not only for literally finding a contract, but also for the reputation which they built up over many years, which is valuable both for clients (who know they can find good professionals) and professionals (who know they can get good and steady work).

It sounds more like an umbrella company than a chambers if I reading it correctly. in that they aren't finding you work like a chambers would
And that is why (as a Dutch citizen) I’m not working in the Netherlands any more.

It’d be pretty nice to move back there, but my taxes would shoot through the roof and as a citizen I’m not eligible for 30% deduction.

So those jobs they lack Dutch citizens to fill? Yeah, that’s because all those people are emigrating to places where they’re more appropriately rewarded.

I guess when I think of a consultant, in my mind it's implied a contractor. I think most people in The Netherlands would think the same and maybe it's a language or culture thing.

Yes, I did mean contractor.

(comment deleted)
I do think there's a difference between McKinsey, Bain and BCG

versus

EY, Accenture, KPMG, PWC and Deloitte.

In terms of salary and work hours that is (i.e. MBB higher salary, more hours). I couldn't comment on anything else about it.

Isn't that the difference between consulting firms who just do strategic consulting and the others that sell a wider range of services including delivery?
I suppose so. I'm not too familiar with the industry.
It depends a bit on the consulting firm, but most are indeed "serial hired hands" like the blog says.

Most are fine to be for 2-5 years though as a fresh grad. You'll get some experience. Most good people move on to freelancing or something else after a while though*, I wasn't too impressed with most of the people who were there 10+ years.

* The company I worked for has an exodus of about 10-30 employees starting their own small company every ~10 years, since they reckon they can do the same with less overhead and bullshit for more pay. They're probably right.

Most developers at the consultancy I work for work a normal work week, don't make reports, have normal (meaning neither ancient nor state of the art) dev practice. And there is nothing fraternity like about it, nor is there a climb the ladder idea. It's super boring. You're right about it not being amazing for those who want to work on interesting technical problems. Clients tend to be big, technology tends to be firmly in the legacy category. I think they mainly hire consultants because employees can be expensive to fire under Dutch law for institutions that are financially secure. Which makes it different from consultancy in other countries.
Based upon my own experience in the area - having a whole two weeks to learn something before being presented to customers as an expert is actually pretty good.
So, you would be confident doing a presentation about a topic in which you have a total of 2 weeks of working experience? Personally, I would not.
It was pointed out to me early in that phase of my career (happily long ago) that for most clients - talking with absolute confidence is far more important than talking based on actual hard knowledge.
Yeah.

In Finland also the trend is that most "T-shaped" and experienced devs seem to be either in consulting freelancing or working for smaller consultancies (50-1000 ppl).

The big shops focusing on India outsourcing like IBM, Accenture, Deloitte etc. are a completely different thing.

>The majority of developers have spent their professional life doing "consulting" jobs in outsourcing firms

I think the issue here is your correct use of quotes on consulting. Contracting is not consulting; the latter you're usually getting paid a premium for your expertise, not as a cog in the wheel of code production.

Agreed. Many engineering leaders at big companies were consultants at one point, which is a big reason why I got into the game.
Have been in dozens of organizations as a consultant, and it gives you a powerful meta view of how teams work and org dynamics that is not possible any other way. However, the skills needed to operate in an environment where you have to see and deal with the same people every day for 5+ years are very different from those required to provide value as a consultant.

Being an indie outdoor cat and being a big-5 employee are very different as well.

Definitely agreed. Fortunately, many consultants are looking for exactly that kind of exit, and it is easier to train a consultant with lots of diverse experience how to operate in that environment than it is to teach an FTE with 10+ years experience how to understand an industry at a macro-level

There are also many consultants on multi-year engagements that already have this experience.

Just to add some counter balance to the hyperbole in this article. First, I always approach articles of “every X should do Y” with some skepticism. Its not a statement everyone can make, and I think individuals under appreciate survivorship bias.

Also you should know that being a self employed consultant is very different from being a company employed consultant. If you work for a firm, you won’t be measured by your impact per se but rather by the number of hours you bill.

Optimizing for hours billed is a cancer that kills innovation and creativity. I despised it, and it poisoned my experience in consulting. You’ll also find that it’s more profitable to create a factory that churns out 100 mediocre solutions than a few really good ones. You’ll also write a lot of single purpose code if you do software development as part of your consultancy work.

Consultancy has lots of great qualities but there are a few really awful ones that are prevalent in the industry as well imo.

I spent more than half my career in digital consulting for mid-size (500-5000 people) that did full service product development (strategy, design, tech, marketing). Eventually working my way up to director level that meant doing sales and writing contracts.

We did some crazy stuff. Delivered some gigantic ambitious projects with pure chutzpah. Dove into tech we didn't know anything about. Go sell a project to an airline, read everything about the airline business, then walk in like experts. It felt like fraud at times but we pulled it off so well you just start to feel invincible. It was a meat grinder but also thrilling. The kind of stuff I feel privileged to have been part of but never want to do again.

>"We did some crazy stuff. Delivered some gigantic ambitious projects with pure chutzpah. Dove into tech we didn't know anything about ..."

OMG. I had exactly the same story word for word until I got fed up with this meat grinder and had started my own business 20 years ago.

> It felt like fraud at times but we pulled it off so well

This hits home. 99% of work for those projects is common sense, and 1% is that special knowledge that you can learn on the job.

A colleague used to call this "reading the manual in the bathroom".
Exactly. And after you've done it a few times for different businesses you see really clearly what things you have to modulate. Then you just dig up your case studies that solved whichever set of problems they have to prove your bona fides and sprinkle on a bit of innovation and some design splash.
This is a great summarisation of what I feel being a consultant feels like too. I often find an avid eagerness to produce the best there is, learn and adapt is a must, but once that fire goes out - like you say - you would never want to do it again.
>It was a meat grinder but also thrilling.

Fully agree. It was thrilling. I also did the exact same thing.

I spent a 5 years out of 40 working for a consulting firm, and I think it was valuable, as you get thrown in to all sorts of random things, which provides some great experience at dealing with stuff you barely knew existed before the customer walked into the door. This was mostly around the turn of the millennium (including Dotcom era).

The flip side was seeing some idiotic customers you had to build things for that clearly made zero sense, technical or business, and often led you to wonder about your sanity. I worked on one project for several months at which point the company pivoted to an unrelated business, and then refused to pay for the work done, as they no longer needed it. Another project was very successful in fixing their business issues, but they refused to pay for an extra week caused by a relatively major requirement change, so I had to leave the project incomplete. In another project the arguments about signing the contract took longer than the project did, so I was forced to work without any communication with the client.

Nit-pick, but

> Empathy for customer needs

You can't have empathy for a need, but you can have empathy for the pain the person is feeling due to their needs. Empathy isn't really all that useful. What you really want is compassion for the customer and their needs.

When you pay a therapist to listen to you, do you want them to feel anguished, anxiety-stricken, rage-filled? Or do you want them to listen to you, understand your feelings, and calmly help you cope with them? The former makes for a very ineffective therapist; they wouldn't be able to get through the day doing that for every patient. But the latter allows them to do their job, which is to help you solve your problems.

Compassion also helps you choose better solutions. When you're empathizing, you're using your emotions, and we don't think clearly when we're emotional. When you're compassionate, you can consider their emotional state, but you may need to ignore it to provide the best solution, which might not be one that appeases their emotions. I have often over-empathized with customers' problems, and subsequently gotten angry when a solution I wanted to use [to alleviate their pain quickly] wasn't implemented. The calm approach was longer, but better in the end, and didn't have me lashing out at the bureaucracy.

I don't think the two are mutually exclusive. For me, empathy is a root of compassion.

E.g., a friend of mine had an OS problem where she lost a bunch of files. I felt empathy first, and expressed it first as well. Only then did I turn to compassionate aid.

It's true that one has to manage those emotions, but that's true of all emotions.

I concur. Compassion seems impossible without empathy.

If you can’t imagine how someone feels (or why), how can you feel sorry for them?

> But running your own business involves a whole bunch of other skills like sales and networking. This post is mainly focused on how consulting helps you become a better engineer, so I won’t spend much time on the independent option.

How do I do this?

> Once you’ve worked with a few clients, you’ll realize that most of them aren’t as unique and special as they think they are.

Perhaps it’s just the kinds of things I work on, but I n my experience it’s mostly been the opposite: the customer is a domain expert in what they do, but not in what I do. I usually learn a lot (not by these experts’ standards, of course, but by mine) about new domains and as a result the world just looks different after each project.

I've been on the lookout for consulting gigs, and they are far less common now than they were 20 years ago. I'd really like to know how OP is finding these gigs.
It is very true. Consulting was much easier. It looks like the market split into low budget places like upwork, low-code solutions, hiring someone directly, going overseas or going for a branded company.

You have to out market/ brand /out sell before you get to code. It makes sense to partner with someone who has a customer funnel because your job will be to provide that funnel otherwise and still have to do the coding/technical work after that process.

specialize and become a true expert in your niche
I work in an agency. I'd love to work on a mature product someday.
I only realised this after working in an agency for my first job - I find it more satisfying to improve a product than to keep producing new products.
I couldn't help but think of Steve Jobs take on consultants when reading this: https://www.youtube.com/watch?v=-c4CNB80SRc&t=10s
"How many of you are from consulting? Oh that's bad. You should do something.

No seriously, I don't think there nothing inherently evil in consulting, I think that without owning something over an extended period of time, like a few years, where one to take responsibility for one's recommendations, where one has to see one's recommendations through all action states and accumulate scar tissue for those mistakes and to pick oneself up off the ground and dust oneself off, one learns a fraction of what one can.

Coming in and making recommendations and not owning the results, not owning the implementation I think is a fraction of the value and a fraction of the opportunity to learn and get better.

You do get a broad cut at companies but it's very thin, it's like a picture of a banana, you might get a very accurate picture but it's only 2 dimensions, and without the experience of actually doing it you never get 3 dimensional, so you might have a lot of pictures on your walls, you can show it off to your friends, I've worked in bananas, I've worked in peaches, I've worked in grapes, but you never really taste it, that is what I think."

Perhaps that was an advice for a different time and for a specific audience (MIT graduates can expect favouritism). Cannot see how spending a few years developing a tiny slice of some UI at Apple 2021 would make your experience "three-dimensional".
Worked in consulting for 5 years mainly for large companies (> 20k employees) and it wasn't so nice. You'll end up solving problems that the digital natives solved 15 years ago. Moreover, half of the projects were staffed just because some C level read something about 'new technology x' and it was deemed to be cornerstone of the business. Of course our whole work was thrown into the trash the second we were out of the door. Lots of colleagues were in consulting just for their ego, they didn't care about the customer as much as being idolatrized by them. I switched to a swe role in a faang company and in half of the time I learned twice as much I did in consulting about the real engineering problems the industry is facing. Consulting is fine if you need an ego boost, otherwise go to a company doing serious engineering.
You don’t bring in a consultant to help you maintain the status quo, but to help you drive change.

I don't know what industries or companies this person has worked for as a consultant, but the ones I've worked for have absolutely used consultants to maintain the status quo. They bring in consultants because the full-time employees got reassigned to whatever new shiny project the senior managers have their eye on this week, but, in the meantime all this old legacy cruft still has to be maintained. Hence, consultants.

That's a different model. That's generally called staff augmentation, whereas generally the bigger consulting firms get pulled in to help the business deliver on the AI agenda (or whatever McKinsey's selling to clueless execs this year).
In my experience, it's also common that those big consultancies get those impossible projects because none of the internal teams what to work on them. And when they inevitably fail, they'll convince senior management to pivot to something more feasible.
A slightly more direct and IMO better name for this is "body leasing".
yes, the shiny new green field projects keeps many contractors in jobs as perminant people seem to hate working on older tech

migrations and decommisioning (large complex systems) also get lumped into the same pot that most perminant people seriously hate.

As someone who is rotating out of a consulting unit, I tend to agree. It is a very valuable experience, albeit one that may well lead to faster burnout.
I strongly agree with the title sentimment. Strongly!

But, I'll add this - work at a company first, full time, for as long as you find it rewarding. Maybe several years at least? ... the longer the better. Bonus for each promotion you receive, primarily b/c of different levels of responsibility and leadership that places you in.

I think that's key to getting the most out of independent consulting, for 2 reasons:

First, b/c fresh out of college or early in your career, you still don't know what you don't know. That makes learning w/out benefit of teammates, mentors, interactions with other teams (Customer Success, Sales, Marketing, etc.), quite dangerous. Without that wide array of awareness and guidance on a regular basis, it's easy to form bad habits. And bad habits attained during one's formative years can be long-term or hard to break.

And second, b/c every engineer needs to experience what it's like to maintain and improve a product for years on end. E.g. while I didn't recognize it at the time, I believe time I spent with a product for 3 of its generations proved to be one of the best learning environments I've had as a software engineer. That kind of timeline provides first-hand experience to the long-tail of product decision making. It provides long experiential lessons in best practices like automated testing, a structured dev process, engaging in customer feedback, team culture & cohesiveness, etc. And b/c I was with the same cohort of employees for so long, and saw how leadership could fluctuate, I also found it helped develop my intuition for effective leaders.

All said, I wouldn't have gotten as much out of consulting if I wasn't backed w/prior experience. From an engineering standpoint, I was able to hit the ground running since I already had years of experience developing software. Soft-skills gained during that same time translated directly and immediately to client relationships. I also felt fortunate and well prepared to handle longer-term needs and concerns from bigger clients (Fortune 100/500), some of which I still maintain relationships with.

This is very important. Experts in the field I look up to only became experts because they learned from the consequences of their choices. Sometimes these consequences don't materialise until 5, 10, 20 years later.
I was always under the impression that consultants were some of the best in their field (that can be hired, at least), and therefore going into it fresh out of college just isn't feasible, let alone a bad idea. Though it sounds like I might be wrong.

Edit: It's pretty funny how me and the article takes this differently

"I always found this to be a stressful and not particularly honest arrangement. I’m not an expert, I’m just a guy who reads the docs. I didn’t like having to project an air of competence that I didn’t always feel."

I've always taken a situation feeling stressful and dishonest as I sign I shouldn't be there, but if this is just how it is, maybe its not as bad as I thought

This is probably also down to your character. When I was working as a consultant for a big SaaS company I felt like the occupation really attracts a certain type of overly confident people who also like the attention. I'm 100% sure that everybody there had these blank spots in their knowledge which would potentially result in feeling stressed or dishonest when talking to the customer. Some people are just better selling their blank spots.
Yeh, could well be it. I'd like the be a consultant of course but I don't think Im the kind of person to be able to sell other people on my abilities before I sell myself on them. Credit where credits due to those who can though
Important thing to remember is that blank spots only last as long as you want them to!
I knew a few friends at college whose first jobs were at consulting firms. It seemed a bit of a misnomer since they had no practical experience.

I think sometimes people don't want to hire pragmatist consultants who will rock the boat too much and challenge sacred cows - even if they get things done, instead, they might prefer someone who organises meetings, Gantt charts and committees in order to make their hirers look good.

i've work for Avanade, many moons ago. i have couple years of coding experiences when i join. they put me into a project that basically doing phone support for one of Fortune 500.

they just hire as many people with CS degree or working background in tech then send them out to do "tech stuff" regardless if it fit their employee's background.

It's a bit too broad of a concept to be general about it. If you go into consulting straight out of uni then imho either:

a) Use a consulting company that heavily invests in it's people through internal learning and mentoring and support. I don't know any us companies like this but there has to be some I guess? In Europe Swedish Netlight operates like this, I had experience when I joined them a few years back but they employ people straight out of uni too. b) Do it yourself if you for some reason have a real niche super strength

Local tax structure matters too. Here in Sweden it's very beneficial to start your own consulting firm instead of being tax'ed to death, to the tune of earning twice what you would in a similar role if you're employed so it's a road many including myself take for that reason alone.

Different people mean different things by it, but often/increasingly/safest assumption is that someone just means 'temporary contract work'. Which you can absolutely do as a new graduate, since 'need some fixed term/scope work' doesn't necessarily mean 'need some senior expertise' - it just means cash-strapped, or sudden need to scale out that isn't expected (or known) to last.
Well, that's how you sell yourself to customers.

Typically you'd have a team of actual hotshots who start the project, sell the consulting company as competent, they draw up initial plans for whatever they are consulting on, and then you replace them with your usual kind of developers/BAs/whatever.

For example if your initial team had an architect with 15 years of experience, including 10 years in your specific domain, they get replaced someone with 5 years of experience, with 2 years in the domain.

I don't know about needing to be the "best", or an "expert", but I do believe a consultant should have a certain skill level, or set of skills, that provides some value to a team.

That's to say some consultants are very strong engineers, in the general sense; very capable in various roles. While others might possess a sufficient narrow skill set. E.g. maybe a front-end React dev, or data engineer assisting with integrating parts of a data pipeline, or a SQL consultant helping trouble shoot database performance issues. Other times, a team covers both bases (high degree of skill breadth, and depth), but lacks time to devote to all pressing issues.

So consultant relationships are formed for any number of reasons; they need not be an expert, necessarily.

I’ve been a consultant for about 15 years of my career. I like to make the distinction between “product developers” and “project developers”. It’s just a different mindset. For product developers, there is a benefit in spending more time to make sure your code is correct and optimized — mistakes cost more when you have a large user base (or are trying to attract one).

By contrast, project developers have no such incentives. Their goal is to finish development within a time box and meeting certain acceptance criteria. Often they’re building tools that are high value but low user counts, so mistakes / bugs are more tolerable and users can be trained on workarounds.

In my opinion, it’s largely a personality difference. I personally get bored working on the same thing for too long, so consulting works great for me. Some people hate the context switching of moving to a new project every few months or are just meticulous and slow developers, and they make great product developers. That’s not to say you shouldn’t try both sides of the fence, but you’ll usually land on the side that best fits your personality and working style.

Im pretty far up the food chain at a large consulting firm and i too get bored easily. Consulting fits my personality type because each project has a deadline ( rarely exceeding a year ) and then you either sell an extension or go look for something else to do.

There's also a lot of adrenaline involved in consulting too, some of my coworkers have left to go run a program somewhere in industry only to come back in a year or two because they were bored out of their minds and wanted back in the game.

Same; I’m at the point in my career where I’m not really involved in project delivery anymore so it’s more about sales and coaching new leaders. Your technical skills do eventually atrophy (at least mine have) but that just means you lean on your experts for that knowledge. But it’s probably a more natural growth path than most technical roles in industry — promotions at consulting companies are far easier to achieve if you put in the work.
Yes, unfortunately my “stint” has lasted 10 years. Now I’m having difficulty finding an engineering role.
(comment deleted)
Personally, I think consulting works well, like contracting works well, when you have a specific requirement that the Consultant/Contractor can meet.

We paid a lot of money for a software consultant once to produce an encryption library in .Net (packaging things, not inventing algorithms) and although he was clearly confident and reasonably competent, he wasn't able to produce it in 2 months. Once he left, I did it personally in 2 weeks on top of my CTO role.

If we had planned this better, we would have only recruited someone with experience with the specific issues we had around DI and .Net encryption and it might have gone a whole lot better.

Every developer should do a short stint (a year or two) outside development. It doesn’t matter whether support, professional services, consulting, marketing, or sales. They will get better appreciation for the product they build and support system surrounding those products that make or break the product.
For me, there is something magical about having retail work experience. That special blend of sales and customer service combined with consumers of minimal patience...

Understanding that good customer service necessitates sacrifice and compromise is at the core of it for me.

Happy customers are the most important thing for a business. Nothing else matters as long as you have strong advocates in your market.

In pursuit of happy customers, you have to be willing to discard or compromise on all of your technical principles. Certainly, dont let the customer cut themselves on a sharp edge without warning them first. But, if they absolutely insist on a certain path, just give it to them. They are paying you money, correct? Clear exceptions to this would be ethical violations (i.e. plaintext pw storage for a public-facing app), but that should really be the only line you wont consider crossing.

> I’m not talking about becoming one of those contractors who are billed out by their companies as “consultants” but are really just serial hired hands.

Even doing that is incredibly educational!

I spent about six years of my career at consulting firms like this. Both were a bit more than body shops, though - they sold themselves on their ability to actually deliver projects, and teach clients to do the same. I spent those years being parachuted into complex, dysfunctional, ill-equipped organisations, and trying to work out what in that environment worked, and how to Macgyver it together into a project which worked.

I don't want to do it ever again, though.

Lol. You drank that KoolAid

> parachuted into complex, dysfunctional, ill-equipped organisations, and trying to work out what in that environment worked, and how to Macgyver

parachuted, macgyver.

An overinflated sense of importance and worth is the only common characteristic of consultants.

0 chance you understood the business or tech r challenges before suggesting whatever tech du jour you were last exposed to as the True Answer© before disappearing out of sight before the duct tape starts to break away.

I never once suggested a technology as a solution to a problem. I spent a lot of time trying to convince clients that technology was not going to solve their problems.

Sounds like you would really benefit from spending some time doing consulting.