Its misleading to have just my name on the cover. This book wouldnt exist without the efforts of many people. Id like to thank my publisher, Bill Pollock; and my editors, Frances Saux, Annie Choi, Meg Sneeringer, and Jan Cash. Id like to also thank production editor Maureen Forys, copy editor Anne Marie Walker, and No Starch Press executive editor Barbara Yien. Thanks to Josh Ellingson for another great cover illustration. Thank you to my technical reviewer, Kenneth Love, and all the other great friends Ive met in the Python community.
Introduction

Hello again, world! As a teenage programmer and wannabe hacker in the late 1990s, I would pore over the latest issues of 2600: The Hacker Quarterly. One day, I finally summoned the courage to attend the magazines monthly meetup in my city and was in awe of how knowledgeable everyone else seemed. (Later, Id realize that many of them had more confidence than actual knowledge.) I spent the entire meeting nodding along to what others were saying, trying to keep up with their conversations. I left that meetup determined to spend every waking hour studying computing, programming, and network security so I could join the discussions at the next months meetup.
At the next meetup, I continued to just nod and feel dumb compared to everyone else. So again I resolved to study and become smart enough to keep up. Month after month, I would increase my knowledge but always felt behind. I began to realize the enormity of the computing field and worried I would never know enough.
I knew more about programming than my high school friends but certainly not enough to get a job as a software developer. In the 1990s, Google, YouTube, and Wikipedia didnt exist. But even if those resources were available, I wouldnt have known how to use them; I wouldnt have been sure what to study next. Instead, I learned how to write Hello, world! programs in different programming languages but still felt I wasnt making real progress. I didnt know how to move beyond the basics.
Theres so much more to software development than loops and functions. But once youve completed a beginner course or read an introductory programming book, your search for more guidance leads to yet another Hello, world! tutorial. Programmers often call this period the desert of despair: the time you spend wandering aimlessly through different learning materials, feeling like youre not improving. You become too advanced for beginner materials but too inexperienced to tackle more complex topics.
Those in this desert experience a strong sense of impostor syndrome. You dont feel like a real programmer or know how to craft code the way real programmers do. I wrote this book to address this audience. If youve learned the basics of Python, this book should help you become a more capable software developer and lose this sense of despair.
Who Should Read This Book and Why
This book targets those who have completed a basic Python tutorial and want to know more. The tutorial you learned from could have been my previous book, Automate the Boring Stuff with Python (No Starch Press, 2019), a book such as Python Crash Course (No Starch Press, 2019) by Eric Matthes, or an online course.
These tutorials might have hooked you on programming, but you still need more skills. If you feel like youre not yet at the professional programmer level but dont know how to get to that level, this is the book for you.
Or perhaps you were introduced to programming via another language besides Python and you want to jump right in to Python and its ecosystem of tools without retreading the same Hello, world! basics. If so, you dont need to read hundreds of pages that explain basic syntax; instead, skimming the Learn Python in Y Minutes article at https://learnxinyminutes.com/docs/python/ or Eric Matthess Python Crash CourseCheat Sheet page at https://ehmatthes.github.io/pcc/cheatsheets/README.html will suffice before you tackle this book.
About This Book
This book covers more than just deeper-level Python syntax. It also discusses using the command line and the command line tools that professional developers use, such as code formatters, linters, and version control. I explain what makes code readable and how you can write clean code. Ive featured a few programming projects, so you can see these principles applied in actual software. Although this isnt a computer science textbook, I also explain Big O algorithm analysis and object-oriented design.
No single book can transform a person into a professional software developer, but Ive written this book to further your knowledge toward that end. I introduce several topics that you might only otherwise discover, piecemeal, through hard-earned experience. After completing this book, your footing will be on a firmer foundation so youll be better equipped to take on new challenges.