We are the product of several millennia of human evolution. A code so complex that it is prone to bugs.
On Friday, I was having a chat with a colleague of mine and we were talking about wisdom teeth. How come we are still born with them? It looks like we are shipping new bugs into production to fix them afterward.
But this is where it gets interesting.
- Where is it cheaper to fix?
- Where is it safer to fix?
- Should we stop the “production” of all new human beings until we solve this bug?
Like wisdom teeth, we have a plenitude of other bugs. And like computer bugs, they are part of life.
Let me tell you a quick story from the time I was a developer.
We were doing a data migration project for one of our clients. The code was solid, working like a charm, but …
There is always a but. The day before we were going live we noticed an edge case. There was a record that was messing up our process and was causing duplicated records. That’s not good. Right?
We took a look into the code and noticed that we had a bug. A bug in the beginning phase of our transformation process. To fix it would cost us a huge amount of time. Not just that, but we would also have to retest everything again for every other customer record (we had around 16 million).
After half an hour of looking at the problem we noticed that, even though the bug was in the beginning, the duplication part would happen in the end. Not only that, but the records were perfect duplicates of each other. So we decided to fix it there.
Like wisdom teeth, we waited until it became a problem. We loaded the wrong records into our final tables, verified they were there and caused an issue, and deleted one.
If we tried to fix the bug we would have wasted hours, maybe days with proper testing. This way we wasted less than half an hour.
OK, OK. I understand. Not all bugs are the same. This is not a generalization for all bugs. It is just an idea, that sometimes, maybe we don’t need to stop everything just to fix a bug.