Learn how to write readable, understandable and therefore maintainable code - step by step, in an example-driven way