An interview by a 7th grader
paulgraham.com
paulgraham.com
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.
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.
That's a big part of why starting a company is so appealing for recent college graduates. You are forced to "earn it."
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"
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.
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.
Because all we need to be successful is a little more protectionism, right?
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.
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.
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.
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?
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.
Still, interesting read way better than apple evilness and "why my kids like ipad".
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.
I've always loved the analogy of coding to cooking... a lot more than painting, or architecture.
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.
> 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...
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...
(The essay was What You'll Wish You'd Known, so it's no wonder I got hooked.)
So, probably a significant proportion of new programmers were "made" by Raymond.
How does the article correspond to what you see at school?
(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].)
> 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'.)
> ...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...)
http://www.voiceofsandiego.org/science/article_4b79fc5d-4d5e...
On the other hand, it sounds like VS isn't exactly at 100% production yet:
http://wavefunction.fieldofscience.com/2010/04/will-virtual-...
But getting there. Based on your HN profile, I defer to you obviously. Curious subject. E.g., based on the wikipedia article, I had no idea the range that Berkeley DB was being used for...
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.]
Why 'most'?
A computer program that wrote other computer programs.
Sounds interesting. Can you share more details about it (if possible)?> 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).
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 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.
The sad truth :'(