Photo of Philip in the wilderness
Hi, I'm Philip Guo!

What do you work on?

I am a computer science researcher and teacher specializing in human-computer interaction and educational technology. I am now finishing up a postdoctoral research position at MIT and will soon be moving to upstate New York to start my new job as an assistant professor at the University of Rochester.
One area I am super passionate about is creating tools to help people learn programming. Since 2010, I have been building and maintaining Online Python Tutor, which is now the most widely-used program visualization tool for education. Over half a million people from over 165 countries have used it for learning Python programming, often as a supplement to textbooks, online tutorials, Khan Academy videos, and MOOCs (massive open online courses). Here is a one-minute YouTube video intro:

How did you learn to program?

I grew up in the 1990s right as the Web was in its infancy. I loved playing computer games, making silly Photoshop graphics, and putting together ugly-looking personal websites with animated GIFs.
However, since neither of my parents knew how to program, and there were no role models around to teach me, I didn’t learn programming until AP Computer Science class in 11th grade. That brief exposure got me hooked, and I decided to major in Computer Science in college. I learned most of my programming through college classes, summer internships, and on-campus research projects.
I recently wrote about my programming backstory on my personal website, and the story got picked up by Slate, NPR, the BBC, and a few other news outlets. Read more here.

What do you do when you’re not programming?

If I'm not programming, then I'm writing about programming, of course! :) No, just kidding, I don’t actually write that much about programming.
But I do quite enjoy writing. I write a ton on my personal website, mostly as a way of clarifying my own thoughts. Writing is how I think. I don’t truly understand something until I get it down on (digital) paper. Here are some of my articles.

What’s your one piece of advice for new programmers?

Find a mentor. This is so easy to say, but often so hard to do. No matter how awesome educational technology becomes, it’s still impossible to replace a good human mentor.