complexity

Showing 4 out of 4 results

ARTICLE

Expert Talk: Managing Complexity in Software

Complexity of software systems sometimes grows beyond control. Left unchecked, it can leave behind bloated applications. Kevlin Henney talks to Hadi Hariri, developer advocate at JetBrains, about how some of the key traits of developers like creativity and problem solving make them prone to innovate more but also over-engineer their code and not choose solutions based on context.

May 31, 2022
ARTICLE

Expert Talk: Scaling Down Complexity in Software

Software shares multiple similarities with living creatures. Embark on a journey with Kevlin Henney, an independent consultant & speaker, and James Lewis, consultant at Thoughtworks, to undercover some of the aspects that make producing software so complex from trending frameworks, that help you understand the human component, to its disposable aspect and the way it influences companies and solves real-world problems.

September 20, 2022
BOOK EPISODE

Observability Engineering

Observability is crucial for developing and understanding the software that powers today’s complex systems. Charity Majors, Liz Fong-Jones, and George Miranda, authors of “Observability Engineering” show you how to manage software at scale, deliver complex cloud-native applications and systems, and the benefit observability has across the entire software development lifecycle. You’ll also learn the impact observability has on organizational culture (and vice versa).

June 9, 2022
SESSION

Deprecating Simplicity

When engineering teams take on a new project, they often optimize for performance, availability, or fault tolerance. More experienced teams can optimize for these properties simultaneously. We can add an additional property: feature velocity. Organizations often try to optimize for feature velocity through process improvements and engineering hierarchy, but some optimize for feature velocity through explicit architectural decisions. These decisions increase the complexity of the system. Mental models of approaching availability help us understand the tension between these engineering properties. For example, understanding the distinction between accidental complexity and essential complexity can help you decide whether to invest engineering effort into simplifying your stack or expanding the surface area of functional output. Incident remediation, approaches to automation, and diversity of engineering can all be understood through the perspective of these mental models. With insight and diligence, these models can be applied to improve availability over time and drift into a safer state for the system.