So if you’ve ever worked with me, or you’ve read enough of this blog, you’ve no doubt seen that I base many of my ideas on quotes and memes. Well, here’s a new one that I’ve started using a lot lately.
“Given enough constraints, the solution space goes to zero.”
What does this mean? Let’s walk through an example.
Let’s say someone is hiring you to design and build them a car. You start with the standard requirements elicitation exercises, asking open-ended behavior and user story questions.
“Where are you driving your car to? Are you trying to carry anything? Is there anyone with you? Is this for work or fun? Do you want to use gas stations or electrical charging stations?” And so on.
But lately, what I’ve noticed what happens is that people get excited (and also really picky) about what they want, and you end up with this:
“I want a car that goes really fast, and has great acceleration, and can carry me and my family and all my friends to the baseball game, and I can go shopping at Home Depot and buy everything I need to remodel my house in one trip, and also get my groceries and keep my frozen goods from defrosting on the drive home, and also I can drive on the beach and on the highway and up a mountain trail and through a muddy dirt road, and also carry my dogs, and I only need to stop at a gas station once every 39 days.”
Does this sound over the top? Well, let’s look at it from an IT perspective. You want to lower costs, reduce latency, increase availability, improve processing time, streamline operations and maintenance, allow future scalability and expandability, cover all legacy requirements and use cases, and be product/platform/system-agnostic! While these are all admirable and essential goals, let’s be pragmatic. How can you increase performance or availability without incurring any additional cost or doing any refactoring? Yes, sometimes there are innovative ways to do things, but sometimes you create a scenario that’s impossible to solve.
So what can you, as an engineering leader, do about this?
Discuss Agility With Your Customer
One of the beautiful things about Agile is that it applies to more than just software development; it can also apply to Business Agility. The concepts of minimum viable product (MVP) and gradual implementation of capabilities work for a business as well. When a customer asks for five things, and you know that you can, at the moment, only implement three, the answer to the other two is not “no.” It’s “not yet” or “not right now.” Educate your customer that modern technology is not about building something huge that gets installed and is now there forever. Instead, you can install a small thing that meets some of the requirements, and then grow and evolve that thing forever, continuously meeting new requirements in a reliable, tested way.
Discuss Prioritization With Your Customer
Project Management has a concept referred to as the Iron Triangle, which is the concept of “fast, cheap, good, pick two.” You need to work with your customer to help them understand compromise. Multiple competing requirements cannot be simultaneously implemented without appropriate time and cost commitments, so be upfront with them about pragmatic realities.
Discuss Innovation With Your Customer
We live in exciting times; there are many opportunities to meet business capabilities in ways never even dreamed of as short as 10 or 20 years ago. This rapid growth can be a challenge for many business leaders, who may have been in their roles for that amount of time or longer. As a technology leader, you now have this excellent chance to teach and educate your customers on different ways to meet their business needs that they have maybe no idea even exists. And now the challenge becomes not implementing the requirements but guiding your customer along a journey that they may be hesitant to take.
It can be frustrating when working with a customer who, by adding more and more requirements and constraints, is creating a scenario that is unsolvable or “driving the solution space to zero.” Instead of being frustrated, see this as an opportunity to solve your customer’s problems and lead them to success with agility and innovation.