Every engineer should do a stint in consulting
cloudirregular.substack.com
cloudirregular.substack.com
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.
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.
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.*
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.
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 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.
There's a saying here in Russia:
Can't code? Consult. Can't consult? Manage.
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.
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 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)
[1] I live in the Amsterdam area.
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/
>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.
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).
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.
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!
- 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.
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:
TCP Solutions:
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 some specialized governmental bureaucratic expertise that TomTom wasn't good at), so Segment BV handled applying for the 30% ruling, my residence permit, did my taxes, and other stuff like that. TomTom paid them directly, they took their fee from that, and payed me the rest. When TomTom finally hired me, the 30% ruling was smoothly transferred from Segment to TomTom, with their help.
But then I left TomTom after a while, because I got an offer I couldn't refuse to work from home as a contractor for a US startup on an exciting project for more than TomTom was paying me, but I still wanted to stay in Amsterdam and benefit from the 30% ruling, so I still needed to be employed full time by a Dutch company. And I also wanted to work for another old client at the same time, who wanted me to work on some code I'd written for them years ago (and still am maintaining).
So I found another management company in Amsterdam (TCP Solutions) like the one TomTom used to hire me, then they hired me and wrote up contracts with my new and old clients, transferred and handled the 30% ruling, and I worked directly for TCP as a full time salaried employee (and indirectly for several other clients) for many years, until the 30% ruling finally expired (after a decade, but it's shorter now).
TCP Solutions required me to have one "main" client that payed me at least a certain amount of money regularly, and then I could have additional side contracts on top of that, so the salary varied over time depending on the number of contracts and the hours I worked. They did charge a hefty fee for drawing up each contract, though. But the 30% ruling made it worth it.
There's nothing shady or sneaky about the arrangement -- just the opposite: they're a "compliance" service that makes sure I follow all the Dutch rules and regulations and pay my taxes. They operate in the sector of "organizational consultancy firms":
https://drimble.nl/bedrijf/hilversum/6550436/segment-bv.html
>The activities of Segment BV (among others) take place in the sector: Organizational consultancy firms. The main category in the SBI subdivision that the Chamber of Commerce uses is: 'Consultancy, research and other specialist business services' and in this case is further subdivided into: 'Holdings (not financial), group services within own group and management advice', subcategory 'Consultancy in the field of management and business operations'.
But at the point the 30% ruling expired after 10 years, I no longer needed to be employed full time by a Dutch company to qualify, so it made a lot more sense to start a Dutch Eenmanszaak (sole proprietorship) and actually work as a freelancer instead of a full time employee. Now I can deduct my business expenses, which I couldn't do as a full time employee, and I can draw up my own contracts, and have a lot more freedom and less overhead.
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’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.
Yes, I did mean contractor.
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.
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.
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.
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.
Consulting is not for everyone and like everything you get out what you put in.
Why I went into consulting - I was working hard as ever, it’s my nature and I love what I do. - My pay was average - My projects looked amazing but in reality sucked and were driven by people in ivory towers
My concerns with consulting - we had a newborn and worried about health insurance. In the US this is highly coupled with your job
The outcome - I am still busy as ever and love it. - I am a seasoned 14 year dev with a lot to offer. - health insurance because of Obama care is amazing. We pay about $150 more per month but it’s actually better health insurance. - here is the kicker, last month I made 50k profit. Consulting is extremely lucrative and makes me feel like I was wasting my time as an employee before.
Will I go back to working for someone? Oh yeah in a heartbeat. But I must be valued according and can enrich the company as I do now with consulting for my clients.
What’s sucks about consulting - billing / payroll for other devs that help me as 1099 when needed.
Take away - consult for the right reasons. You will learn a lot but you can learn a lot as an employee as well. Let it happen naturally. Don’t force yourself to consult. You may be a completely happy employee and don’t let anyone tell you different and anyone worth being a human won’t discriminate against you for it.
I just dont think a stint will get you what you need. I guess it depends what is meant by a stint. 6 months - 1 year? I dont think its enough. Your just getting started.
If you go into consulting for the experience my suggestion is plan on a 2 - 3 year stay with a strong start (clients paying you money before you leave your 9to5)
Would you say one can learn similar things if they work in an early stage startup?
Did you pull that kind of income over a year or longer?
How long did it take you to get there?
Were there major jumps/realizations along the way, or was it linear-ish growth over time?
(My own situ: started freelance consulting right before having two kids in a pandemic, and so have done near-zero bizdev & make about what a non-FAANG W2 employee would, if not a little less. For other readers--this has still been worthwhile, I've learned a _ton_ and am pressing on to give this a shot while less personally compromised.)
What is an example of something you learned about senior management?
It's not "near trivial" if few get there.
I've done consulting myself and I've networked with a lot of consultants. I see a lot of people moving back to full-time jobs because they pay more for less stress a lot of the time. Some people thrive in consulting positions, but many quickly realize that normal jobs are a pretty sweet deal in 2021.
A lot of consultants like to point to their high water mark compensation and imply that it's their normal rate. In reality, consulting work can be extremely hit or miss. Making $300K one year doesn't mean you're going to make $300K every year.
Consulting can be a good fit for people who have strong diplomatic, communication, self-marketing, and business skills, but it's not an easy button $300K/year job for someone who just likes to write code.
If you find that job, it’s a keeper. I find consulting to be less stressful than employment. Not worried about being online during certain hours or the office politics, etc. Also, my code still has to work and be pushed to production. If anything the more levels of abstraction between me and the client just produces more stress and slows down the process.
Pay me 1% of the money, I will save your Company. Nobody ever took me on this offer... :-))
The FACT is that you likely have a giant blindspot merely working "for the man" like you do that ultimately and adversely affects the quality of your work. Or minimally limits how far you can (or SHOULD) ever advance without reaching your Peter Principle or Dunning-Kruger limits!
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.
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.
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.
Fully agree. It was thrilling. I also did the exact same thing.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
HR is there for the company.
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.
One thing that I really like about it is it's not just coding coding coding (I do this too), but you get a chance to really break down the domain of a company and work with someone on how to solve bigger picture problems. It's not just empty bs recommendations either, it's things that get directly implemented and in my case often times I got my hands dirty with the implementation. If not doing the implementation, at least doing the research while ironing out and documenting a step by step plan for someone to do it.
I would say I spend about 60% of my time coding and 40% of my time chatting with developers / CTOs, getting paid to do R&D and write documentation. For the coding bits it's everything from building web apps to doing ops related things like provisioning infrastructure and making it easier for other developers to release code changes.
With that said, for the first time in my life I took a W2 job this week. I'm only bringing that up because if you decide you do want to transition into a W2 job later often times you may get fast tracked through any hiring hoops if one of your contract clients wants to hire you full time. In my case I didn't have to do an interview because I had worked with them for 10-30 hours a month for the last 3 years. It was an instant hire where all I had to do was let them know a start date.
In a bunch of longer term contracts I was involved with there were always hints or offers to join them full time. Up until recently I never had an urge to pick one but this role is interesting and you only live once so I decided to try what life is like on the other side of the fence.
I did a very brief stint doing work that was similar to consulting, and I think this is the biggest net gain for me. I really developed skill at identifying the actual problems and solutions by understanding the domain and not simply building what a customer said they wanted built.
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.
migrations and decommisioning (large complex systems) also get lumped into the same pot that most perminant people seriously hate.
Thats not to say that a career product person will immediately be a good engineer. You need to be good at writing software. But if you get to a point in your career where you think your learning has kind of leveled out, go do a tour in product.
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.
> 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.
Sounds like you would really benefit from spending some time doing consulting.
I'm never going to attempt it again. It's just not worth the frustration.
"The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully"
https://www.amazon.com/Secrets-Consulting-Giving-Getting-Suc...
"More Secrets of Consulting: The Consultant's Tool Kit"
"https://www.amazon.com/More-Secrets-Consulting-Consultants-T..."
These books kept my sanity and showed me the Universe twisted sense, twisted...But nonetheless a sense.
> 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.
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.
If you can’t imagine how someone feels (or why), how can you feel sorry for them?
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 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.
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?
Though I do see that only 1/6 of my interview panel is still there 4 years later?
Out of curiosity, what would you have been doing under McKinsey?
I'm curious to understand this phrase, and how the interview process helped.
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").
You efforts have NO INTRINSIC VALUE without that customer being willing to pay money for the results!!
That is a reality and universal truth of economics - NOTHING has economic value UNTIL it is transacted for exchanged value. It is ONLY at that moment that the value is known. And even then the certainty of that value decays exponentially with time. After a few time constants/half lives, the value is again indeterminant because you don't know for sure if somone will commit to paying for your value again. It's always "What have you done lately?" combined with "What does the 'market' (i.e. any other individual or group of humans) think they are willing to commit to exchanging?" Commitment = Value.
This is literally how bourses/exchanges work: they do nothing more than record what two parties have been willing to commit to in terms of item and price for the item, on an instantaneous and average basis over time. That's the low-level algorithm of all bourses (e.g. stock exchanges, bond exchanges, derivative exchanges, etc. - it's all ultimately negations between parties and explicit commitments to those trades). There is NOTHING "magical" about it - they are not mystical oracles of truth.
But learning this directly is always more effective than being "told" what a thing is or how things work. Direct experience will responsibility (however short) will make you a better person and more aware of your own specialty. It also helps you know how to look out for yourself and when to say "no" and when to "walk away".
A: A consultant knows the difference.
That said, at other points in my career I have been totally freelance, worked on a product team, and worked in an agency, and I would also say that each of those is hugely valuable and teaches you unique things. If I was advising a young and hungry tech worker, I would suggest they get a year or two of experience doing all four if they can.
A business doesn't hire a consultant to write code -- they hire developers on contract to do that. They hire consultants to figure if/when/where/how to write the code, and to navigate their business politics/procedures/processes/compliance/etc. Heck, I've completed several consulting contracts where I didn't write a single line of code -- they ended up being 100% strategy, design, planning, etc.
To do consulting successfully, you have to be in a mindset about solving business problems, regardless of what the resulting work looks like. For someone who wants to solve engineering problems, they might be highly disappointed (or ill-prepared) with what a consulting job entails.
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.
How do I do this?
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.
There's the hurdle; only a small percentage of engineers will consider themselves good enough to fit that role. And of those, another percentage has the social skills to move to a consultancy role.
Don't get me wrong; I've done the "hired hand" version of consultancy, thankfully for a better company than the ones that can supply a hundred hands overnight, but still. I found it a valuable experience because of the higher level of expertise, the learning opportunities, and the variation in assignments.
I consider it time wasted. It made me a worse engineer. I was pressured to set clients up with unfinished bullshit products. I was pressured to set clients up with bullshit they didn't need. I was pressured to build solutions that weren't what the client wanted or needed.
I'm sure there exists a happy ideal version of software consulting that could teach you all kinds of valuable lessons. My experience was very far from that happy ideal.
I ended up filling in on project management type work which certainly is better than getting laid off, but I did not enjoy it much (it was good resume building experience at least!)
One good thing about being a consultant is that it is pretty easy to quit and move on! People are constantly rotating in and out of projects, so it isn't as personal as working on a small close-knit team!
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.
I had a ton of knowledge gaps about enterprise, but they were relatively easy to fill in.
Being an indie outdoor cat and being a big-5 employee are very different as well.
There are also many consultants on multi-year engagements that already have this experience.
a) You fail at the business side, can't find clients, your finances suffer, after all the optimism and pleasure at owning your own time, you start looking for a job within a year or so.
b) You succeed at the business side, get more clients than you can handle, start sub-contracting, start having to manage your sub-contractors, decide the margins would be better if you had employees, grow into a "boutique consultancy", stop coding mostly and become a full-time salesman and manager, but now with other people who depend on you for their livelihoods.
c) You succeed just enough to sustain yourself, don't seek new clients or attempt to grow beyond a 1-person shop, outsource to subs when you need to for a little extra juice but otherwise shy away from taking on too much work, take the work that comes your way, subcontract for some of the bigger fish who need your special skills, and accept the 'feast or famine' reality of income, enjoy your freedom and time off between clients, but not entirely because you're always worried about where your next check is going to come from or "what if the work dried up?", but ultimately get trapped in the endless cycle of making pretty good money and "enjoying the variety" as you grow older, start a family, etc, and can't afford to take the hit trying something entrepreneurial any more since your kids need to go to college, until finally the burnout is so intense you hate consulting and the fact that your livelihood is tied to your labor, hoping that you've put enough away to at least retire early and maybe then you'll work on something you actually want to.
There is a fourth approach (or path, if you will) which is to work for an established consultancy as per the article. This path itself has three typical outcomes:
1) You are a natural creature of the corporate consulting world, you prosper in the one true measure of value -- selling work, you ascend to director-level or something where you make very good money, if you're entrepreneurial you maybe can take your clients with you to buy into a partner role at another consultancy. Maybe you see this life as a good life that you're well-suited to.
2) You think success at an established consultancy is based on technical merit, you're gradually disabused of this idea and suffer burnout, if you haven't been there long, you maybe jump to the product world or (gasp!) start a startup solving some problem you solved for a client of the consultancy. Congrats, now you have a startup and all the attendant cares. There is a different list for that path.
3) You burn out of working in corporate but think "hey, I'm a pretty good consultant and what else am I gonna do?", you decide to go independent, see outcomes a, b, c above.
I would say that getting to work on a "high impact" project is not all that common. It does depend on how you define "high impact"
Most of the projects I got on were not green field, it was adding functionality to existing business application, written in legacy ways and legacy languages.
I did a lot of figurering out why some obscure program does not work anymore or why it is suddenly so slow.
Quite a lot of enterprises does hire in consultants to do sht work so that their internal devs dont have to do it. Of course, some do not have a dev team at all.
Some people you end up working with in mid sized to large companies are hostile to consultants being hired in. Had that problem a few times.
You do learn how to accommodate unreasonable demands, passive aggressive behavior, how to communicate bad news, lead a group, analyze an existing code base fast.
You can fast end up doing a lot of cover your ass, both from a client and from the consultancy company you work with. All the ones I have worked for were cutthroat in some ways. Some more than others.
Your billable hours are a huge factor. One coworker of mine was billing upwards of 90h to 150h a week, he got a lot of bonuses and perks. This was not physically possible, but since he had more than one client he billed full it me on several at the same time.
IT consultancies are usually highly competitive in all ways.
They are also only interested in what you have done this quarter and will sack you if that is not good enough. or have a pay stricture so you dont have a dime if you are not billig at least full time.
Several places I worked 40h a week was the bare minimum. Tolerated for a while, but you would get notices about needing to apply yourself more, to get in the game. You are expected to learn all new things in your field on your own time and dime.
In some places you have to keep X number of certifications current. You study on your own time but usually the exams are paid for, at least the first try. Failure to keep up is a grave problem.
The sales team rules. You have to learn how to kiss their assess and become friends. They will have a lot of pull when it comes to who will be put on a new sale. You want them to think of you as a valuable asset. or you always get the sh*t jobs.
I had perhaps 4 - 5 big fun projects. One was to write an ERP system from scratch (Yes I heavily advised the client to buy some existing product but the client was adamant that the business was so unique (it was not) that it had to have its own system.
The one big thing they had was a multi-dimensional pricing model from hell. The founder of the company must have spent years coming up with it. All sorts of inputs, all sorts of options discounts, scale, employees, nation, state, order size, Previous orders, season, sports events, stock prices, number and types of cars sold in the last month, and a lot more.
Working on that, and getting it to work was probably one of my best achievements. My team was superb.
In the worlds I've worked in it would help a lot for every engineer to do a stint at a customer site. The bigger places I've worked for could have easily placed people with a customer for a while.
It's remarkable how much stuff is designed by people who don't use it for a living, will never use it for a living.