Computer Science VS. Straight Engineering

<p>

</p>

<p>

</p>

<p>

</p>

<p>

</p>

<p>I have to say that I somewhat sympathize with crumja’s position. The truth is, a lot of the Berkeley CS curriculum really isn’t very useful. There really are a lot of topics and classes regarding subjects that most practicing computer scientists don’t really need to know. </p>

<p>Now, I do agree that not all computer jobs are coding/programming jobs. But let’s face it. Most of them are. Most Berkeley CS grads are going to end up as developers writing lots of code. And that code will probably be conceptually simple, relative to what you will be forced to learn in Berkeley CS. </p>

<p>As a case in point, I know a highly successful software developer who graduated from Berkeley many years ago who said that he hasn’t used recursion in any of the code he’s ever written for his job, not even once. This guy isn’t some scrub; has been a key contributor on numerous successful software projects for a famous software company. Yet the vast majority of what he learned in the CS program at Berkeley is not used. </p>

<p>Now, in Berkeley’s (partial) defense, I should point out that I don’t think that Berkeley CS is any less applicable than CS at Stanford, MIT, CMU or any of the other top ranked schools. That’s just how CS is taught at the university level, especially the major research universities. The truth of the matter is, most CS departments, historically speaking, are outgrowths of the university math department, and many CS courses and hence taught in a manner analogous to math courses. Heck, at MIT (and other schools), many CS courses are math courses in the sense that they are cross-listed in both departments. But the truth is, unless you are actually going to be in that tiny minority of developers that are writing mathematics applications, you don’t really need to know that much math. For example, if your goal is to create the next Facebook or YouTube, you don’t really need to know a whole lot of math to do it. Granted, that math knowledge is useful, but you don’t really need it for most developer jobs</p>

<p>Furthermore, I don’t think Berkeley CS is significantly less practical than most other Berkeley majors (or majors at other research universities). Take engineering. The truth is, a lot of what is taught in the various engineering majors is also not very practical. In fact, when you think about it, you would be amazed if it were any other way. Many (probably most) engineering professors at the top schools have never actually worked as engineers in a full-time setting (that is to say, not just a summer internship or co-op, but an actual full-time, fully employed engineer). Hence, they don’t really know what skills are really required to become a successful engineer. Inevitably, they then force you to learn things that you don’t really need to know. </p>

<p>What I would say is this. If you actually have in mind a specific software project that you want to write, or especially if you want to start a company to launch such a project, you may well be better off just withdrawing from school and pursuing that project. If it fails, so what? You can just return to school. Yeah, you’ll be a year older and broke, but the fact is, most people of that age are broke anyway. But at the very least, you will have learned useful skills in both software development and entrepreneurship and you will have had a very interesting life experience, for at the very least, you will be able to tell yourself that you tried, as opposed to spending the rest of your life wondering ‘What if?’. </p>

<p>But then there is the chance that you will make it big. Like Bill Gates. Like Mark Zuckerberg. If these guys had failed, big deal. They would have just gone back to college. </p>

<p>Consider what Paul Graham said regarding Gates:</p>

<p>*I’d like to conclude with a joint message from me and your parents. Don’t drop out of college to start a startup. There’s no rush. There will be plenty of time to start companies after you graduate. In fact, it may be just as well to go work for an existing company for a couple years after you graduate, to learn how companies work.</p>

<p>And yet, when I think about it, I can’t imagine telling Bill Gates at 19 that he should wait till he graduated to start a company. He’d have told me to get lost. And could I have honestly claimed that he was harming his future-- that he was learning less by working at ground zero of the microcomputer revolution than he would have if he’d been taking classes back at Harvard? No, probably not.</p>

<p>And yes, while it is probably true that you’ll learn some valuable things by going to work for an existing company for a couple years before starting your own, you’d learn a thing or two running your own company during that time too.</p>

<p>The advice about going to work for someone else would get an even colder reception from the 19 year old Bill Gates. So I’m supposed to finish college, then go work for another company for two years, and then I can start my own? I have to wait till I’m 23? That’s four years. That’s more than twenty percent of my life so far. Plus in four years it will be way too late to make money writing a Basic interpreter for the Altair.</p>

<p>And he’d be right. The Apple II was launched just two years later. In fact, if Bill had finished college and gone to work for another company as we’re suggesting, he might well have gone to work for Apple. And while that would probably have been better for all of us, it wouldn’t have been better for him.</p>

<p>So while I stand by our responsible advice to finish college and then go work for a while before starting a startup, I have to admit it’s one of those things the old tell the young, but don’t expect them to listen to. We say this sort of thing mainly so we can claim we warned you. So don’t say I didn’t warn you.*</p>

<p>[Hiring</a> is Obsolete](<a href=“http://www.paulgraham.com/hiring.html]Hiring”>Hiring is Obsolete)</p>