64 comments

[ 1.6 ms ] story [ 124 ms ] thread
I don't feel the answer really apply to a 7th grade, but I still find the answer interesting. Of course, it's PG so lots of the answer were about startup which is a bit confusing. I stay that because, to the question: "What's the range of salary of a plumber?" Well, a plumber building a new kind of tools could get billionaire which isn't really answering the question.

Still, interesting read way better than apple evilness and "why my kids like ipad".

Still, answering ANY salary range question with "... or you can start a business" is such a refreshing outlook! Certainly not one I was exposed to in 7th grade.
The difference is that programmers characteristically start technology startups, and plumbers don't. You can verify this empirically by scanning the Forbes 400.
the father of one of my high school teachers was a plumber, who got moderately wealthy from inventing a new tool.
"The richest programmers, like Larry Page and Sergey Brin, the founders of Google, become billionaires."

I've often replied to people who ask 'why do you do programming' with 'there's been more billionaires under 40 from programming than any other field'. I admit to making it up, and don't know (or care) if it's true, but it certainly gives them something to think about and smash the nerdy-IT guy image they invariably have in their heads.

> 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.

I've always loved the analogy of coding to cooking... a lot more than painting, or architecture.

I've just realised that I cook like programmer (or program like a cook). I take a recipe, then cook it multiple times changing different variables (iterating) until I'm satisfied with the results (shipping). The best thing isn't the food, but that you shipped something in a few days ;)
That isn't really an anomaly. That is how you get good at anything. Nobody gets it right the first time and those that only do something once are just dabblers.
And the best part (just like programming) is that with experience comes the ability to alter the recipes/variables and reliably predict the results, instead of stabbing randomly in the dark.
Your comment just sparked an idea for me.

I keep a cooking journal where I write down the effects of a particular iteration, but I don't do the same for programming. I think I might start doing similar for programming excercises. I'll keep a log and have a series of "recipes" that I iterate on and record the results. It should be both fun and help increase my skill set.

>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

I get the same feeling writing good software now as I did when I built cool stuff with Legos and Knex when I was in younger.

Same here about the LEGO. And I get the same feeling looking at a piece of good source code I do looking at the sheet music to a great song. Actually all three systems can have a kind of beauty to them, visually, in their patterns and they can either ring right or ring wrong.
Play with some set of Legos long enough, and you're bound to come up with something cool.
I'm curious to know how that 7th grader heard about PG. It doesn't really matter for the Q&A, but I'm still curious.

I'm guessing that either a Google search with "computer programming"-type keywords return's PG's page, or that it is via a real-life relationship...

I heard about PG at age 14 reading Slashdot over my dad's shoulder :)

(The essay was What You'll Wish You'd Known, so it's no wonder I got hooked.)

You'd be surprised at the kids these days. I was making websites (or trying, at least) since 2nd grade and I knew names like Jeffery Zeldman and Dan Cederholm from their books and blogs. If I had been interested in slightly different things, I could have easily run across PG earlier than I did.
Agree. I ran into pg in sophomore year in high school while working on an anti-spam project for a client.
Every-time a kid googled "hacker", he will come upon "How To Become A Hacker" by Eric Raymond.

So, probably a significant proportion of new programmers were "made" by Raymond.

This brings back memories. Read that article in 7th grade when I had just started using internet. It's still one of my favorite.
I wonder why you searched "hacker" then ?! :)
Yup, that's it. That's also how I discovered Python.
I found PG by looking up the Wikipedia article on "Nerd" and going down to the external links, where his "Why Nerds Are Unpopular" article is.
"... I found PG by looking up the Wikipedia article on "Nerd" ..."

How does the article correspond to what you see at school?

Thank you for answering my question.
I had been writing a little code in php (after dropping out of a backwater community college) when the big 2005-6 ajax web 2.0 wave struck. Digg was huge then and from there I found a site called Valleywag. They had some stuff about Paul Graham,snarky stuff I would read with a lot less interest today at 23 than I would then at 19, I stumbled in to Startup News by way of their link. I was curious; who was this Paul Graham guy? Turns out he was funding young entrepreneurs... I read all of his essays, and while I still haven't taken up writing in Lisp, I've been a fan ever since.
I found PG by googling "why" a day when my life was particularly miserable, and came across the same essay. It was number 2 in the search results.
10 year-olds learning to program is quite common, and I'm surprised that you're surprised that a 13 year-old might get far along enough in it to hear the name of a famous technologist.

