This week we welcome Wesley Chun as our PyDev of the Week! Wesley Chun, MSCS, is author of Prentice Hall’s bestselling “Core Python” series (corepython.com), the “Python Fundamentals” companion videos, co-author of “Python Web Development with Django” (withdjango.com), and has written for Linux Journal, CNET, and InformIT. In addition to being an engineer at Google, he runs CyberWeb (cyberwebconsulting.com), a consultancy specializing in Python training. Wesley has over 25 years of programming, teaching, and writing experience, including more than a decade of Python. While at Yahoo!, helped create Yahoo!Mail using Python. Wesley holds degrees in Computer Science, Mathematics, and Music from the University of California. He is based in Silicon Valley and can be reached on Twitter (twitter.com/wescpy) or Google+ (google.com/+WesleyChun). Let’s spend a few minutes getting to know him better!
Can you tell us a little about yourself (hobbies, education, etc):
I’ve been a software engineer by profession, coding in Python, JavaScript, and a few others, at big companies as well as startups. I’m currently at Google, a nice blend of both worlds. I enjoy helping the next generation of developers get up-to-speed on the latest technologies and best practices with the least amount of friction, meaning that in addition to coding, I also teach technology, publish books & blogposts, and give talks at conferences. Stuff I like to do away from the keyboard include family time, piano, personal finance, world travel, physical fitness (cycling, yoga, biking, basketball), poker, and learning a few words in as many languages as I can.
Why did you start using Python?
After leaving Sun Microsystems in the mid-90s with C and a few scripting languages under my belt, I went to a startup where our small team of ~10 engineers built what was eventually to become Yahoo!Mail using Python at a time when very few people had ever heard of it. It was amazing how fast we could create our own web framework and build the mail service with. It was like a breath of fresh air, and learning Python at that job changed the course of the rest of my career. Because of its uniqueness at encouraging group collaboration and being both powerful and expressive, I really didn’t want to work in any other language ever again. As a result, I’ve quite a challenging and rewarding career as a senior engineer working at companies where Python is a primary development tool.
What other programming languages do you know and which is your favorite?
In high school, I was exposed to programming in (Commodore) BASIC, FORTRAN, 6502 assembly, and Pascal. I added Logo and C to that collection in college. These days, I mostly tinker in Unix shell, Python, and JavaScript, with some Java, C++, Dart, and Go thrown in there. This is my 20th year coding in Python, so I’ll stick with that for a little while longer.
What projects are you working on now?
I’ve officially started work on the 3rd edition of my well-received, “Core Python Programming” book. The 2nd edition (ISBN 0132269937) is still doing quite well, and with all the new material going into it, the publishers and I have split that original book of two parts into two volumes. The 3rd edition of part 2 has already published as “Core Python: Applications Programming” (ISBN 0132678209), so now I need to complete the 3rd ed. of part 1 (tentatively called, “Core Python: Language Fundamentals”. It will feature both Python 2 and 3 prominently. We’re at the crossroads whereby adoption of 3.x has picked up, so while much legacy code still runs 2.x, there’s no reason why a new book should focus solely on either version, but can serve the community better as a bridge between both worlds.
At work, I’m currently bringing the goodness of Google developer tools, APIs, and platforms to the global community. I advocate for our devtools to engineers in industry as well as the next generation in the classroom, building sample code, writing about best practices, making product announcements, and creating Python or JavaScript-flavored developer videos (http://goo.gl/kFMUa6) that help on-board developers with integrating Google techologies into the web, mobile, and server-side apps *they’re* building. If it’s Python, then there’s a high likelihood that a deeper dive into the code covered in the video will be featured on my Python blog (wescpy.blogspot.com).
Which Python libraries are your favorite (core or 3rd party)?
I don’t really have one particular favorite. I think everyone should learn unittest. I thought doctest was pretty awesome the first time I heard of it. I feel that csv, json, and the xml and email packages are “must-have”s in every Python developers toolbox. I also think large tools like pip, ipython, Jupyter (formerly “IPython Notebook”), Django, Pyramid, and Sphinx are pretty awesome. Finally, I think that the Google APIs Client Library for Python is also great because it gives Python developers access to integrating the use of Google APIs into any Python script.
Where do you see Python going as a programming language?
Since I started learning Python way back in 1997 with 1.4(!), it has taken off like a weed. Back then, Python appeared on NO job listings whatsoever. In fact, at the startup where I learned Python, they had no expectations that anyone knew any Python. Today, it’s fairly clear that Python is everywhere and continues to grow in mindshare. Now developers can have an entire career writing Python code, and better yet, the next generation will also be familiar with it as it’s being taught in primary and secondary schools in addition to many colleges and universities worldwide!
The next step for Python is the growth of 3.x adoption. Many are skeptical when they hear that “no one” has been using it since it came out at the end of 2008 which isn’t true. It’s just that the term “backwards-incompatible” tends to scare the timid away and requires porting of dependencies before considering migration. Fortunately most experienced Python developers recognize that while it *is* a big deal, the core language itself isn’t changing in a way that 2.x developers would be completely lost. It’s not being rewritten from scratch. Much progress has already been made on the porting front, and it represents a good opportunity to continue Python’s growth and evolution as all new features are only going into the 3.x branch. When it first came out, I called for adoption to take a decade because it was backwards-incompatible — I have about two years left on this prediction, so I’m curious how things will turn out.
What is your take on the current market for Python programmers?
It can’t be a more exciting time for Python developers. With the growing mindshare and number of libraries and jobs available in all industries, the future for Python developers has never been brighter. I will continue to support the community with books, talks, volunteering, and general advocacy. I hope to continue bringing new engineers into the Python community, which while not a language feature, is one of the best things about Python itself.
Is there anything else you’d like to say?
Hope to see you all at PyCon next week or in one of my future courses!!
Thanks for doing the interview!