Douglas Crockford held Codemotion Rome 2018 opening keynote, speaking about programming and paradigms, and about human nature of scientist and programmers and how this nature can slow down adoptions of brand new and useful ideas.
A paradigm can be described as set of patterns and methods that are commonly accepted by members of a scientific community. Progress in programming happens shifting from one parading to another one. Any new paradigm implies improvement, so why people oppose to the adoption of a new paradigm?
Douglas answers is this is bond to the nature itself of paradigm: paradigm is a significant change in the way we think and for most people it is difficult to switch out from a paradigm once they’ve become competent.
In science if we encounter fact which contradicts our current understand of science, we should abandon our old beliefs. But change is painful.
Scientists and programmers are humans, and changes can generate confusion and pain, especially when your previous expertise and experience is going to be blasted, leaving only loss and embarrassment.
Douglas Crockford recalled us that in the old early days of programming science, new paradigms was quickly adopted. It was a greenfield, anyone involved was learning for the first time. So it was simple to have consensus on new ideas such as stored program or subroutines. But, years later, the adoption of Object Oriented programming in languages such as C++ was a compromise with old procedural paradigm. Nowadays, functional programming is going mainstream, but this paradigm was introduced in ’70.
As Douglas said, “progress waits not on discovery, but on consensus”, and he is grateful of the huge success and adoption of JSON format. In Douglas opinion, JSON was a hit because it was used by fresh people that approached web and programming for the first time in ’00.
We need to constantly ask yourself: are we part of what moves us forward or are we part of what is holding us back?
If so, if our human nature is trying to prevent the advent of the next important advance in programming, which is the disruptive paradigm we are preventing the adoption?
In Crockford opinion this next paradigm is asynchronous message passing (or asynchronous distributed programming) and, unsurprising, it’s not a new idea. It’s around from a long time, rested on the Actor model proposed at MIT in 1973, and there are yet some wide deployments. Simply, it still being resisted, and we could need new protocols, new operating systems or new programming languages which allow us to exploit this paradigm.
Douglas believes this is how programming will evolve in the next years, because that’s how the universe work and we should have a programming model that’s compatible with the universe, that will allow us to be more effective in doing what we have to do.