(Code) Simplicity

Urs Enzler
101 ideas for agile teams
3 min readAug 26, 2019

--

This post is part of 101 ideas for agile teams.

A typical reaction to lack of simplicity

Context

Your team struggles with the lack of simplicity:

  • work takes much longer than initially thought
  • side-effects of changes that looked easy at the beginning result in endless chains of changes or defects
  • no one understands anymore what is going on (in the software code)

There is no shared understanding of what simplicity looks like and how to achieve simple artefacts (like software code).

Action

Hold a workshop with your team and discuss the following two lists — indicators of simplicity and aspects of simplicity:

Indicators of simplicity

  • Small size — small things are usually simpler to understand than large things
  • A low number of concepts — fewer concepts are easier to comprehend
  • A low number of interactions — fewer interactions are easier to comprehend

Aspects of simplicity

  • Bounded — the whole is built from bounded pieces like e.g. modules with a well-defined API. To comprehend the whole, comprehend the parts individually and their interactions
  • Conciseness — not vague, abstract or generalised
  • Expressiveness — no guessing or assumptions
  • Readable — the form is optimised for readability, not writability
  • Understandable — it can be understood in a reasonable amount of time
  • Unsurprising — it behaves as one expects
  • Self-explanatory — everything needed to understand is included
  • Reassuring — it gives a feeling of safety to change and adapt it

Discuss with your team members the effects of the above aspects on your code and on your team. Then find ways to increase these aspects in your work. Work towards a common understanding of what simple means for your team.

“Keep it simple“ is a bad saying, it should be “Make it simple” because simplicity is not a state you start in, but a state that needs a lot of thought and work to achieve.

What you gain

Simpler code is code with fewer defects that can be maintained, extended or adapted more quickly because the code and potential side effects of changes are easier to understand. See the video linked below for a great explanation.

How to strengthen

Gather and visualize the benefits of simplicity. Probably, there are fewer defects due to more simplicity. Team members find better solutions faster because they understand the implications of changes better.

Risks

None so far. Tell me if something went wrong in your team.

Inspiration

This idea was heavily inspired by a presentation by Kate Gregory. You can find it here https://youtu.be/O50qTuM5OT0?list=PL9hrFapz4dsPSepY_AxxQEf6cjEqXht7B

Please help me improve this idea by providing feedback.

More ideas at 101 ideas for agile teams

Many thanks to bbv Software Services for making this blog post possible.

--

--