Mind Matters News: You mention that, for those who want to learn programming today, the situation has changed, compared with earlier years. How has it changed?
Jonathan Bartlett: I grew up around computers. I’ve been programming computers since the 1980s, and have been around the development scene for a long time. When I grew up with computers, you had to really know how they worked to even use them. You had to know how to use a command line, format a hard drive, set up networking, etc. Modern computer users don’t know any of these things. Therefore, while knowing how these things worked used to be a prerequisite for even using a computer, nowadays people come into programming lacking all of this background knowledge.
It’s great that we have automation for end-users. The problem, however, is that programming often deals with the hidden parts of the computer. Therefore, while operating systems have essentially “hidden” the hard parts, programmers need them “un-hidden” in order to work with the system. But the background knowledge for how this happens is largely missing.
The goal of my book is to re-insert this background information for new programmers. Knowing the basics of how computers work, how files are handled by the operating system, how computers handle networking, how everything on a computer is represented by numbers are all important for computer programmers, but these details are often missed by introductory books.
Mind Matters News So how do you get people whose experience is no more than “I use a computer at work” to “think like a programmer”?
Jonathan Bartlett: I’m a big fan of training our intuitions. What sets good programmers apart is that they have a keen sense for what is really happening inside the computer. They have a “feel” for what the computer is doing with their code. When you have a sense and a feel for the computer, then you don’t have to memorize details about your programming language any more than you do about the English language. It just comes naturally.
The book tries to train intuitions in several ways. First of all, it gives some history of computation, so that the reader has a background of why things are the way that they are. It leads the user through not just how things work now, but the thought process that led us here. What problems were people trying to solve? What were the motivations behind different features? Helping new programmers see the context surrounding different technologies gives them a better feel for the process of developing technical solutions.
Second, I have found that some new programmers are so used to computers just “knowing” how to work that they don’t understand how specific and exact you have to be with them. Computers will do exactly what the program says, not what you “meant” it to do. Therefore, I spend a chapter showing students how computers work on the inside. Chapter 5 introduces a paper computer, with 64 bytes of memory, where you can do all the steps of a computer yourself.
Finally, I have a lot of exercises for the reader that are aimed at training their intuition. I have them take programs that work and add features to them. I challenge them to remake previous programs using new ideas.
Mind Matters News It sounds like you are demystifying what the computer is doing.
Jonathan Bartlett: “Demystifying” is a good way of putting it. I spend a lot of time getting readers to look under the hood. Not just How does a computer read instructions? but How does a computer find another computer on the internet? How is data stored in files? How does everything wind up being represented by numbers? What does the file extension do? How is data transmitted on the Internet? People use computers as if they are magic boxes, but a programmer has to get behind the magic and actually know where the data is going and how.
I also offer a huge glossary of terms. To many people starting out in computer programming, it seems like programmers are speaking a different language. Readers can look up the terms they need to know on a regular basis.
Mind Matters News: Thanks for joining us, and good luck with the book!
Note: Computer programming ranks among the best jobs of 2022, according to U.S. News
You may also wish to read: The needless complexity of modern calculus. How 18th century mathematicians complicated calculus to avoid the criticisms of a bishop. The fact is, calculus is taught in such a convoluted way that the natural beauty of it is almost always greatly distorted.