Hello assumptions, my old friend
In the realm of software development, assumptions can pose significant challenges. We have many new areas where assumptions can arise: network infrastructure, API structures, pull request approvals, trusting tests…
Wait, it is all assumptions? Always has been!
It is containerized, so it should work everywhere. Right? Think about environmental variables, database and network accessibility, and configuration files. Maybe add some self-signed SSL certificates, logging, and monitoring. And… done. It should work if you don’t forget anything! Too many things to go wrong. However, the developers are always optimistic. It should work. Why not?
Changes have passed tests with no errors on the build server. It is deployed on the QA stage and then to prod. Nothing is broken. But guess what? A change in UI made users angry. Even UI changes may be developers’ assumptions.
Software projects are getting bigger and bigger. Despite the availability of excellent communication tools, effective communication is becoming increasingly challenging. People are getting distracted easily.
In a perfect software development world, you can’t destroy one thing: assumptions. The main reason is overconfidence, which prevents individuals from seeking help. “I am a strong independent developer. I don’t need help.” says the developer who needs help.
We can’t destroy assumptions, so what should we do with them? We need to find a way to live with them. Managing assumptions? I will write another blog post about it.