Last night I got to hold a fresh copy of the first book I’ve ever written. It was an amazingly satisfying experience. As many authors will attest, the journey from submitting a proposal to holding the finished book was much longer one than expected. It was difficult to maintain a healthy attention to detail when I found myself working on the seventh or eighth revision of a single chapter. What got me through this was the last lesson my father taught me as a programmer.
My son was born in March of 2011, and I was on top of the world. One month later to the day, my father died unexpectedly. My dad never met my son; we live in Alaska and he was planning to come out for a visit that summer. Instead I flew back to New Hampshire with my family for his services.
My father spent the majority of his career working as a software engineer in the 70’s and 80’s for companies such as Raytheon, Sanders, and Digital. I was lucky enough to learn how to program on a kit computer my dad put together in our basement. He introduced me to BASIC on a computer that was really just a bare motherboard wired to a keyboard without a case, and a cathode ray tube that rested in a plywood case. My first program was a simple number guessing game, and I still remember the satisfaction of watching my family play a game I had written myself. I studied physics in college and went on to teach high school math and science, but I always kept up with programming as a hobby.
During the week we spent at my parent’s house after my father passed away, I spent a lot of time sitting quietly in his office. I always loved waking up early when I visited home and hearing about my dad’s latest projects. I’d thumb through his vast library of O’Reilly books, and listen to him explain concepts like how to set up a database so it can be scaled when the need arises. My father never taught me specific skills as a programmer after those initial BASIC lessons, but I always went to him when I needed a perspective on some aspect of programming that only comes from working in a professional context over long periods of time. I felt lost without my connection to his professional work, and the thought that I’d never get to sit in his office with him again.
I had the privilege and the burden that week of looking through my dad’s computer, and seeing the projects he was working on that would never be finished. His main project was a design tool for woodworkers that he’d been working on for years, which he never quite felt ready to release. There were numerous other projects, the details of which I don’t remember at this point. All I remember is the overwhelming feeling of his work suddenly stopping, and the sadness of knowing those projects would never see an actual user.
When I flew back to Alaska and started working on some of my own projects again, I realized I didn’t want my son to someday look through my computer and see a bunch of unfinished projects. I started looking more critically at my own projects, and made a commitment to myself to take a more professional approach to my work as a programmer. I had the skills to do meaningful projects, and I wanted to start using my skills to solve real-world problems. I let go of any quest for perfect code and started focusing on bringing some of my projects to the point where I had actual users.
I fell into a book project almost by accident. I gave a lightning talk about an open source education project at PyCon in 2013, and in one of the conversations that followed I was invited to consider writing a book. I went back to my classroom in the following weeks and noticed a list on the wall I had made with my students. Someone had asked what you need to know as a programmer in order to start working on meaningful projects. I looked at that list, and turned it into a book proposal; the proposal was accepted, and I got to write the book I’d always wanted to teach from.
Holding my first copy of the book last night was a bittersweet experience. I felt a deep sense of pride and accomplishment, and accepted warm congratulations from my family and a number of close friends. But I felt an odd mix of emotions when I thought of my dad. I wished more than anything that he was still alive, so I could hand him a copy of my book. But without that last lesson about the importance of finishing projects, I would never have taken my own work seriously enough to follow through on such a large project.
So thank you dad for sharing your love of programming with me. And thank you for that final lesson as well; I finished this book for you, and now I’ll find another project that’s worth following through on.