---
type: blog-post
title: The Problem with the consultant model
description: This post explores the limitations of traditional consultancy in software development, advocating for integrated, long-term solutions over repetitive, short-term fixes. It highlights the need for strategic leadership and collaborative approaches to avoid complexity and enhance efficiency.
draft: false
date: 2024-03-10
updates:
  - time: 2024-03-10
    description: first iteration
tags:
  - "#blog"
---

I recently talked about Developer Experience in a few places and got a ton of
messages afterward – way more than usual. People were really resonating with one
particular point, so let's dive into it.

Here's what I heard from a consultant: “..., I’m stuck doing the same old stuff
again and again, even within the same client.” And from regular employees: “What
you showed was cool, but we’re just redoing the same things over and over.”

So, what was my talk about? I shared how we set up shared infrastructure at my
company. This means devs can just focus on the cool stuff, their business logic,
while we handle the boring bits like platform runtime and pipelines.

The main thing I picked up from the feedback: whether you’re a consultant or a
dev, you’re probably tired of setting up the same infrastructure every single
time. And it's tough to step back and think about a shared approach to fix this.

## Handy but Fleeting

Consultants are like a quick fix for companies that can afford them. They fill a
gap and then they’re out. It's easier than committing to a permanent hire, but
it's pricier in the short run. It's a bit like choosing cloud services –
convenient but can get expensive, especially if you get too hooked on them.

The trouble with consultants is they don’t really become part of the team. They
pop in, do their thing, and pop out. This means whatever they build can get lost
in translation when they leave, since they take their know-how with them. Even
with the best handover, it’s not the same as having them truly embedded in the
team.

## Bespoke, boutique, everywhere

Here’s the deal with the current setup: consultants come in with their cloud
expertise, set things up for the team, and then bounce. This isn’t bad in
itself, but it becomes a problem when every team ends up with their own custom
setup. It’s great at first, but later, the team struggles because they don’t
really know the ins and outs of what's been built.

Every team doing its own thing means no one’s thinking about how much easier
life could be with a shared system that everyone uses.

## Oil and Water

Consultancy firms aren’t really into the whole 'one-size-fits-all' solution
thing, and businesses usually want quick fixes, not big-picture solutions. This
leaves consultants and devs kinda stuck – they want to create better, easier
solutions but can't always make it happen.

- Consultants typically swoop in, fix a specific problem, and then peace out.
- Devs, on the other hand, are too busy delivering business value to really dive
  deep and evolve these solutions.

This often ends up piling on complexity for companies without really unlocking
the full benefits these solutions could offer.

From what I've seen, getting a consultancy to solve a problem is usually not a
great long-term move. I’ve mostly seen success when they’re brought in for extra
hands or for training, not as a standalone squad handling features.

## Delayed Gratification

The key? Be patient for that metaphorical cookie. It takes mature leadership
willing to tackle the big issues instead of just patching up small ones here and
there.

Companies should be willing to use consultants, but they need to be integrated
into the teams maintaining the solutions. I’m not a fan of outsourcing the whole
implementation to a consultancy, though. That can lead to a messy situation
where the company becomes too dependent on the consultancy. If you’re a dev or
leader and you see this starting to happen, shout it out to the higher-ups.
Otherwise, you're looking at a huge pile of technical debt and a knowledge gap
that's a nightmare to cross.

## Making it Work

I've seen a few places actually nail this, although it wasn’t without its
challenges. The common thread? They brought in a domain expert backed 100% by
management.

Tackling a problem that every team has their own approach to can cause a lot of
tension. Management needs to fully trust the domain expert to handle things
smoothly. If not, it just undermines the whole effort.

This puts a lot of pressure on the new team and the domain expert. They’ve got
to deliver something solid, which is a whole other story, but it's definitely
possible and worth the effort.

## The Payoff

If you get these shared problems sorted, it can massively speed up development.
I’ve been at places where setting up a production environment was a months-long
ordeal. At my current company? It's a 5-minute job, with next to no long term
maintenance requirements.

Compare months of work for, say, three developers to a quick setup by two devs.
That's a huge saving. Sure, you might think it’s nuts that setting up for
production could take that long, but it's a different ball game at traditional
companies with their own data centers and rules compared to just using AWS on
the side.

# Wrapping Up

I was struck by the feedback from consultants – they were just as keen to
improve and evolve their solutions as the devs. They’re tired of the endless
cycle of temporary fixes.

In my view, the current consultancy model isn’t cutting it. The best results
I’ve seen are when consultants are part of the team, not just passing visitors.
The goals of the consultants and the company are often too different, which is
why it often ends in frustration.

Hopefully, this post gives you something to think about. I’m already seeing some
companies tackling this issue head-on. Others should take note – unless they
want to keep dealing with the same old problems.
