Speaker: Laurent Bossavit
📌 The Premise
The speaker wasn’t here to discuss how to fix bugs once they exist — but rather to ask why bugs appear in the first place.
His theory:
➡️ Bugs in code are the result of bugs in our own brains.
They’re the byproducts of:
-
Cognitive biases (as described in Daniel Kahneman’s Thinking, Fast and Slow)
-
Miscommunication and ambiguous exchanges between teammates
-
And sometimes from the tools and abstractions we choose
📌 Communication & Cognitive Biases
A significant source of bugs comes from the semantic gaps in human communication.
Example: repeat a word like AI a hundred times, and it gradually loses meaning — a phenomenon called semantic saturation.
This disconnect leads to:
-
Differing interpretations of requirements
-
Assumptions made without alignment
-
And code built on misunderstandings
AI won’t fix that, because the problem isn’t technical — it’s human.
📌 On Tools & Paradigms
The speaker then touched on how some bugs aren’t purely human — sometimes our tools make them easier to introduce.
For example:
-
In object-oriented languages (like Java, Ruby), dealing with concepts like a card game can get unnecessarily complex and error-prone (e.g., two mutable instances of the same card in a game)
-
In functional languages (like Haskell), you can define constraints in the type system itself, making certain bugs (like an invalid card type) literally impossible to compile
This wasn’t a full-on sales pitch for functional languages, but a clear statement:
Some languages and paradigms actively help prevent entire classes of bugs through their design.
📌 Conclusion
The core message:
-
Most bugs don’t come from tech limitations, they come from how humans think and communicate
-
Better tools and paradigms can mitigate some of these problems
-
But fundamentally, we need to acknowledge the human factors in software design and development
A thought-provoking session blending psychology, programming languages, and software heuristics.