Simplicity through design
I’m a software engineer at heart, but I dabbled in other related areas like product management and data science. I’ve worked on systems in many languages, using many different technologies, at various levels of abstraction: from optimized assembly code (added SIMD instruction support in Flash Player virtual machine), to cross-platform desktop applications, to web applications, to “big data” services. I’ve experienced working both with resource-constrained embedded systems, and with very large scale distributed systems. I’ve co-authored/ contributed to cool things such as a new processor’s instruction set architecture, or the definition of a new web standard. Currently, I’m doing backend engineering work using mostly Scala & Spark – but my background & interests are rather diverse, so who knows what I’ll do next?
This talk is about the importance of simplicity in software design, and why it’s so hard (but very important) to even agree on what it’s simple and what isn’t. It proposes a way to judge software constructs for their complexity, and discusses a few ways that may help us reduce the incidental complexity of our software systems.