In the previous chapter, we talked about expectations. Both from and of customer’s, engineering and the Plan itself. In this chapter we’re going to talk about predictions, the things we know and expect to happen. If we know them, we can better plan for them. If that is so, actively predicting should be a part of Planning.
Already a Prophet
We’ve already learned of some predictions that we can do. The Wheel of Change predicts that Change would entail Feedback and would most likely entail another Change. We leveraged these predictions into Planning for Feedback and Planning for Change. Predictions make us better planners, because we know what to plan towards.
We can say that we’ve always been predicting, we just haven’t named it that. A PM predicts that a customer would need something, and creates a User Story for it. Timing, value and effort are uncertain details. An engineer predicts that an application/system/team would need something, and creates a Task for it. Timing, value and effort are uncertain details. Some bugs are also predictable, because change has the potential to introduce Instability. We expect them to happen, we just don’t know their details yet. They are uncertain. We’ll talk about removing uncertainty in the next chapter.
When it comes to long term predictions, we’ve learned of those as well. In the series Wasteful Applicative Evolution we became familiar with technical processes that need to be attended to. Processes which turn an application to a Monolith, a Bundle, a Legacy. And of refactors. They are eventual, thus no longer unpredictable. We also learned how to uncover future problems that would eventually happen, thus no longer unpredictable. Maybe these are the things we call maintenance and leave a buffer for.
So, why is it important and beneficial to be predictable? How predictions affect Planning?
Don’t Act Surprised
The act or predicting is removing the unpredictable state of an event or a need. All that we have learned so far was to minimize the unpredictable. Do notice that the opposite of unpredictable is predictable, but predictable is not the complementary of unpredictable. It’s not only a word play, but a way to overcome our binary thinking minds.
It is hard to define what is “predictable” because there is a range to it. This is why we question ourselves with “how predictable was this?”. It is easier to define what is “unpredictable” – if it surprises you. If we put the right effort into predicting, “we’d see that coming”. And we should only be surprised by what is truly unpredictable. If we want to visualize the right effort with The Middle Way:
So, we better go and look for sources of surprises that we only think of as truly unpredictable. One source could be “the business” itself. For example, If we are working for Amazon, we can not be surprised that Black Friday occurs annually. If we are working for Salesforce, we can not be surprised that salaries are paid at the end of month.
Another source could be communicating. Actively communicate with the sales team, to learn of their sales pipeline. We could predict an on-boarding of a new enterprise customer, and plan for it instead of being surprised by it. Actively communicate with the marketing team. There is always someone who sets a date for big marketing campaigns, which ends up with a surge in traffic that surprises us. Trace what surprises you, find your sources.
Surprises cause interruptions to the Plan and to the engineers. Predicting decreases the odds and frequency of those, which increases the odds of a Plan going smoothly.
Predictions are not a source used to avoid fault, it is a source to avoid blame. It’s saying more than just “It’s in the backlog”. Predictions are “We’ve thought it over, understood the risks, estimations and values, and we have all consciously decided not to put it on the Plan for now. We are not surprised that it has eventually happened”.
That’s responsibility, standing tall with a prediction behind you and having everyone’s back. Because once predicted, we actively choose whether to act or not, with good reason out of conditions and necessity. That’s how things work. Afterwards it would be impossible to argue it was unpreventable.
Real time incidents are truly unpredictable, but we need to properly define it first. These are crashes caused by events that could have been prevented, if only we had awareness they should be monitored and how. It might be a hard one to follow, so let’s walk through it with an example.
- For the first time ever our web server crashes and we have no idea why. That was truly unpredictable.
- We logged in and found out that the hard drive was full. Before doing so, we couldn’t perceive that this could happen. That is why it was truly unpredictable.
- We’ve added an agent that would warn us when it is 95% full. And still the web server crashed because we were incorrectly monitoring it, we set the percentage level too high. That’s why it was truly unpredictable.
- We’ll then set it to 75% and would get the right alarm, enough time before the crash to empty the hard drive. Now it is predictable.
Yes, it requires experience and expertise to know so and do so. Ignoring it would only cause more surprises, because predictions and monitoring are tightly coupled. Both are essential to Planning, and we’d see that later in the series.
A sudden change in priorities (singular) is somewhat also truly unpredictable. But sudden changes (plural) in priorities are not unpredictable. Switching to Kanban could be of help in those cases. We sometimes go through chaotic times. There are some chaotic companies. It requires effort to bring certainty to chaos. Luckily, the next chapter probably has something to do with it as it is titled Uncertainties.