Code Simplification Masterclass

Untangling complexity in code, culture, and process
Kevlin Henney

Code Simplification Masterclass

Code Simplification Masterclass

Kevlin Henney
🇬🇧 English
Intermediate

Paris, France
Venue TBA
Total duration: 14h00

Timezone: Europe, Amsterdam
Tuesday November 4 09:00 - 17:00
Wednesday November 5 09:00 - 17:00


Summary

We are often urged to keep code, design and architecture simple. What, however, is the motivation for this? And what does this mean in practice? Is simplicity just an aesthetic or does it also have social, economic and technical implications? Does simplicity reduce cost of change, of maintenance, of ownership? When we say ‘simple’, is one person’s ‘simple’ necessarily the same as another person’s ‘simple’? And, of course, if simplicity is so important, how do we simplify?

Overview

In this masterclass ...

  • We’ll consider simplicity from a number of viewpoints, including essential versus accidental complexity, value demand versus failure demand, simple versus simplistic.
  • We’ll also look at typical sources of complexity in our coding habits, along with code examples in various languages.
  • We'll see that many practices and approaches can be used both to simplify and to complicate. It's all in knowing how and when versus how not to and when not to use them. For example, we can encourage reuse through code libraries, platforms and services, but we can also make an architecture needlessly complex and draw in unnecessary dependencies, with implications for maintainability and security. Similarly, AI assistance can be employed to make code simpler and easier to work with but, without attention and guidance, it can make things harder in the long run, becoming a new source of legacy.
  • We’ll explore verbose and convoluted code, the effect of programming paradigm and how we can turn down the imperative noise of many languages and styles with declarative techniques.
  • We'll learn it’s not just in our programming and languages where we find complexity: our development processes, tools, architectures and organisational cultures can often encourage unnecessary complexity, costing us time, effort and opportunity where simplicity would have had the opposite effect.
  • We’ll look at how we can work with incomplete knowledge without adding speculative complexity of so-called future proofing.
  • We’ll acknowledge technical debt and neglect for what they are and understand why ‘legacy’ is so often the opposite of ‘simple’, no matter what its backstory. We want to make sure that as well as recognising unnecessary complexity in the small and the large, that we also have an idea of the practices that can help with simplification.

As well as presenting concepts, examining themes and considering code, this masterclass will also offer plenty of opportunity for questions and discussion, plus a couple of small refactoring exercises.

Topic summary

  • What kinds of complexity do we find in software systems?
  • What are the costs of accidental complexity in code and architecture?
  • Where does complexity appear in our organisations and processes?
  • The technical debt consequences of long-term technical neglect
  • Why and how details matter
  • Refactoring as an act of simplification, discovery and evolution
  • Examples and consequences of refactoring
  • Kinds of refactoring resistance
  • The role of testing in keeping code, architecture, delivery and life simple
  • How to be the human in the loop when working with AI code generation
  • Programming paradigms and their effect on complexity
  • Declarative programming versus imperative programming
  • Keeping code, architecture and development process lean
  • Practices for getting started

For who?

For this workshop, we target developers and architects.

Learning Objectives

As well as presenting concepts, examining themes and considering code, this workshop will also offer plenty of opportunity for questions and discussion, plus as a couple of small coding exercises, offering a good start to your conference week!

Requirements

Participants need to have a development background. They do not need to bring a laptop as all the exercises will be group exercises with flipcharts/whiteboards.

Kevlin Henney

About Kevlin Henney

Thought Provoker. Kevlin is an independent consultant, trainer, speaker and writer. His development interests and work with companies covers programming, practice and people. He has contributed to open- and closed-source codebases, been a columnist for a number of magazines and sites and has been on far too many committees (it has been said that "a committee is a cul-de-sac down which ideas are lured and then quietly strangled"). He is co-author of two volumes in the Pattern-Oriented Software Architecture series, editor of 97 Things Every Programmer Should Know and co-editor of 97 Things Every Java Programmer Should Know.

All workshops by Kevlin Henney

Code Simplification Masterclass

Kevlin Henney
🇬🇧 English
Intermediate

Paris, France
Venue TBA
Total duration: 14h00

Timezone: Europe, Amsterdam
Tuesday November 4 09:00 - 17:00
Wednesday November 5 09:00 - 17:00


Also check out