A world of failures

Few years ago, the first day of ZuriHac, after two days of workshop, I took the plane to go Southern of France, to attend the wedding of one of my cousin (I would have use the train, but he announced it late).

I sat at the end of the plane, next to the most stressed people I have encountered in a place: sweating, nervous, he took 4 pills, and yet he was restless.

At some point, he closed his laptop, I saw a big sticker: "Airbus".

I thought that he was stressed because 10-20% of the millions lines of codes in an aircraft are dedicated to the in-flight entertainment system.

When I was working in the security field, I have discovered and fixed 12 major securities issues (including one which was disabling the security of the device, in my 5th week).

Reviews, QA, tests, certification authorities, client qualification team, no one noticed them.

I was just lucky.

And it is the same in every company I have been in, or from companies I have known or know someone who worked there.

There are bugs, architecture defects, management mistakes, containers are crashing, databases are corrupted, major infrastructure companies have outages.

Everything is failing all the time, no one does it better, everyone do their best, and yet it coincidentally works.

It does not mean we have no power over this:

  • Relying on DDD to reduce accidental complexity
  • Using declarative programming to reduce cognitive load
  • Implementing hexagonal architecture to improve adaptability
  • Leveraging event sourcing to be future proof
  • Applying TDD (types or tests) to have steady developments
  • Using tests and types to stabilize systems
  • Add reproducible tools (CI/CD, Build systems, audit)
  • Steadily self-improve
  • Use outages as learning opportunities, not blame opportunities