Lean Code: Improving the value of code and the flow of development


Lean has been applied as a toolkit to fine-tune development processes and organisational workflow, but what does it mean when we apply the practices to the detail of the code, the practices used to develop it and the people who develop it? What does Lean Code and its creation look like?

There is a need to move beyond often separated worlds of software craft and agile development, to properly embrace code in its detail, but to also connect it more completely to the flow of business and the intelligence of people around it. To move beyond simplistic exhortations of clean code to something more human and empirical.

This two-day workshop and masterclass offers a fresh look at Lean principles and practices from the perspective of the code and the coder, and not just the typical scale of the organisation and the development process. We will identify the seven goals of Lean Code, and what those look like for us, our code and our practices.

This two-day workshop and masterclass mixes lectures, discussion, group exercises and hands-on coding sessions.

Course contents

Lean: What we mean by lean · Where the metaphor does and does not apply · From Lean Software Development principles to Lean Code goals

Value: What do we mean by value? · Value demand versus failure demand · What is of value in code? · Source code signal-to-noise ratio · Tests · Comments · Code as a liability · Dependencies · Value as a function of time

Quality: Testing, checking, reviewing · Empirical practice · Coding conventions and standards · Metrics and Goodhart’s law · What we mean when we describe code, tests, architecture, etc. as good? · Following, questioning and updating habits and norms

Knowledge: Orders of ignorance · Source as codification of knowledge · Tests as communication · Information hiding · Simplicity · Aligning code with paradigms · Patterns · Architecture decision records (ADRs) · Models and modelling · Code reviews

Options: Technical debt versus technical neglect · Refactoring · Evolving code · YAGNI versus speculative generality · Published APIs · Saying no to OCP

Flow: Velocity is not speed · Development as a process of enquiry · Plan–Do–Study–Adjust (PDSA) · Testing workflows (TDD, ITL, POUT, DDT) · CI/CD

People: Individuals and interactions · Group intelligence · Conway’s law · Scaling development (or not) · Habitability · Well-being · Compassionate development

Holism: The sum versus the parts · Overlooking details · SPE classes of software · Emergent behaviours · Alignment of business and capabilities · Beyond the technical stack

Target audience and prerequisites

These two days are aimed at developers.

 - 23 October 2024