Where Do Bugs Come From? Part V
|This series is about the origin of bugs. Although they did not come from an apocalypse, they are sure leading us towards it.|
|Part I||Part II||Part III|
|Part IV||Part V|
We’re getting there. Here’s the final nail in the coffin: We are bad at translation and unfortunately, we do a lot of translations.
In a typical application development, we’ve got a user who has a problem:
“Why can’t I see the content when I open the app?”
The business person translates that into a vision:
“Of course, that makes sense. Every time the app starts, it should show the content”.
He then turns that into a requirement:
“The start screen should look like this, and the latest content should be shown”.
The architect takes the requirement and says:
“When the main module loads, it should get the latest data from the database. Oh and let’s separate it into a new micro-service”.
The developer (I know I’m stereotyping, but role-playing is fun) gets that from the high level design, and writes a detailed design for the code saying:
“For performance reasons, when the new data gets there, it is also cached for other retrievals. Oh and let’s make that two micro-services”
On the other side of the table, our tester looks at the requirement and says:
“I’ll need two staging environments, one for testing in a standalone configuration and one distributed, I’ll load the data differently each time, and I expect every time to see the newest data when I reset”.
Just a short example. Of course, after all this is release, the user says:
“Well it works most of the times, but not always. Why can’t I get my content?
Communication is hard, especially when we’re working cross-domain working on complex issues. We don’t speak the same language. Whenever there is a translation error, two bugs get their wings. That’s how the Tower of Babel started.
To summarize: Bugs happen because we are not good at what we do, we don’t admit it, we don’t communicate well, and after all that, we still relying on pure luck that the thing would work.
How do you fix a bug? You understand what the correct behavior should be, plug the hole up stream and check that it works now, and again, and in two days – again.
How do you fix a buggy process? The same way.