Preface
Noted software engineer and entrepreneur Marc Andreesen famously declared that “software is eating the world”. This was back in 2011, and has only become more true over time. Software systems continue to grow in complexity and can be found in all facets of modern life. Standing in the middle of this ravenous beast is the Python language. Programmers often cite Python as a favorite language, and it can be found everywhere: from web applications, to machine learning, to developer tools, and more.
Not all that glitters is gold, though. As our software systems become more complex, it becomes harder to understand how our mental models map onto the real world. If left unchecked, software systems bloat and become brittle, earning the frightening moniker “legacy code.” These codebases often come with warnings such as, “Do not touch these files; we don’t know why, but it breaks when you do,” and, “Oh, only So-and-So knows that code, and they left for a high-paying Silicon Valley job two years ago.” Software development is a young field, but these sort of statements should be terrifying to developers and businesspeople alike.
The truth is, to write systems that last, you need to be deliberate in the choices you make. As stated by Titus Winters, Tom Manshreck, and Hyrum Wright, “Software engineering is programming integrated over time.”1 Your code might last a long time—I’ve stepped into projects whose code was written while I was in elementary school. How long will your code last? ...