Skip to content

Blog

Ensuring Long-Term Success: Beyond the Software Consulting Hand-Off

03.15.2024 | Test-Driven Development Software Consulting legacy modernization | Travis Pennetti
Ensuring Long-Term Success: Beyond the Software Consulting Hand-Off

The "consulting hand-off" of software projects is notorious - and for good reason. There are many horror stories from major consulting companies leaving their customers with a barely functioning product and a hefty invoice (link). The value of choosing the right partner from the beginning cannot be understated because a good partner will always leave their client in a better place. Whether an engagement is a two-hour meeting or a two-year cloud migration, there are three key elements to any collaboration with a good partner:

  1. The client’s long-term success is part of every decision.
  2. Context is continuously shared with the client.
  3. Any dependence on consultants has an expiration date.

Long-Term Success: Building for the client

A good partner engages with a client because they want them to succeed long term, beyond the end of a contract. Long-term success is considered in every discussion, even before project kick-off, by incorporating sustainability as part of a solution. Sometimes, this means introducing the client to a new technology, and sometimes, it means leading them away.

Choosing a bespoke tech stack in a new programming language, spinning up six microservices for a team of four engineers, and taking an “all or nothing” approach to selecting features for an MVP are just a few ways I’ve seen consulting groups set their clients up for failure. At an extreme level, this can lead to an unsustainable, parasitic relationship between consultants and clients where both groups are required for long-term “success” - ultimately, both lose.

A successful engagement is one where the client continues to be successful after the engagement. 

During product discovery, the client’s budget, scale, talent, and growth are key components to incorporate into a solution. For example, a client with a senior engineering team is a good fit for more complex solutions. A client with a small budget will benefit from careful scoping and a clear roadmap for where to go in the future, whether consultants are included or not. Once a direction is chosen, constant feedback and collaboration will ensure the client is brought along on the product development journey and not left in the dark. By building products with clients, consultants are able to build confidence in project transition that lasts long after they’ve rolled off, but what does it mean to build with them?

Building with the client

Project context is a major element of a hand-off and should be shared continuously from day one rather than dumped at the end of an engagement. To build with clients is to actively include them throughout the process because a successful transition starts before a single line of code is written. Regular demos of working software stakeholder progress updates and pair programming with client developers are a few ways to continuously share context and gather client feedback.

Long and tedious knowledge transfer (KT) or “brain dump” sessions are an indicator of failure to include your client. Even when these sessions are well organized and detailed, the underlying assumption is that months (or years!) of context can be crammed at the last minute. Additionally, knowledge transfers often focus on the present and miss the all-important historical context that answers the question, “How did we get here?”

The most important context for a product team is why the product is being built and how the team arrived at the current solution. 

Without this context, a team is doomed to go in the wrong direction or, worse, backward. A cautionary tale, “The Five Monkeys,” illustrates this perfectly by stating the importance of understanding the why behind behaviors and decisions:

The Five Monkeys Experiment is a famous study about behavior and learning. In the experiment, five monkeys were put in a cage, and bananas were hung from the ceiling. When a monkey tried to grab the bananas, all the monkeys were sprayed with cold water. Soon, the monkeys learned not to reach for the bananas to avoid the cold water spray. Even when new monkeys were introduced one by one, and the water spray was no longer used, the monkeys continued to prevent each other from reaching for the bananas because of the learned behavior, even though they didn't know why.

Understanding the reasoning behind decisions - the why - is crucial to any product team's long-term success. This applies not just to the initial development phase but to the product's ongoing evolution. Teams can avoid the trap of "The Five Monkeys" by ensuring the product's direction is based on informed decisions from context rather than unchallenged assumptions.

Building without dependency

If you value your clients, then you don’t want them to become dependent on you. A good partner helps their clients be successful in the long term, including a plan for when they’re gone. A great partner seeks to “deprecate” themselves to remove any dependency. 

In programming, "deprecate" means to mark code as no longer recommended for use. This is usually because a newer, preferred alternative has been introduced. Similarly, a successful consulting engagement should aim to mark consultants as “deprecated” because the future shouldn’t depend on their being part of the team. It’s the software consulting equivalent of the famous line:

“If you love someone, let them go…”

A consulting team “deprecating” themselves could look like a gradual roll-off or helping the client to write job descriptions, interview, and hire replacements. This is another consideration that should be discussed long before the end of an engagement to avoid awkward goodbyes or, worse, the orphaned project. A good partner strives for a “warm goodbye” - a friendly and mutual close to an engagement. Referred clients and “boomerang” clients (those who return for more engagements) are good indicators of a healthy partnership. Co-dependency is not a partnership, and the longer they continue, the harder they are to break apart.

Are your partners good partners?

In conclusion, the relationship between a client and a software consultant has a profound impact on the long-term success of a project. A good partner is committed to their client's success beyond the end of the contract, continuously shares project context, and aims to remove any dependency on them. They build for the client, build with the client, and work towards a future where the client can succeed without them. If these elements are not present in your partnership, it may be time to reassess and ensure that your partners are indeed good partners, truly invested in your long-term success.

If your partners are not building for you, not building with you, or fostering dependence, then how can you be sure they’re invested in your long-term success?

Share