You’ve written a few Python scripts that get the job done, but the initial euphoria has worn off. Your code is hard to understand. Bugs are cropping up. Worse, you can’t always explain your process or results to an editor — or yourself. There must be a better way, but the path forward is not clear. If you’ve had that itchy feeling, this tipsheet is for you. After mastering the basics of writing code, you need to understand how to design programs. To that end, this tipsheet will explore Python language features that will help you write readable, reliable and reusable code.