So, I’m writing this as I’m listening to the talk for the second time, and I will probably need to watch it for the third time to be able to completely grasp the critical points in this talk, but here’s what really resonated with me.
Firstly, I believe Kay’s talk evolved mainly around the notion of “Thinking outside the box” and the fact that we human beings, in general create constraints for ourselves, limiting our way of thinking, and then making efforts to be innovative and create complex systems inside that limited area. The analogy of “fish in the tank” and his remark on Art and how it will show us to other contexts out there that our paralyzed short-sighted minds can not normally reach illustrate the key point in his insightful talk.
His numerous comparisons between biology and how object oriented programming languages are constructed was another outline that caught my attention. His comparisons between various bio organisms with classes in OOP Languages was very remarkable: each bio organism is designed to carry out a certain task, yet when interfacing with other bio organisms, the whole system gains much more complex behaviors and functions. Just as in classes where you need not know what exactly takes places in each and every one of them, but rather by grasping the mere purpose they serve, we can have various building blocks in our disposal by means of which we can aim at constructing much more complex systems.
The “Dog House” and “Cathedral” analogy, in my opinion, serves the purpose of explaining efficient expandability of complex systems. As opposed to using a hundred times more material, following the blueprint of a dog house to build a cathedral, we should re-think the requirements of the task at hand (In this case being the complex system, or software). As the system grows, new structures and functionalities are required to successfully build the project.
In summary, apart from all the computational references, the main point made by Kay in this talk was the systematic thinking as a means of building systems. Designing building blocks with built in functionalities that interface efficiently with one another to make a complex, yet fully functional and responsive whole.