Most programmers are familiar with the name Gerald M. Weinberg. Weinberg (“my friends call me Jerry”) is a prolific author whose work has shaped how programmers think of themselves and their place in the business world. One of the first to examine the psychology of programming, Weinberg is a champion of the profession. (For a list of his books, see this sidebar.)

In part two of our conversation, Weinberg shares his thoughts on the manager/programmer dichotomy, how today’s programming problems are bigger, and why foreign programmers are good for the profession.

The manager/programmer relationship Do you think managers who supervise programmers need to be former programmers?
Weinberg: No, you don’t need to be a programmer to manage programmers. These are two different things: the ability to manage and the ability to program. Some people have both—not very many. Some people have neither. Some people have one and not the other in varying proportions. There may be a slight negative correlation that I can tell over the years, if there’s any correlation at all.
Now, if you’re working with young, immature people, you might have trouble getting their attention if you don’t have some great programming stories to tell. But if you’re a programmer and you have a good manager, you’re very lucky. It’s the best thing that can happen to you. A good manager creates an environment in which programmers can learn rapidly and learn the right things.
You know what you have to accomplish. If you need resources to do it, they act as your servant. If you have emotional problems with your work, they help you get through that. They see that you associate with the right people, see that your succession of assignments is neither too simple nor too challenging. Those are the same things you want in a manager anywhere, and you do not have to be a programmer to do this.
Of course, it’s very easy to be a bad manager because you’re a good programmer. It’s easy for me to be a bad consultant because I know a lot about programming. When I work with my wife, who knows nothing about it—who is an anthropologist—she’s often much better than I am because she doesn’t get sucked into technical detail. She can see what the real problems are.
The real problems that managers have to deal with are not technical problems. They are presented as if they’re technical problems, but when you look behind them, you see that they are problems where people were not properly managed.

The basics are still the same Does the past indicate anything to you about the future?
Weinberg: The thing that really strikes me in some ways is how little it has evolved. I mean, I haven’t written production code for 25 years. Still, this morning I debugged something for a hotshot Web programmer who couldn’t find what was wrong with the Web site. So the really important stuff hasn’t changed. You program in one language or in another language. Is that one reason your books seem so timeless?
Weinberg: I think so. Because I’m writing about the psychological processes people go through, and you can change the language or change the machine power, but finding things wrong when designing things coherently, working effectively so your stuff interfaces properly with other people’s—those have nothing to do with the bits and bytes of a particular hardware or software, and we’ll always have those things.

Bigger problems Do you think it’s harder to be a programmer now, with such a plethora of languages to choose from?
Weinberg: No. Really good programmers can learn a new language in two weeks to the level of the average person who’s been using it for two years. We demonstrated that with some of our students. In one experiment, we sent them to a place where they had never seen the programming language before and brought them up to the average level in two weeks. They become a top person in four weeks, and in six weeks, they were teaching others how to do better with that language. So I think that anything to do with so many programming languages is just nonsense.
What has changed today is that we’re working on harder problems. We have much better tools now, but we have much harder problems in what we’re attempting to do. Thirty or 40 years ago, just getting the thing to fit into the memory of the machine was a major part of the work. Now that’s seldom a problem. Programmers today do not have to think in binary. But they have to think about bigger things, how things connect together, and so it is different.

Becoming social What skills do programmers most need to hone today?
Weinberg: Working with people is harder and requires a lot more cooperation today than it did then. We’re not doing a whole lot to develop those skills. In fact, we’re not selecting people for those skills. We’re still selecting them for analytical ability.

Opening the United States to foreign programmers What do you think of the move to bring foreign programmers to the United States?
Weinberg: I think it’s a good thing for the profession. Without that kind of competition, nobody has to improve. I call it the airport/hotel restaurant syndrome. If you’re stuck in an airport and you want to eat, you don’t have many choices. Why? Because the only customers those restaurants get are people who have to do business with them.
So it is with programmers. As long as there’s been this great shortage, employers have to take everybody. You have to eat it whether you like it or not. If we want a real improvement in the whole profession, we need to open it to the whole world. People who are good will thrive and the other ones will kind of drop off. Right now we don’t have that. We can support thousands of terrible programmers because companies are desperate.

This will happen over time. If you lose your job because your employers brought in somebody from India who will do the job for one quarter of the amount they’re paying you, that doesn’t feel really good. But if you’re good at programming, there should always be places for you. There won’t always be places for the ones who aren’t very good.
If you have a programmer build your Web site and the Web site doesn’t work, you go out of business. Right now, the programmer gets a second chance. He goes to work for somebody else. He’s got a lot of experience. He built a Web site. The fact that the site went out of business isn’t considered.
However, if employers had a choice, they would start asking questions like, “Oh, how did the Web site do? Can I look at it now?”
I try to help my clients realize that if they want to have good programmers, they must first of all learn how to retain the good ones and not drive them away. Because right now, there’s not a whole lot to choose from.