This week we have the honor of welcoming Mark Lutz as our PyDev of the Week. Mark is the author of the first Python book ever, Programming Python. He has also authored Learning Python and the Python Pocket Reference, all three of which were with O’Reilly publishing. Rather than rehash more of his background, let’s just jump into the interview so we can learn more about Mark Lutz!
Can you tell us a little about yourself (hobbies, education, etc):
I’m a software engineer, a Python book author and trainer, and one of the people who helped Python rise to the prominence it enjoys today.
I’ve been working in the software field for 3 decades, and earned BS and MS degrees in computer science from the University of Wisconsin. Back when I was being paid to do development, I worked on compilers for supercomputers and CAD systems, and large-scale applications at assorted start-ups.
Since quitting my “day job” two decades ago, I’ve been teaching Python classes in North America and Europe, and writing Python books that have sold over half a million units and span 11k published pages. To put that in perspective, back-of-the-envelope calculations suggest that the paper units of my books sold comprise about 650 tons (and counting).
If you’re interested in more details, check out my formal bio page at http://learning-python.com/
Why did you start using Python?
I’ve been using Python since 1992, when it was at version 0.X, and the concept of a web site was still largely academic recreation. At the time, I was hired away from a compilers job to spend 6 months exploring available scripting languages as candidates for a portable GUI toolkit’s generated code. I and a cohort wrote benchmark programs in Python, Tcl, and their contemporaries, and Python came out the clear winner in terms of readability, functionality, and robustness.
As it happened, I was also growing increasingly frustrated over the artificial complexities in the C++ language, and Python seemed to promise a better path for developers. For people who already knew what they were doing, Python even then was a slam-dunk in terms of productivity gains. Such began a fork in my career path which I’m still following today.
More recently, the original message of Python as a better tool for developers morphed into a promise of accessibility for all. It’s great to see so many people getting into programming these days, but I think it’s crucial that we also set expectations realistically. Languages aside, software has always been both fun and hard stuff, and successful practitioners still need to understand the full “stack”, from scripting through chips. Python’s just one part of that stack.
What other programming languages do you know and which is your favorite?
I’ve used too many to list here (including COBOL and FORTRAN, in prior lives). I was heavily into Prolog in college, and did a thesis project which involved an optimized implementation of that language in C and 68K assembler. Prolog’s novel approach to computing was exciting, but it was also too arcane for many programmers, and lacked a practical applications focus. I also did a bit of AI work in Lisp. And there’s this language called Python which I hear good things about…
Really, to people with a decent background in CS, most languages are just variations on a theme; it’s how they put their ideas together that matters. I prefer languages that do so more coherently than chaotically.
What projects are you working on now?
I’ve been working on a few Python project lately, mostly for fun and personal use, but also as teaching examples for learners of the language. Among these are frigcal, a tkinter-based calendar GUI; mergeall, a folder sync tool for mirroring archives across devices; and the latest version of pymailgui, a POP/SMTP email client.
These programs are also in part intended as answers to some of the personal privacy dangers of today’s web. Uploading personal data to clouds, and having my email or calendar scanned are just not options for me. You can find these and other Python program examples at http://learning-python.com/
Which Python libraries are your favorite (core or 3rd party)?
There’s too much out there to name a favorite per se, but I still find [tT]kinter great for quick GUI work, and leveraged the icalendar third-party library for interfacing with iCalendar files in the frigcal program. Batteries-included works great, as long as those batteries work as advertised, and aren’t replaced while you depend on them.
Where do you see Python going as a programming language?
I suspect Python will continue to grow its user base in years ahead. This is especially so, given the push to add CS as a core topic in school curriculums around the world. By offering a rare combination of functionality and usability, Python should continue to prove a valuable asset in educational contexts.
As for the language itself, I have concerns about the ongoing and sometimes reckless feature bloat that it shares with other open source projects, but I’ll pass on that subject here for space. For more details, check out my recent Python changes page at http://learning-python.com/
Why did you decide to write books about Python?
As already mentioned, I was there for the early days of Python, when there were no books, but the docs came with a plea for someone to write one. At the time, I was also considering forming a start-up to build Python development tools, but the book idea won out in the end. It seemed a great opportunity to publicize and support something which I believed could make a difference in the field.
Early adopters like myself learned Python from its then-brief tutorial and source code, but that wasn’t going to work for the broader audience that Python could attract. Moreover, a book was clearly required if Python was to ever grow beyond its then-small user base; especially in the 90s, a book could add legitimacy in ways that nothing else could.
Historic anecdote: in 1995 my publisher initially rejected the idea of doing a Python book, but warmed after I lobbied them about it over a period of months. The result was the first Programming Python; which spawned Learning Python and the Pocket Reference; which all helped spawn the massive domain that Python is today. Sometimes it pays to be stubborn.
What have you learned from writing about Python?
Too much to impart here, of course. But I will pass on that writing and teaching are not innate talents; like other skills, it takes lots of practice to hone either. My advice to anyone interested in either pursuit is to get out there and do it; the more criticism you receive, and the more live-and-in-person that criticism is, the better your message will become. Beyond that, it’s largely a matter of saying what you mean, and rewriting till you can rewrite no more.
Thanks so much for doing the interview and sharing your insights!