This week we welcome Stephan Deibel as our PyDev of the Week. He is one of the co-founders of Wingware, the maker’s behind the popular Python IDE, Wing. I believe I met Stephan once at PyCon several years ago, although I doubt very much if he remembers it. Regardless, as a happy user of Wing, I’ve found his and his staff’s help invaluable. I hope you enjoy getting to know him as much as I did.
Why did you start using Python?
I first used Python in 1998 to develop a GUI prototype for a clinical workstation. I was immediately impressed with how much more productive Python was than C, C++, or Object Pascal, which I had been using the preceding 8+ years. Around that time I had also tried out Java, which was pretty new then, and did some consulting work with VB.
From this experience of doing, or attempting to do, real work in several languages over a fairly short time, it became quite clear to me that I had wasted an awful lot of time up to that point fighting poor language design. Python was a revelation and over time it really changed my life, by enabling me to get far more done than I would have without it.
Of course I did go through the usual phases of worrying about syntactic white space and lack of static typing. I got over white space very quickly, but spent a few months worrying about type checking until I finally figured out that it simply is not an issue.
What other programming languages do you know and which is your favorite?
I’ve also programmed in C, C++, Object and non-object Pascal, VB, Javascript, Java, Basic, Assembly, Lisp, Prolog, SQL, PL/C, Natural2, and a few other proprietary languages the names of which I can’t even remember. Python is by far my favorite and at this point I try hard to avoid writing in anything else. I still have to maintain various C extension modules written many years ago for performance reasons, but at this point Cython is the way to go in the rare cases when CPython’s real-world performance is actually an issue. Yes, sorry, I am focusing on CPython and not the other fine Python implementations because CPython is still what most people use.
Javascript seems to be the one other language I can’t avoid, even with the availability of Brython and the various Python to Javascript compilers. So far I’m OK with that, mainly because everything I’d ever want to write in Javascript has apparently already been written and can be found on the web, in freely usable form.
What projects are you working on now?
Since 1998 I’ve been working on Wing IDE, a commercial integrated development environment for Python. Wing IDE is written mainly in Python, and is developed, tested, and debugged with itself. This is actually a lot of fun. I’m usually running the current sources and very quickly benefit from new features as they are added to the product.
Wing IDE came out of the realization that Python is so much more productive than other languages. The idea back in 1998 was that more people would move to Python (rather than, say, VB) if there were a real IDE for it, and so I co-founded Wingware with John Ehresman. We soon found out (duh!) that it’s pretty hard to write an IDE, and 17 years later we’re still at it with plenty of ideas for the future. But daunting as it can sometimes be, it is great fun working on a product that serves a very large and diverse user base. I love interacting with users from all over the world, many of whom have interesting stories to tell and great ideas for improving the product.
Doing all of this has really defined my life, allowing me a great deal of flexibility in where I live, when and how I work, and what I work on. To paraphrase Paul Everitt, Python is the secret sauce that makes this possible. I’m very grateful to all those that have worked on Python.
Which Python libraries are your favorite (core or 3rd party)?
Lately I’ve been doing some work with Flask, which I really like. It’s extremely quick to set up and very Pythonic in how little I have to do to get a working web page. I’ve also enjoyed working with reportlab to generate PDF files and I have some nice memories of using Beautiful Soup some years ago.
While I’ve not used it for real work (other than supporting users) I have also been impressed with web2py. I just love that their template language manufactures fake Python stack frames so you can debug templates with any Python debugger.
In the standard library, itertools is pretty indispensable and the collections module has some interesting data types that are very useful when needed.
Where do you see Python going as a programming language?
I don’t think the world really understands Python yet. It is becoming more and more widely used, and it’s in the news a lot more often. But most programmers are still wasting vast quantities of time fighting poorly designed languages because they think Python is too slow or not thread-friendly (because of the GIL) or not robust enough for production use or just because their companies dictate that they use something else. It’s quite possible that confusion, fear, and doubt about Python 3 slowed Python’s growth considerably from what it would have been.
I think this is all going to change. We’re going to see the software development industry as a whole make a real solid move away from clunky compiled languages towards more productive interpreted interactive languages. Robust and mature, Python is well-positioned to become the language most people will be using 10 years from now.
At PyCon some years ago, Sean Reifschneider, one of the founders of tummy.com, gave me a laptop sticker that says “Python will save the world. I don’t know how, but it will.” I hope it’s true!
Is there anything else you’d like to say?
I don’t like the software industry’s focus on whiz kids, overnight success, and billion dollar ideas. In actual fact, it’s still hard work over a long period of time that creates great software. To me, Python embodies this. It is filled with great ideas, many borrowed from others, but combined into a high-quality whole, through careful design and much care by a respectful community of passionate contributors.
Thanks so much!