June 2010 (A seventh grader sent me these interview questions for a school project.) 1. What are some qualifications of a computer programmer? Programmers tell computers what to do—not in a human language like English but in special unambiguous languages called programming languages. Commands written in a programming language are called code. Programmers should be able to translate their ideas about what a program should do into code that's reliable, efficient, and easy to change later. The best programmers are the ones who are not only good at translating ideas into code, but who have the best ideas. 2. What is the best part of being a computer programmer? The worst? The most challenging? For me the best part is building things. Although programs aren't physical, when you write a good program you get the same feeling of achievement you'd get from making something like a piece of pottery or a house (depending on how big the program is). For me the worst thing about programming is dealing with external constraints. You don't usually have complete freedom when writing a program. Usually your boss (or your customer) tells you what your program has do to, and it has to cooperate with other programs to do it. Often things you're told to do, and the programs your program has to cooperate with, are confusing or stupid. So you don't get to do things the way you'd like to. What's most challenging about being a programmer depends on how good you are. For bad programmers, like bad cooks, the mere mechanics of programming are challenging. Whereas good programmers, like good cooks, can make whatever they choose, so for them the big challenge is deciding what to make. 3. What's the salary range in this career? The range is very wide, because some programmers start their own companies and if these companies succeed they can make a lot. The lowest paid programmers seem to make around $35,000 a year. The richest programmers, like Larry Page and Sergey Brin, the founders of Google, become billionaires. 4. What is a typical day in the life of a computer programmer? This varies so much that there's no one answer. Programmers who work for bureaucratic organizations like governments or big companies may spend nearly all their time in meetings or responding to email, and hardly any time actually writing code. Whereas programmers who work for startup companies or on research projects spend many hours a day programming. Interruptions are very bad for programming, so people who spend a lot of time programming often do it at times when they'll be left alone, like late at night or early in the morning. 5. What is some advice you would give to young computer programmers? Programming is something you learn by doing. So don't be passive. Don't wait for classes to teach you how to program. The way you learn is by starting projects of your own. (This is true for most fields, actually, not just programming.) 6. Is it easy to find a job as a computer programmer? If you're good it's always easy to find programming jobs. Even when the economy is bad there is a shortage of good programmers. 7. What was your most exciting project? Probably the program I wrote in my last year of college that could understand some sentences in English. It was not impressive by present day standards, but it was more sophisticated than most of the programs we were writing in our classes in those days. 8. What skills do you think young programmers need for the job? Mostly they need the same skills programmers of any age need. If there is one mistake that young programmers tend to to make, it's that they tend to over-engineer things. They get carried away with their own cleverness and build things that are overcomplicated. So a truly precocious young programmer would be one who'd learned not to do that. 9. What improvement does computer programming give for human life? Computers are so widespread now that there is practically no aspect of life that isn't affected by programming. 10. What is the future direction of computer programming? Technological change is always hard to predict, but programming seems to be changing from a kind of work in which you build everything yourself to one in which you plug together programs written by other people. So it is becoming more important to know what other programs you can use as building blocks and how to stick them together, and less important to know how to build basic "plumbing" yourself. 11. Would life be a lot worse without computer programming? How much? Why? One way to answer that question is to look at what things were like before computers were widespread: in, say, 1950. There were a lot of things you couldn't do then you can do now. Some are obvious, like make cell phone calls. Others are more subtle: aircraft today are more efficient because the calculations for their designs are done with computers instead of manually, and we have drugs today that we couldn't have had in 1950 because programs were needed to discover them.