Our approach to programming for the past 50+ years has mostly focused on specific features of a programming language. The result has been an emphasis on “general purpose” programming languages. The resulting language features, like object-orientation or static typing, must then be generally applicable. Where that generality fails, we expend enormous effort attempting to work around the difficulties, rather than avoiding them.
The next 10 million programs will not be built this way. We don’t have the time. We don’t have the money. And we can’t afford to fail as we have been. While the cost of almost everything is going down, the cost of failure is going up.
Relatively recently, the term ‘polyglot programming’ became popular, and there was much discussion about how different parts of a system should be written in different languages.
In this talk, I will introduce the idea of using different interoperable languages for different parts of the application life-cycle.
I will demonstrate how the Cynefin framework supports this approach to building systems. Using the Cynefin framework involves recognizing that the world is not divided into order and disorder. There are four distinct types of order.
I will also explain how it is possible to build reliable systems from unreliable components. I will answer the question: How do we structure our community, processes, and system architecture so that the reliability of the system as a whole is greater than the reliability of any particular piece?
Throughout the talk, I’ll use examples from Rubinius 3.0 to illustrate the ideas I will be presenting.
Brian’s talk is now available on the Chariot Solutions site.