Most Software Consultants Aren't Consulting

"Consulting" in software development is often aspirational, akin to software engineering being a somewhat watered-down form of engineering, as compared to the classical disciplines it borrows its name from. It's just as easy to conflate craftsmanship with engineering, as it is to conflate contracting with consulting.

Most people in this business are software developers turned consultants—they are trained as builders. It's hard for them to shake off the mindset and behavior of skilled laborers with better day rates, whereas a traditional consultant's job is to diagnose, to advise, to challenge, and to be a strategic partner.

If all you do is solve problems the client tells you about, you're not a consultant. Now there is nothing wrong with working on the conveyor belt of Jira tickets, and this is a part of most projects, but there is a whole world of opportunity out there to have a much broader impact and more rewarding experience-if we just welcome a reframe.

It's not about what you can deliver, it's about what creates value for the client

You're not just paid to deliver code. You're paid to deliver some change, some outcome that the client values. Clients for the most part don't care about how clever you are, or how fancy your solution is. They care about outcomes.

Many software consultants operate with an upside-down perspective. They attribute value to abstract artifacts of their world, things like the tools they use, how many releases are done or even obtuse concepts like "story points delivered". These are hopefully tied to the outcomes that the client actually cares about, but the disconnect is a distraction and can lead to "busyness" with little value-add.

As you internalize your client's perspective you'll (both!) be much more poised for success. You'll also identify many pitfalls in how things are usually done in the world of software development consulting.

I'll attempt to identify some of them, below.

Common Pitfalls of Software Consulting

1. Measuring success in terms of code, instead of outcomes

It's common to report on such things as test coverage, number and severity of bugs / defects, build times, or features delivered. While these may have their place, they are examples of measuring output, not outcomes.

Outcomes would be things such as trends on user churn, feature adoption, time from user issue raised to closed, time taken to perform certain task, marketplace ratings, process streamlining (reducing number of tools needed), etc.

2. Thinking in tools, not levers

Focussing on tools and tech stacks at the expense of deeply understanding the problem at hand, and the broader options available to address it.

3. Being reactive instead of proactive

Cue the conveyor belt analogy again. Instead, think strategically and provide advice! Shape the direction of work.

4. Lack of business fluency

Your speak in tech terms, not business value. Adopt the language of your client.

5. Undervaluing persuasion

It's your responsibility to be a figure of authority for your client. Don't mistake access for influence.

6. Avoiding conflict to "be easy to work with"

Think critically and challenge bad ideas. Otherwise, the client will always be in the driver seat.

Weren't your hired for your expertise?

7. Solving the wrong problem really well

We've all been there, haven't we?

8. Confusing tech debt with value debt

Tech debt is only worth addressing in the service of measurable business outcomes.

9. Busyness over leverage

Equating time spent coding with value delivered. They are often completely disconnected.

10. Taking pride in complexity

In other words, over engineering. It's usually a symptom that somewhere along the way, we lost focus on the outcomes.

11. Getting sucked into the system

Or colloquially "being absorbed by the borg". Endless meetings to attend, reports to read, dashboards to produce.

Take a step back and question the structure.

12. Over-automation

Throwing code at everything. Some times the best solution is not a technical one.

Tree-lined road with lush green canopy in the Azores
Azores, 2017

Effective consultancy requires interpersonal traits and interests that are often missing or repressed in those of us who feel most confortable coding all day. It is however something completely worthwhile investing in, with benefits that are long lasting and transferable to other areas of our lives.

It's mostly an exercise in constant re-framing, and having the discipline to take a step back from the nitty gritty to get a proper feeling for the impact of what we're working, where value is actually being added, and the interests of those involved in it. So get to it!