2024-04-04 –, Room 111
Look at your system's design! Are the major structures and technology choices the result of conscious decisions, or have they emerged as the system has evolved? Is the design stuck in a local minima while ever more features are piled into the system? How can we design systems which withstand the major forces acting on a solution?
We’ll see why system designers should focus deliberately on the constraints and qualities of system design, and avoid getting too distracted by features.
In 25 years of programming professionally, most often, and most enjoyably, in Python, I've experienced what makes projects brilliant successes – or epic failures. What will cause your project to succeed – or fail?
You’ll help me delve into the demographic characteristics of our industry, dominated by a predominantly young workforce and high turnover. This dynamic has resulted in a lack of experience and inadequate feedback loops, making it challenging to build and maintain firm foundations.
Drawing parallels between the software industry and the fashion world, I discuss the pervasive influence of trends and the ephemeral nature of technology adoption, provide a framework for grounding expectations regarding new technologies.
We’ll explore the impact of cognitive biases on decision-making within the industry, highlighting biases like the availability cascade, recency effect, and pro-innovation bias. I’ll discuss the challenges faced by software designers, emphasizing that architecture is fundamentally about decision-making and the necessary trade-offs to achieve software qualities.
Distinguishing between functionality and software qualities, I emphasize the emergent nature of qualities and the difficulty in capturing and testing these in practice. The discussion challenges the popular wisdom regarding the independence of functionality and qualities, suggesting that adjustments are not always orthogonal.
I’ll draw a powerful analogy with the concept of incident forces acting on a system, framing requirements as forces that demand resolution. We explore the resolution of incident forces, factoring them into functionality, qualities, constraints, and principles,
helping us direct our attention to where it matters most.
The talk concludes with insights into the challenges of navigating the complex space of software qualities, emphasizing the trade-offs and optimization problems inherent in architectural decision-making, finishing with an important message for budding software designers.
Robert has been working with Python for 25 years in the energy and ed-tech sectors, understanding, designing, advocating and implementing effective architectures for sophisticated scientific, enterprise and media production software in Python. He believes in the necessity of a strong engineering culture and enjoys performing the coaching and training necessary to achieve one, while being deliberate with the many and complex trade-offs involved in delivering complex – but not complicated – systems. His most recent venture is with video content production systems, largely implemented in Python.
Over the last decade, Robert’s Python training courses on Pluralsight have often been in the top-five most popular and have accumulated 1.9 million hours of view time and reached over 1 million paying subscribers. He is co-author of The Python Apprentice, The Python Journeyman, and The Python Master trilogy.