There is a number of challenges that many/most businesses continually encounter as they’re maintaining and growing their operations. We will discuss some of those challenges now (in no particular order).
How long it's going to take?
Every business faces, on a daily basis, some kind of a need to make a change, be it by introducing new capabilities, or by altering and modifying the existing capabilities, or by having to retire/decommission one or more of its capabilities. Whenever that happens, leadership wants to know how long will it take to accomplish the intended change.
While the question is simple and makes sense, the answers are often not forthcoming. And even if the answers are forthcoming, the estimates/promises are more often than not, incorrect. And quite often, the answers are alarmingly incorrect.
Why is it so difficult to provide an answer to the “how long it’s going to take” question? The reason is simple: teams are asked to provide an answer at the time when their knowledge of the issue that needs to be solved is at the all time low. In other words, there will never be the time when their ignorance about the details needed to get it done will be larger. The fact remains that as soon as they start working on solving the issue, their knowledge of the important details will start increasing. And of course, the more knowledge about important details the team has, the easier it gets for them to provide more accurate answer to the “how long it’s going to take” question.
The challenge therefore is — can businesses allow the teams to start working on solving the issue before they learn how long it’s going to take? If they can, meaning if businesses are prepared to amortize the inevitable risk of starting the work on something that is as of yet of unknown scope and duration, then they’ll stand a better chance of learning how long it’s going to take.
However, we could argue that by that time, the information pertaining to how long it’s going to take is going to be much less valuable to the business. Even to the extent of being worthless.
What's needed for success?
Similar to the “how long it’s going to take” question, “what’s needed for success” question also hinges on the knowledge of as many important details as possible. At the very outset, teams know the least about the issue, about the challenge. And because no one has a crystal ball, their guess is as good as anyone else’s.
And again, unless the team starts working on solving the issue, they won’t be in the position to know what is needed for success. They may second guess it, or daydream about it, but it’s really nothing more than mere fool’s gold. Anyone who’s been long enough in the software development field knows that as we work, there are so many previously unanticipated/unknown important details that just keep emerging from the work. Hoping to be able to enlist those details before the work commences is akin to hoping to win a lottery.
What efforts are not needed (and therefore wasteful)?
Again, this is the question that requires a crystal ball to be able to answer it correctly. Who knows what efforts will not be needed once we start working? Who knows what efforts will turn out to be wasteful, somewhere midway through the journey? No one can tell.
That’s not to say that there aren’t people who claim and insist that they could predict those things with amazing accuracy. But 999 times out of 1,000 those predictions turn out to be mere vein bragging. The odds are never in favour of such bravado claims.
How what's needed for success will change over time?
This question is even more difficult to tackle than the “what efforts are not needed (and therefore wasteful)”. The ability to predict the future is not something that scientific method could help us with. Visiting a fortune teller is another possible venue, but engineers remain highly skeptical of that approach.
It is a fact of life that everything changes over time. There’s no doubt about it. But what no one knows is how will something change in the future. We have no way of knowing that. Businesses that are hoping that there may be a possibility to know that, and that knowledge will therefore protect them from unnecessary risk, are playing a very naive game. They might as well liquidate all their assets and make a trip to Las Vegas casinos.
Whether their efforts will be ultimately successful
Another daydreaming excursion. Yes, a crystal ball will come in handy, but all businesses are currently in short supply of crystal balls.
There is no other way to find an answer to that question but to work, and see how far the work takes us.
Speed of success seems to be an important aspect to be mindful of
The sooner we start to work, the sooner will we learn whether it makes sense to continue our journey, or abandon the ship. Business acumen is relying not only on the ability to pick our battles wisely, but also on our readiness to cut our losses if we notice things going south and our venture turning into a Titanic.
The sooner we discover those details, the better.
Teams find out what worked or what didn't — but never learn why
Is it really true that teams, after finding out what worked or what didn’t work, never learn why? I honestly doubt it. I think as we’re working, and discovering previously unknown details, we learn why something works and is worth pursuing and why something doesn’t work and is worth abandoning.
However, just because teams learn that, doesn’t mean that they can use that knowledge for future project. Why? Because every situation brings along its own challenges, and it seems impossible to generalize.
Conclusion
It does seem impossible to provide predictable, deterministic roadmaps when it comes to crafting systems that will automate some portions of business operations. There are just too many loose, moving parts that keep constantly changing. Even if we learn incredible amount of details that are pertaining to some domain, it does not mean that next time we are tackling similar domains, we can safely generalize and pretend as if it’s going to be the same as the prior effort/scope. No, sorry, we really cannot know that.
Being that as it may, how to move forward? There is only one way forward — abandon Big Upfront Plans and Big Upfront Designs. Give up on striving to make the most important decisions at the time when our ignorance is at its peak. Instead, adopt the permaculture by succession approach. Start with a simple, crude design, the one that everyone agrees is going to be soon abandoned in favour of a more elaborate one. Do a series of those ‘ever increasing in sophistication’ designs until you reach the optimal point.
Acknowledgement
This writeup was inspired by my friend Alan Albert’s comments on my presentation on the agile process. All headline questions I posed here are the questions I repeated verbatim from Alan’s feedback. Many thanks to Alan for providing his valuable insights into this important investigation.