I'm curious about the "strong typing or strong testing" idea.
In Dev/DevOps teams people think the overall process is "Speed versus Quality", but in fact it's not that simple:
- you can have neither: a slow test/CICD process that also is unreliable, flaky
- you can have fast-reliable tests... for a subset of your code (e.g. small scope)
- low quality CD will deploy the project but sometimes leave it in a broken state (= 🔥)
- worse: CD deploys project, it's broken, and it's hard to tell (not trustworthy)
- you can have both speed and quality
The last bit is the "DevOps Dream" aka "Startup Easy Mode". The test/CICD process is both fast (low latency), and high quality (finds errors, is trusted by developers and the business).
If you can get to Easy Mode it means the Dev process is so much easier. Deploy to production, find bug, fix bug then redeploy to production. The business and the Devs are thrilled.
Otherwise when a bug appears in production it requires rolling back the change, which can be a pain. In Easy Mode you just fix the bug and move on.
I think "strong typing or strong testing" is related to "Speed or Quality".
What do you think?