Summer Reading and Startup Program
putko writes "Paul Graham, lisp hacker and creator of the company that became Yahoo! Store has an essay on what to do while in college. Previously, he's covered what high school students should do. He's also begun a summer startup program, which invites people with good ideas to try out for some startup capital. The deadline is March 26th." From the page: "We're going to call this project the Summer Founders Program, and it preserves many of the features of a conventional summer job. You have to move here (Cambridge) for the summer, as with a regular summer job. We give you enough money to live on for a summer, as with a regular summer job. You get to work on real problems, as you would in a good summer job. But instead of working for an existing company, you'll be working for your own; instead showing up at some office building at 9 AM, you can work when and where you like; and instead of salary, the money you get will be seed funding."
Me? I'm an old cuss working in a small shop, converting legacy stuff with new tools. I'll save them a bundle. I may release some of my code open source, just so others can benefit. There's so many needs around me, it's more than I can keep up with. Occasionally I come across something that'd be great beyond these four walls. If only I could take a break and expand upon it...
A feeling of having made the same mistake before: Deja Foobar
I found it odd that Paul Grahan considers that
/. debate on whether a CS education should concentrate on teaching concepts or things like widgets (I couldn't believe it when somebody claimed that this should be part of a CS curriculum) -- I just wanted to point out that, in my opinion, a CS grad with (only) high-school knowledge of math probably won't reach too many heights in his field.
/. crowd, who will undoubtedly reply that "who needs a college degree in the first place?! the cousin of my friend of friend is such a great hacker, he knows C++ inside out and never got a degree and he's now landed the best job". Just know that some people derive other pleasures from working in CS, apart from Graham's favorite -- "hacking".
In fact, the amount of math you need as a CS major is a lot less than most university departments like to admit. I don't think you need much more than high school math plus a few concepts from the theory of computation.
I can hardly think of any CS field where high-school math is enough for doing anything serious. The fields where more math is required are too many to list: starting with graphics (analytical geometry), algorithms (obvious), networks (statistics, graph theory) and ending with the Bayesian spam filter, with which Graham is usually associated (if my memory doesn't fail). I won't go into the usual
I can already foresee the usual reaction of the anti-intellectual
Perhaps for some it is the best years of their life. However, I find my self much happier now all of that is behind me. I am fortunate in that I have a passion for the work that I do. In contrast, I could not say the same for college.
I believe the best time of one's life can always be the present as long as he pursues his ideals and goals with a passion.
I enjoyed the most recent 'what to do in college' essay on PG's site. But considerably less so than I did his 'what to do in high school' essay.
Insofar as Paul's advice is geared toward the general student and not just the "I want to be a God programmer-- full speed ahead and damn the torpedoes" student, I'd have to say it's a bit lacking and a bit limiting, even despite the great advice that it does give. He suggests majoring in something like math, skipping psychology, philosophy, the study of other languages, etc etc etc and concentrating on "hard problems". Implicit in this is
1. That the social sciences have no "hard problems";
2. That the sum total of one's worth as a thinker is held in their ability to solve a branch of "hard problems";
3. That college is fundamentally about learning how to solve "hard problems".
If you want to have a balanced, open-minded outlook on life, you have to reject 1 and 2. If you want to have a realistic chance at being happy in life, you have to reject 3.
My advice to the aspiring programming god in undergrad is to heed Paul's advice up to a point, but also to remember three things:
1. Just because 95% of people in social sciences aren't as smart as you are, that doesn't mean the social sciences themselves aren't worthwhile. Dig a little. Branch out. You'll be better for it.
2. Just as, or more important, than going to college to learn to program, job skills, how to solve "hard problems", or however you want to put it, is that college is the greatest, most well-timed, and most forgiving classroom where you learn how to life your life. Don't forget that or take it for granted. Get out and have some fun and meet some people.
3. Anyone who's really damn good at programming is abnormal. This isn't a valuative statement; you've got some genes in you that are simply not found in a similar configuration in the vast majority of the population. Now, this is going to involve some tradeoffs. Learn to accomodate them and/or live with them, because you're stuck with the bad along with the good. Be OK with that.
And good luck.
Mike
Reminds me of my favorite math prof in college. When he came into the country, he had two employment options. One was with NASA (his latest book that I know of was concerning the orbits of artificial satelites). The other was at my university.
He likes to teach. Basically it gives him more of a sense of accomplishment than what he would have been doing with nasa. Go figure.
Personally, I'm glad he made the choice that he did. I miss the demented leprechan...
Everything I need to know I learned by killing smart people and eating their brains.
i have to strongly agree. i've been doing languages and operating systems, networks, graphics, essentially everything, for a long time now. except for databases.
i've always had scorn for databases. until i needed one that was fault tolerant and scaled and had certain distribution properties. and now i'm several months in, and its by far the most interesting and difficult distributed systems problem i've ever looked at. i have alot of catching up to do with the state of the art. and i'm regretting not having at least mastered the basics.