Startups! (I do startups.)
The path to success at startups is a long one and you aren't guaranteed to succeed. But you can increase your chances massively. Programming is a critical skill; I think most new big companies have substantial programming components, though a lot of the low-hanging software-only ideas are plucked, at this point. So I wouldn't only study programming.
Social skills are pretty damn important. Social skills I am working on for my job: body language; talking to strangers; pitching; quickly evaluating people; overcoming social anxiety & aversion; public speaking; 1-on-1s; writing in order to be understood.
To address your other bullets: Internships are great, definitely do them. I'd only train "networking" to the extent of "getting people to perceive value when they meet you". I wouldn't spend too much time on "networking events" because there's a horrendous negative selection effect there. Leadership is too vague and you should define what you mean by that. Only do research if you're interested in it, but if you are, you should do a lot of it and focus on it because you could make actual useful progress and that's impressive. (If you're not interested you probably won't make progress so don't waste your time.) Explore career development centers but mostly ignore what they say. Studying abroad is something you should do if it'll be fun and edifying, not for any direct-to-resume purpose.
I'd like to solicit advice since I'm starting at Stanford this Fall and I'm interested in optimal philanthropy.
First off, what should I major in? I have experience in programming and math, so I'm thinking of majoring in CS, possibly with a second major or a minor in applied math. But switching costs are still extremely low at the moment, so I should consider other fields.
Some majors that could have higher lifetime earnings than straight CS:
Thoughts?
Stanford actually has salary data for 2011-2012 graduates by major. CS has highest earnings, by quite far. The data is incomplete because few people responded and some groups were omitted for privacy, so we don't know what e.g. petroleum engineers or double majors earned.
Should I double-major? There are some earnings statistics here; to summarize, two majors in the same field doesn't help; a science major plus a humanities major has lower earnings than the science major alone; greatest returns are achieved by pairing a math/science major with an engineering major, which increases earnings "up to 30%" above the math/science major alone. I'd guess these effects are largely not causation, but correlation caused by conscientiousness/ambition causing both double majors and higher earnings.
I could also get minors. I'm planning to very carefully look over the requirements for each major and minor, since there do seem to be some cheap gains. A math minor can be done in one quarter, for instance; a math major takes only a bit more than two quarters.
I have a table with the unit requirements of each combination of majors and minors. Most students take 15 units a quarter. Here are some major/minor combinations I could do:
Cal Newport argues that this sort of thing a bad idea because hard schedules do not actually impress employers more.
Would employers care about double majors in undergrad if I also get a graduate degree? I will do a master's degree or a PhD, partly because those make it a lot easier to emigrate to the US. (I'm from South Africa, which doesn't have much of a software industry.)
What other things could increase earnings?
Many thanks for all advice given!
EDIT: I used a scoring rule to rank all combinations of majors and minors in CS, math, economics and MS&E (management science and engineering) according to practicality and estimated effect on earnings. Unit estimates include all breadth requirements etc., assuming I don't take stupid courses. Here's the top 20; the top 10 all look pretty good:
Another option is to major or minor in M&CS (mathematical and computational sciences) instead of math or CS separately.
EDIT 2: Here is a graph of graduates' salaries by major. Y-axis is salary of 2011-2012 Stanford graduates. X-axis is degree: 1 is BA/BS, 2 is MA/MS, 3 is PhD; intermediate values are for groups containing two degree-levels. The sample size is tiny because only 30% of students responded, and some groups were omitted for privacy.