Interviews News

Self-Taught Programmer: Interview with Cory Althoff

The topic of becoming a professional programmer from scratch is extremely hot nowadays, and its upward trend isn’t going to change any time soon. The software development industry is growing faster than many others, finds new applications in other industries and naturally craves new minds at an extremely high pace. The problem is, there are a lot of development opportunities, but not enough people to do the job. As a result, a lot of outreach programs and courses are being run by different development communities, commercial companies of different sizes and independent instructors to serve the growing demand for new professionals. Many people are coming from the non-CS world. One of the most vivid examples in the Python world is the scientific/data analysis segment growing incredibly fast, which has caught up with Python web development within just a couple of years. Not surprisingly, a big portion of programs and courses are intended for people with little to no previous programming knowledge.


Today we publish an interview with Cory Althoff, a true self-taught programmer who graduated with a political science degree, but later decided to jump into software development. He met difficulties on the way to becoming a professional developer, but after a year of self-study, he learned to program well enough to land a job as a software engineer at eBay. He now lives his new happy life. Just a half-year ago he published The Self-Taught Programmer: The Definitive Guide to Programming Professionally book to help other people willing to enter the industry. The book got some traction and many positive reviews on different book platforms including Goodreads and Amazon. Read on to learn more about the man, his experience, and vision.

– Hi Cory, could you tell us a bit about yourself and how you became a self-taught programmer?

Hey there. My name is Cory Althoff. I am 28 years old, and I graduated from Clemson University with a major in political science. After graduation, I was living in Silicon Valley, and having trouble finding a job, so I decided to learn to program. After a year of self-study, I landed a job as a software engineer at eBay, followed by a position as a software engineer at a startup in Palo Alto. Eventually, my girlfriend and I left our jobs to backpack around Southeast Asia. We spent two months traveling in Thailand, Malaysia, Australia and Bali, where I came up with the idea to write The Self-Taught Programmer: The Definitive Guide to Programming Professionally.

– What was the idea and the motivation behind writing your own book?

My journey learning to program, and my experience at my first job as a software engineer were the inspiration for my book. The primary challenge I faced learning to program was that I didn’t know what I needed to learn. Most of the beginner programming books focus on helping you learn to write basic code in a language like Python or Ruby. But if you want to program professionally, there is so much more you need to learn: such as OOP or functional programming, version control, regular expressions, IDEs, best practices, computer science, developer tools, etc. To quote my book, “Many of the subjects covered in a single chapter of this book could be—and are—covered by entire books. My goal is not to cover every detail of every subject you need to know. My goal is to give you a map—an outline of all of the skills you need to develop to program professionally.” I wrote this book to give anyone interesting in learning to program professionally an overview of what they need to learn.

– Was Python your first programming language? How long have you been programming in it?

Yes, Python was the first language I learned. I’ve been programming in Python for around five years now. I also program in JavaScript, and I’ve dabbled in a few other languages, but Python is still my favorite language.

How long did it take you to learn Python from scratch? How long do you think it takes a person on average to become an intermediate-level Python programmer?

It took me a year to become proficient in Python. That is the amount of time I would estimate someone could become an intermediate Python programmer (starting from scratch) if they are willing to put in the time and program seven days a week. However, I’ve been programming in Python for five years, and I am always learning more about the language, so it is a never-ending journey.

One of the sections of your book is dedicated to PyCharm. At which stage of your development journey did you choose PyCharm and why?

When I first started programming with Python, I used IDLE. Eventually, I switched to PyScripter. When I got to eBay, everyone on my team used PyCharm. I decided to give it a try, and I’ve never gone back!

– What are your favorite PyCharm features that you can’t imagine working without?

My favorite PyCharm features are local history, the debugger, the command line, version control, and database interfaces. PyCharm’s local history feature saves me a ton of time. Anytime I make a change, PyCharm automatically saves it, which allows me to experiment much quicker because I know I can always quickly and easily revert to my previous code. Next up is the debugger, which I couldn’t imagine programming without. My favorite features of the debugger are the ability to set a conditional breakpoint and execute code once you are there. Finally, being able to use the command line, version control and connect to a database without leaving my IDE saves me time and makes me a more productive programmer.

– How much time did it take you to learn PyCharm from scratch? Do you think learning tools is a big part of a developer’s trade?

I was able to start using PyCharm immediately, but it took me a day or two to learn all its major features. Once I finished reading the Quick Start Guide, I was all set. Learning tools is a big part of a developer’s trade. When I was learning to program, I had no idea that was the case. That is why I chose to make learning programming tools one of the five sections of my book. Beginners need to learn to program, but they also need to learn to use tools like version control and their IDE, which they often overlook.

– What do you think about Python as a first language for learning programming?

The best first language to learn is a debate that always comes up in the Self-Taught Programmers Facebook group. The argument usually ends up being whether it is better to learn a high-level language like Python first, or a low-level language like C. I think Python is the best language for a new programmer because it increases your chances of successfully learning to program. When someone is learning to program, they need to get a “win” as fast as possible, like writing a program that does something interesting. If they can get there, it significantly increases their chances of continuing to learn. The problem with starting with a low-level language like C is that it dramatically increases the time it will take to get that first win, and therefore enhances the likelihood that person will give up before learning to program. Some people advocate for languages like JavaScript and Ruby instead of Python. But for me, Python is the best choice for beginners.

– What do you think makes Python so unique as a language?

Readability. I’ve never used a language easier to read than Python, which of course was one of Guido’s central insights when developing it. Python’s readability is one of the reasons I teach it in my book.

– Is there anything new you’re currently working on at the moment?

Currently, I am writing a new book called The Self-Taught Web Developer, managing the Self-Taught Programmers Facebook group, which just surpassed 16,000 members, and working on a new project called Take a Class with Me. Every month, I pick a technical course that participants take as a group. Then, each week, I organize a Slack chat where everyone can get together and discuss the material from it and help anyone that is stuck. Right now, the courses are for beginners, but next month I am adding courses for advanced programmers covering topics like Angular and machine learning. Make sure to sign up for the Take a Class with Me newsletter if you are interested in participating.

– Please recommend two other books on development you enjoyed reading recently or just consider important.

My two favorite technical books are The Pragmatic Programmer by Andy Hunt and Dave Thomas, and Problem Solving with Algorithms and Data Structures using Python by Brad Miller and David Ranum. The Pragmatic Programmer blew my mind. I learned so much from it, and it significantly improved me as a programmer. Problem Solving with Algorithms and Data Structures using Python is the best book on data structures and algorithms I’ve ever read. It is so much easier to read than the books that frequently are recommended, like Introduction to Algorithms. I would never have been able to pass my first technical interview without it.

– Thank you for the interview, Cory!

Thanks for having me!


Cory Althoff is a self-taught programmer and writer. He has worked as a software engineer at eBay, as well as several startups in Silicon Valley, despite majoring in Political Science at Clemson University. When taking a break from programming, you can find him reading, writing in his blog, and traveling—the idea for "The Self-Taught Programmer" originated in the back seat of a taxi in Bali. Currently, he lives in Portland, OR.

image description