The Self-Taught Programmer: An Interview with William Springer II, PhD

If you’re a self-taught developer, you might feel like you’re missing something. Like there’s a huge gap in your knowledge.

Sure, you’re employed, but you don’t feel like a strong developer.

You know your knowledge is missing vital computer science topics.

If you’re like a lot of other self-taught developers, you plan on revisiting these topics, eventually. But you might not have the time to sit down and study for hours. We understand.

Fortunately, there’s an easy-ish way to obtain the knowledge you’re lacking – two books, written by William Springer II, PhD. They’re titled A Programmer’s Guide to Computer Science: A virtual degree for the self-taught developer, Volumes I and II. Of all of the books available today, these two are useful for the self-taught developer, especially if you’re time constrained, and want to learn computer science topics quickly.

We interviewed William to pick his brain.

Here’s what he had to say.

Don’t feel like programming has to be your life.

Q: Hello William. Can you tell us about yourself?

William: That’s a tough question because it’s so broad. Let’s see.

So I’ve been a software developer for twelve years now. Prior to that I’ve taught middle school math and undergraduate computer science, tutored high school students, edited a textbook, and a few other things. I liked teaching, but the middle school students took advantage of me being deaf and tenure-track positions at the university level are really hard to come by.

On a personal level, I’m into science fiction and complicated board games, and have an interest in photography and model trains. I’m not into video games as much but I play them with one of my kids.

Q: We’ve found your books to be quite useful. What inspired you to write them?

William: While I was working on my PhD, I was the TA for Foundations of Computer Science. We used several different books over the three years I taught that class and I didn’t really care for any of them. I always felt like I should just write something better.

Then I started giving conference talks on related subjects and found that there was an audience of people who already worked as programmers but wanted to know more about computer science, and that gave me the kick to finally get around to writing my books.

Q: Are self-taught developers generally poor programmers?

William: Honestly, I think most of us are self-taught to some extent. Like a lot of developers, I started programming for fun as a kid and eventually started doing it professionally. My undergraduate degree was essentially “here’s a semester of C++, now pick up whatever else you need” - the focus of the degree is on the theory, not any particular language. So I wouldn’t say that someone who is self-taught is going to be a poor programmer, just that they may not be aware of some concepts that could make them more effective.

Q: How do you think self-taught developers can improve in regards to CS fundamentals?

William: This is where I plug my book, right? ;-) But seriously, I’m actually a proponent of at least getting a grasp of basic graph theory, because so many programming problems boil down to graphs. My understanding is that a lot of the coding challenge sites online have problems that can be attacked much more efficiently if you’re familiar with the standard algorithms, but it’s not an area where I have personal experience.

Q: Should self-taught developers study mathematics? Will it help them improve as programmers?

William: I think it really depends on what you want to accomplish. I minored in math as an undergrad (it was pretty much required for my program) and took a few graduate classes on Combinatorics for fun, but the vast majority of the time I don’t use anything more involved than algebra, logarithms, and graph theory. That said, someone doing something like quantum computing or machine learning would obviously need quite a bit more.

Q: Do you have any advice to offer new developers working their first job?

William: Nobody expects you to know everything; heck, nobody even really expects you to know what you’re doing. Ask questions. We’d rather spend time walking you through things than have you do them the wrong way and have to fix it later. As a senior developer, I actually enjoy mentoring new hires, and if I’m not under a tight deadline I’m always happy to spend time going over things you might be having trouble with.

Q: If you started to learn programming from scratch, where would you start?

William: When I first started programming as a kid, I copied the BASIC programs out of the back of 3-2-1 Contact magazine and saw what they did. Other languages that I needed, I picked up a book that looked good and worked through it. If I was starting over now, I’d do the same thing: pick a language (probably C#), get an introductory book on it, work through at least the first few chapters, and then try to build something.

Q: Do you have plans to release any other books?

William: Y’know, when I was on Hanselminute a couple years ago, Scott asked if there was going to be a volume 3 for the Programmer’s Guide to Computer Science series and I said no, because I said what I wanted to say about the subject. That’s still true (although I might add a chapter to volume 2 at some point). But there are other topics I’m interested in talking about. I’m actually almost done with A Programmer’s Guide to Personal Finance and then A Programmer’s Guide to Professional Software Development is in the outline stage.

Q: Any final pieces of advice you want to offer?

William: Don’t feel like programming has to be your life. Yes, some people code at work all day and then go home and code all evening for relaxation. Other programmers (I know a few) don’t even have a personal computer at home. It’s fine if programming is your passion, but if it’s just a job you enjoy, that’s ok too.

  That wraps up the interview. We are greatly appreciative to William for taking the time to answer our questions. We hope his answers and advice inspire you in some way. Give William a follow on Twitter, check out his website, and go buy his books!

A Glimpse at Volume 1

If you’re a self-taught programmer, a bootcamp grad, or even if you have a degree, this book is a must. - Matt F

A Programmer’s Guide to Computer Science, Vol. 1 will be your go-to resource for picking up computer science topics, fast. The book is short, but don’t let that fool you. It is packed with information which will fill the gaps in your knowledge. This book is a must-have!

Topics Include:

  • Computer Science Fundamentals
  • Graphs and Graph Algorithms
  • Non-Graph Algorithms
  • Problem-Solving Techniques
  • Complexity Theory

A Glimpse at Volume 2

A Programmer’s Guide to Computer Science, Vol. 2 picks up where volume one left off, offering more advanced material. As a self-taught developer, you might have neglected these topics altogether. But, you definitely want to become a more effective developer, else you wouldn’t have read this far. Go grab a copy of volume 2 along with the first volume!

Topics Include:

  • Proofs
  • Security
  • Hardware and software
  • Operating systems
  • Networks
  • Databases
  • And much more



Disclaimer: this post contains affiliate links. However, we only recommend books that we have personally read and highly enjoyed. We may receive a (very) small commission if you purchase any of the books from this list (at no additional cost to you). Thank you for the support!

comments powered by Disqus

Related Posts

Security & Cyber Crime Blogs You Should Be Reading

Digital threats are plenty and cyber attacks are a constant concern. As developers, we should be aware of the threats our software may encounter as we develop applications.

Read more

Learning Programming for Free in 2024: 6 Websites to Check Out

In the modern world, people can switch careers several times during a lifetime. And going for an IT-related profession, for example, becoming a software developer, makes a lot of sense.

Read more

Routing with Angular: A Quick Tutorial

Today, we’ll be looking at the navigation and routing aspects in Angular. This tutorial is a continuation of our previous starter tutorial where we created a simple Angular application, installed Tailwind CSS, and created a navigation bar.

Read more