(I personally learned about PG in 6th grade, after seeing a link from the Steve Yegge's blog [the one for his game; not the later one that made him famous].)

I'm not familiar with (presumably) the American education system. How old is a seventh grader?
Generally 12 to 13 years old
Awesome points. I agree with giving the programmer all the uninterrupted time to hack. As a matter of fact, allowing someone dedicated to his or her project to work without unnecessary intervention applies across the industry board. When you're in the zone, there's definitely no stopping you - and best to keep doing what you're doing while the creative juices are endlessly flowing.
What's the date on this essay? Most of the other essays say the month/year at the top.
> 2. What is the worst part of being a computer programmer?

> For me the worst thing about programming is dealing with external constraints... Often things you're told to do, and the programs your program has to cooperate with, are confusing or stupid.

> 10. What is the future direction of computer programming?

> ... programming seems to be changing to one in which you plug together programs written by other people...

So, according to that and in agreement with my own experience, everyday programming has more of its worst part...

Good answers and I applaud the effort given, but the questions feel like they were copied out of a textbook or teachers example and the word "programmer" inserted.

I think I would have tried to relate to kids today by explaining that someone has to write the complex video games they play and the browser they use to waste time on all their internet sites.

I misread that as "An interview with a 7-year-old" the first time around. (Or to be more precise, I read it as interview, 7, Paul Graham and filled in the blanks incorrectly.)

I like the questions and answers, though! Especially this sentence:

> The best programmers are the ones who are not only good at translating ideas into code, but who have the best ideas.

It was especially good timing, too, because I've been spending a lot of time learning about how to judge the quality of ideas lately, and what effect the quality of an idea has on a programmer's motivation.

Not to nitpick (I love the answers), but is this true?

> ...and we have drugs today that we couldn't have had in 1950 because programs were needed to discover them.

Probably just my ignorance. But do people in biotech think that software itself is helping them discover drugs? Googling for 'biotech' and 'programmer' doesn't seem to answer the question immediately. Just curious. I imagine we're nearly there, if not there completely. And that the molecules involved are fairly complex -- but I didn't know that we were that dependent on computers for biomedicine. Any examples? There was a recent article about mapping the human genome being less than a panacea. Maybe there are some good examples though....

(Fwiw, the reason I nitpick is that it might be the wrong way to look at it. Software helps researchers discover and produce new drugs. But it's important to distinguish that from software actually discovering new drugs. Seems like a small point -- but it's actually a very different emphasis. One can, for example, lead to an AI winter, if the focus is on producing this amazing self-sufficient software, instead of thinking about it as a tool. But maybe we're already there with biotech, I just don't know...)

Running clinical trials needs a lot of what most people would consider very boring IT (databases, data-entry screens, reports) but you gotta do it to get a new drug to market.
> 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.

I would add, well, in case you find it hard to find a decent job, you can always start your own startup, (if you will apply to YCombinator, you are going to find it even more fun).

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.

That's a truism in our industry that far too few people understand, much less take advantage of. If you're good, you don't need to worry about your career all that much. You can go off and travel, join flaky startups, and otherwise sabotage your "career", and know that if it all falls apart you'll land on your feet. So long as you're demonstrably good at what you do, you can always pick up a good contract on short notice.

There's a flip side to it, of course. If you find it hard to get work in this industry, you might want to consider the possibility that maybe you're not quite as good as you think you are.

Isn't that true of any career though? As a college student who will soon be attempting to get a job (presumably as some sort of software developer, since I'm a CS major), I don't think saying "you'll find a job if you're good" really tells me much. I don't KNOW if I'm good. I'm confident in my comprehension of Computer Science topics, my ability to learn and find out things I don't know, and my ability to present myself well in an interview. Will that be enough for an entry level job?
After a couple years of seeing code in the "job world", you will know if you are good or not. If you understand CS topics well and you enjoy hacking, then you are probably good.
After a month in any entry-level job in any field, you'll know, and all your co-workers will know, if you're "good."
Your "good"ness will present itself to you over the course of time. You'll be working at a startup and they'll lay off the entire development team, but ask you (and only you) to come back on a contract. You'll get a call out of the blue from somebody who's putting together a team and got your name from one of your old bosses who recommended you. These incidents might not mean much individually, but over a half dozen years you can assemble them to mean that you're good.

