Software Design by Introspection

Over the years, a few programming paradigms have been successful enough to enter the casual vocabulary of software engineers: procedural, imperative, object-oriented, functional, generic, declarative. There’s a B-list, too, that includes paradigms such as logic, constraint-oriented, and symbolic. The point is, there aren’t very many of them altogether. Easy to imagine, then, the immensely humbling […]

Refactoring to a System of Systems

Teams that have built monoliths for years are used to certain patterns of interaction between different parts of the code base. Simply replicating those patterns when splitting up a system into a distributed one usually introduces a lot of complexity and drawbacks that often totally subvert the desired effects of a split up of the […]

Organisational & People Impact of Microservices

Microservices are where it’s at. Everything is easier to manage when it’s micro, right? Micro code bases (less than 10 LOC), micro containers (less than 10Mb), and micro teams (less than one person???). ‘Micro’ things may appear to be easier to manage, but there is always a macro context, and working with people and teams […]

How to Become a Better Programmer

Becoming a better programmer means more than just learning new technologies. It means more than practicing techniques and programming languages. It is about more than passion and attitude. It is the combination of all these things. This presentation unpacks important mindsets and techniques that will help you improve as a programmer. You will discover specific […]