What's the typical career path for CS majors?

<p>Hi, I'm planning on attending a top CS university (dream schools are Carnegie Mellon and Berkeley). I want to do software engineering/developing. I've heard that most software engineers don't last long and usually switch careers by their 30s. Is this true? Do they move up to management or something? What's the typical career progress for those from top colleges? </p>

<p>Also, I have a side interest in business/consulting. Should I get an MBA down the road?</p>

<p>I’m worried about that too. But burnout happens in any field. My brother is an accountant and got burned out from working 80-100 hours during tax season and doing what he considers to be “boring” work. He’s trying to switch into CS right now. Let me tell you, it’s a lot harder for a business guy to switch into CS than it is for a CS guy to get an MBA. My brother’s choices are to get a 2nd bachelors in CS or take some courses for 2 years and then apply to a MS program. </p>

<p>I can’t really answer your question about career paths though, because I’m not really too sure myself. I was wondering about that myself. Are there 50 and 60 year old developers? I feel like programming might be too stressful on the mind at age 60.</p>

<p>Closing in on 50 and still doing C systems programming, by choice. Keeps the mind supple. No longer pulling all-nighters though, as I was 30 years ago…</p>

<p>

</p>

<p>Productivity in writing computer software can vary by an order of magnitude between different developers.</p>

<p>However, pay levels (within the country) do not vary by that much. Also, pay levels tend to be more associated with experience (i.e. seniority and age) than actual productivity (this is typical in the US labor market). What it means is that while new graduates are typically at least an acceptable deal for the employer, more senior people at the lower end of the productivity range are more likely to be too expensive from the employer’s point of view (employers often assume that most people won’t want a job paying less than their previous jobs, or will look to leave for a better paying job if they do accept such a job).</p>

<p>Of course, those at the high end of the productivity range are a bargain at all typical pay levels at all levels of experiences/seniority/age, and are more likely to have longevity in software careers as long as they want, and as long as they adapt to new technologies (such adaptation is what a strong CS education should prepare one for).</p>

<p>

</p>

<p>Very good point. I would say <em>provided</em> that they <em>continually</em> adapt to new technologies. My memory management algorithms did not have to perform well in hundreds of concurrent threads on 64-core hardware 30 years ago!</p>

<p>Is it really that difficult to adapt to the latest technologies? How does one go by doing this?</p>

<p>"Is it really that difficult to adapt to the latest technologies? How does one go by doing this? "</p>

<p>No, if you pick your technologies right. Possibly, if you follow the herd. Concurrency is a big problem currently in all big mainstream languages and concurrency is not going anywhere, but there are “unpopular” functional programming languages that adapt to this problem. In general, see for yourself what’s good and what’s bad and don’t follow the herd, if they follow the wrong technologies. Study CS and especially the theoretical parts to find out why and how different things are “good” or “bad”.</p>

<p>Also, one tends to study/read all the time anyways, even if it’s just documentation or forum discussions. Therefore “adapting to new technologies” should not really be a problem, if one’s used to learning all the time.</p>

<p>Do what interests you, not what gets you a “great career”, which you may hate, even if it’s a “great career”. You can do totally well in software, if you specialize in something else than “general IT software development” or something generic, where there’s a pool of programmers even without formal education.</p>