From there, you get something that's definitely not true of any other career (or at least only applies to a few). Doctors and lawyers generally don't get to disappear on year-long vacations and then drop back into their previous career path without missing a beat. Developers can. You can go on to lead the life you want, without having to think about how it will damage your career. It's all good from there.

Don't presume that you'll get a job as a software developer by virtue of having a CS major. You'll have to earn it or get lucky. By earn it, I generally mean that you have to be good at programming and be able to demonstrate it. Doing well in CS subjects is helpful but won't guarantee you a programming job.

That's a big part of why starting a company is so appealing for recent college graduates. You are forced to "earn it."

While I believe that this advice is technically true - it avoids a very critical issue and is thus misleading. The more important questions are: How "good" do you have to be to get an outcome comparable to the average lawyer or physician (or MBA grad)? How many other people are this good? How different are the outcomes between people who are "good" and those who are not "good"?

You could make the same argument about playing professional basketball or football. If you are "good" you won't have any problem finding work and you will make a lot of money. The problem is that only a vanishingly tiny minority qualifies for this standard, and players that are only marginally not good enough to make it to the NBA have significantly worse outcomes.

Computer programming is a fun intellectual challenge. If you want a conventionally successful career study law or medicine - professions which take protecting their wages and bargaining power seriously. Computer programming is something where you must be motivated by a love of the craft. I remember reading Stroustroup's C++ when I was in high school and he pointed out the trend toward the "deskilling" of computer programming. His comments had a somewhat cynical disillusioned tone to them and they turned me away from programming. When I have seen how the careers of some of my high school friends developed and how they feel about the experience I'm glad that I ran across Stroustroup's "advice"

> If you want a conventionally successful career study law or medicine - professions which take protecting their wages and bargaining power seriously.

I'm not sure what you're talking about here. My impression is that the legal field is glutted, and medicine is under constant pressure to cut costs and follow cookie cutter insurance-approved routines (deskilling?).

The deskilling of computer programming is counter-balanced by an even larger trend--the continual addition of new software frontiers and automation of existing industries.

On top of that, in terms of security, computer programmers are the alpha-dogs of the tech world. In a gloom and doom scenario, we have options. As a programmer I could edge out people with years of experience for positions in QA testing, software automation, technical support, pre-sales engineers, support engineers and other positions. Not that I have to, because software jobs are still plentiful compared to other fields, even in the current recession.

> I'm not sure what you're talking about here.

My take is that doctors and lawyers both have powerful professional associations that limit the supply of new doctors and lawyers by establishing competency standards. The AMA also explicitly caps the number of residency positions available in each hospital.

> If you want a conventionally successful career study law or medicine - professions which take protecting their wages and bargaining power seriously.

Because all we need to be successful is a little more protectionism, right?

Well, yes and no. Most of programming isn't really coding, it is easy to learn new keywords and syntax. Some of it is formal problem solving, which is abstract. But a lot of it is domain-specific knowledge. This isn't true if you just make websites and there's no-one with much experience because the technology changes every few years. If you don't use it, you lose it.

And the dark side is, ageism is rife in our industry. You could be an expert in language X with 20 years experience and every programmer knows that you could learn language Y easily enough. But you have to convince a hiring manager on the "graduate fast track" who wants someone who knows Y and thinks that anyone who hasn't made manager by 30 is a failure.

You can screw around and play the "rockstar" in your 20s, but it gets harder and harder as you get older, and the number of people able to live this lifestyle in their 40s is orders of magnitude smaller.

"This isn't true if you just make websites and there's no-one with much experience because the technology changes every few years."

Websites are in their own world though. An * expert web programmer has certain advantages. At any moment you can delve into blackhat stuff and make money. I'm not sure what you mean by website technology as always changing so maybe I'm about to say something dumb but here it goes - The syntax changes a lot, sure, but the basic ideas of automation and data work of mining, collecting, and organizing have always been around. Now they are just at the forefront.

* all this really means is you're a good programmer that understands how the web works and knows things like traffic generation, and how money is made on the web. But basically 90% of the real expertise and time is still with actual programming.

