Rushed Designs For the Wrong Reasons

As a follow-up to my previous post, I will discuss the opposite of a well thought out design: the rushed design for the wrong reasons. This phenomenon takes place when a bug or product requirement is discovered and resolved asap through a system design change. The change may be the only way out of a self inflicted wound, or may be a last minute requirement change from a customer. I have seen both. However, more often than not, the fix will bring its own slew of problems. Eventually, the fix will be removed after great expense and replaced with the more correct solution.

In a project I was working on, a customer asked our radio team to introduce hysteresis on the reporting of a cell level system characteristic. On a handoff from one cell to another, a change in this parameter is reported to the application. My team fought the idea because the handoff operation itself has its own hysteresis mechanism. It was the last requirement before launch and my company complied. The impact was:

  1. The hysteresis introduced delay between the knowledge at the radio stack and the knowledge at the application level, affecting most functions on the radio level. The functioning at the radio level had to be changed in multiple low level functions to mimic the delay inknowledge.
  2. The complicated changes led to complicated use cases with multiple back and forth with the customer on the behavior of tangential use cases.
  3. The hysteresis itself did not introduce any tangible benefit and the customer stopped using it after a while.
  4. We had to keep two branches of the code, one for this particular customer and one for the rest of the world. The reason is that we did not want external intellectual property to be available to a 3rd party. This doubled our testing load for every release.
  5. We removed the hysteresis code after a couple of years.

In the example above, a stronger product team, or better communication channels with the customer, would have allowed a push back on these requirements. In retrospect, it was not worth it. However, at the time, it was the cost to be accepted at launch.

Leave a comment