I mean you could have been an experienced user of say Cold Fusion, then spend 6 months living on a beach in Thailand and when you come back the industry is shifted to PHP.

As an analogy, think of the Swiss watch industry. There were people there with 30 years experience with the most intricate mechanical devices in the world. Didn't help them one little bit when the Japanese invented the quartz movement, the skills just weren't transferable.

Yes, but mechanical watches are still doing fine in the high-end of the market.

Did you know that, ironically, the British used to be the premier watchmakers, but they were driven out of the market in the 19th century by cheap competition from (amongst other places) Switzerland?

Not to be nitpicking either, but this is not an answer to the question:

> 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.

(Kid specifically asks for 'improvements', not 'affected'.)

I love posts like this! Great answers, pg. Here are mine:

1. What are some qualifications of a computer programmer?

The two most important qualifications are a love of details and a simultaneous appreciation of the bigger picture. You have to understand the landscape that your software will fit into. Then you have to be willing and able to dig down deep and be comfortable building stuff at the lowest level of detail. This takes a great deal of logical thinking, attention to detail, and personal focus.

2. What is the best part of being a computer programmer? The worst? The most challenging?

The best part is getting something working for the first time where nothing was there before. For me, this is so exciting that I still I do a "happy dance" every time. The worst part is the long hours alone. There's really no way around it; good software takes time and almost everything is done by someone alone at a terminal. The most challenging is finding a project big enough to not be boring but small enough that's it's too difficult to make good progress.

3. What’s the salary range in this career?

As an employee, $35,000 to $200,000. As a company owner, $0 to billions. Either way, the range is very wide and depends on many factors, some outside of your control. Like any other profession, you should be a programmer because you love to program, not because of how much money you'll make.

4. What is a typical day in the life of a computer programmer?

I bet there are as many typical days as there are programmers, so I just share mine. My day starts at my terminal, making changes to my current program based the mark-ups I did to my hard copy in bed the night before. I spend most of the day at the terminal writing code, changing it, trying it out, and taking occasional notes. I avoid interruptions as much as I can. I have a regular lunch and dinner and some social life, but not too much. Every day ends the same, in bed with whatever I worked on that day, reviewing and marking up. Incredible attention to detail is required and this is how I do it.

5. What is some advice you would give to young computer programmers?

Just build something. Nothing can be more important. Whenever you need to learn something, find a way to learn it, whether it's a class, friends, or more likely, a book or website. It you want to be a programmer badly enough, you'll find this approach natural. If you don't, you won't.

6. Is it easy to find a job as a computer programmer?

If you're good (and can prove it), yes. It not, not so much.

7. What was your most exciting project?

A computer program that wrote other computer programs.

8. What skills do you think young programmers need for the job?

The ability to think clearly and logically, good written and verbal communication skills, the discipline to keep working when they'd rather be with other people, and the determination to see something through to completion.

9. What improvement does computer programming give for human life?

Computer programming makes software that frees people up to think about and do things that weren't possible just a few years ago. The possibilites for those people are endless.

10. What is the future direction of computer programming?

This is always hard to predict, but I'd guess the direction will head away from writing all of your own software toward connecting a lot of already written software to accomplish the same thing.

11. Would life be a lot worse without computer programming? How much? Why?

Just compare life in a country with advanced technology to one without. Computer programming doesn't have everything to do with the difference, but it does have a lot to do with it. Much of today's advanced lifestyle has resulted from modern technology. Much modern technology came from software. All software came from computer programming.

[EDIT: Changed "Most software" to "All software" in #11. Thanks sundarurfriend. Duh.]

> Most software came from computer programming.

Why 'most'?

I'd assume programmers without a concept wouldn't be making any sort of 'software', so there's more to it than that.

  A computer program that wrote other computer programs.
Sounds interesting. Can you share more details about it (if possible)?
It's called metaprogramming.
Err ... Okay. If he meant that, I read too much in to it and was thinking something at a completely different level.
I was writing C++ way back in the day, and my friend told me about a guy who was so smart, "he could write programs that wrote programs for himself." I was shocked. The light bulb went on big time.
Reading the title, I thought I would find a totally different interview, kind of disappointing. Why does a 7th grader care about salary range (unless he wants to start really early). It seems he/she just used some questions from another interview.
<<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.>>

The sad truth :'(