7 ms·
Why do people discount the importance of a formal education in computer science?
- yters 18y agoCuz they think programming is computer science?
- andreyf 18y agoAlan Kay uses an interesting analogy to explain the distinction between "Computer Science" and "Software Engineering": UCLA has one computer science department, but 25 full departments of biology (not counting medical school stuff). Why? Biologists are smarter then we are. When things are bogging down, the best thing to do is to go create a new department. (http://www.windley.com/cgi-bin/printthis.pl?url=http://www.windley.com/archives/2006/02/alan_kay_is_com.shtml http://www.windley.com/cgi-bin/printthis.pl?url=http://www.w...) I think the pharmacy:"software engineering"::biology:"computer science" metaphor is pretty insightful. So to answer your question - people discount a formal education in CS because it isn't necessary to write good code, just like pharmacists don't need the formal education that research biologists go through.
- yters 18y agoA lot of disciplines are organized into strata, where once you are on a particular stratum in terms of what you know, you can get a lot done without learning new things. The truly new ideas tend to occur in corner cases or logical extremes, and generally people discount such things as being too focused on insignificant details. However, these corner cases often lead to new strata. I suspect corner cases define the history of ideas. So, when working on practical problems, since they are the general case, it is hard to see the value of special, stratifying issues.
- bootload 18y ago"... Alan Kay: Is Computer Science an Oxymoron? ..." andreyf, great read & thanks for submitting it. You should submit this article.
- wheels 18y agoBecause most people who studied computer science aren't employed as computer scientists. If someone refers to themselves as a computer scientist, I expect that they've either had formal (or rigorous informal) education in CS. If they refer to themselves as a programmer, I assume they know how to program. If someone says that they work at a zoo I don't assume they studied zoology. I do if they call themselves a zoologist.
- run4yourlives 18y agoI don't think it's a cut and dry matter. Formal CS education matters in many cases, but is clearly not a distinguishing factor in many others. It all depends on what it is you're evaluating. Let's be blunt, 95% of Web 2.0 startup stuff is purely programming. These are practical problems that require practical solutions. Although a CS degree is probably a plus, experience and a few working examples of work are more than likely bigger pluses. But that's a very specific subset. If you're doing advanced and technically challenging work like say, trying to beat google, the foundation that you gain by having a formal CS degree starts to matter a little more. I don't think anyone discounts anything, but there are different levels of application depending on the situation.
- axod 18y agoThere are a lot of other vocations where formal training isn't always an asset. How many rock/pop stars formally trained to be a musician? Did hendrix do a Phd in the guitar? I think the same is true in hacking. The best way to become good is through practice, and self learning. Not necessarily from learning other peoples opinions, or current fads.
- gaius 18y agoIt's about barriers to entry. Anyone can buy their own guitar and learn to play. Anyone can buy their own computer and learn to program. But few if any amateur zoologists can afford a zoo, or amateur physicists a Hadron Collider. You need, in those fields, to get the approval of other people before you can practice. The formal education just gets you to the point where you can be taken seriously, but without anyone having to commit substantial resources to you upfront.
- michael_dorfman 18y agoRemember: there's a difference between being a "programmer" and being a "computer scientist." (Similarly, there is a difference between being a musician and a musicologist.)
- scott_s 18y agoThe field is very young. If you want to build bridges, you major in Civil Engineering. You have to learn a lot of physics along the way, but make no mistake: the point of your education is to prepare you to build things. Computer Science is a mish-mash of many things, and only part of that is how to build software. Sure, just about anything outside of pure CS theory requires programming, but producing the working program is not the end in itself. A big problem is that we really don't know how to build good software. This does not mean good software does not exist. It means that we don't have reliable methodology to produce good software. In contrast, we have reliable methodologies to build good bridges. The ACM studied this with the IEEE in 2000, and came to this conclusion (http://www.cs.wm.edu/~coppit/csci690-spring2004/papers/selep_main.pdf http://www.cs.wm.edu/~coppit/csci690-spring2004/papers/selep...): "Following a study by a blue ribbon panel of prominent software engineers, the ACM Council decided in May 1999 that it could not support licensing of software engineers. ACM's position is that our state of knowledge and practice in software engineering is too immature to warrant licensing." I think it's important to differentiate between Computer Science and Software Engineering. That is, the difference between someone whose goal is contributing to the base of knowledge in their field, and someone whose goal is a stable, working system. There is, of course, overlap, but I think the distinction is still there. I think that in the future, there will be separate CS and SE degrees. Much of what they learn will be the same, but the focus will be different. A CS education will prepare you to be a researcher; a SE education will prepare you to build software. (I know SE degrees exist, but most schools only have a CS program.) I don't think this split will happen until SE is mature enough to be licensed. What does this have to do with your question? We don't have reliable methodologies to build good software, and the only formal education people receive that involves building software isn't necessarily focused on actually building software. This is a nice way of saying "we don't know what we're doing." If even the best people in the field don't know what we're doing, then you can learn that on your own. Personally, I still think a CS degree is the best preparation right now to be a professional SE. You will probably be exposed to more things than you would find on your own. But I also recognize that there are probably many professional developers without degrees who are better at what they do than people with degrees. Also note that if you actually want to do research, then you need to get a degree.
- tjpick 18y ago
- mrjbq7 18y agoThere is a psychological effect called "Choice-supportive bias" which I find sometimes explains the positions that people take when describing CS degrees. http://en.wikipedia.org/wiki/Choice-supportive_bias http://en.wikipedia.org/wiki/Choice-supportive_bias
- nazgulnarsil 18y agoin line with what axod mentions: as a young field, software engineering is still pretty meritocratic. That is, the only standard a software engineer is held up to is if his code gets the job done. All fields start off this way, but over time formal institutions grow up around them. Eventually, just as there is an American Psychological Association, I expect there to be an American Software Association. When this happens it tends to create new ways in which you can be successful in the field. Just as not all (or even most) of the members of the American Psychological Association are good practicing psychologists.
- auston 18y agoI would never claim to be a computer scientist or even a computer programmer. I am a web developer, I work with scripting languages to develop basic web applications. I do not develop complex algorithms or even know the difference between threads and processes (anyone want to enlighten really quick?). </incomplete_thought>
- aaronblohowiak 18y agohttp://www.cafeaulait.org/course/week11/02.html http://www.cafeaulait.org/course/week11/02.html
- raganwald 18y agoGood question. I work with a team where a degree in CS "or equivalent experience" is considered a requirement. The other day someone asked me what Kernel#returning does in RubyOnRails. "It's the K Combinator" I replied. Do you think they instantly knew what I meant? And would it have helped if they had?
- scott_s 18y agoTo be fair, I have two Computer Science degrees, I'm close to my third, and I had to look it up. Most people I work with right now (who have CS PhDs) would probably need to look it up since they do mostly systems and high performance work.
- raganwald 18y agoI'm not suggesting anyone ought to know it off the top of their head. The only reason I remembered it is because I am a big fan of Raymond Smullyan's "To Mock a Mockingbird," the best introduction to Combinatoral Logic ever written: http://www.amazon.com/gp/product/0192801422?ie=UTF8&tag=raganwald001-20 http://www.amazon.com/gp/product/0192801422?ie=UTF8&tag=... As a result, I remember it as the Kestrel which he introduces in the same chapter as the Mockingbird, Identity Bird, and Lark. But actually, I really don't expect anyone to remember it. My point was a little sarcastic, I was trying to point out that programming is at least as much about stuff you use regularly or read currently as it is about stuff you learned a few years ago. If you don't use whatever you were taught, you will lose it. And if you learn it another way--I'm sure there are people who use #returning without knowing anything about combinbatoral logic--it might be just as good. Not knowing what a K combinator does is not particularly harmful to being an amazing software developer. I am not denigrating a degree in computer science. I think it is an amazingly excellent way to start a career (be that working for others or yourself) in software development. But, OTOH, after a person has been working for a while, I think it carries less weight than what they have done with themselves since graduating. If a really good degree leads to a really good first job, which leads to a better seond job, and so forth, I am all for the really good degree that started the process.
- ambulatorybird 18y ago
- zandorg 18y agoI took Software Development because it had an AI minor. I didn't take Formal Systems, because of my AI, which made things easier. I also learned Scheme in the CS lesson, which led me to Lisp. But now, I'm sure I use skills learned from the course, even if I didn't get a job out of it. This University was BCS accredited, which means a lot in the UK. Unrelated, but I met the at-the-time President of the BCS at a conference in 2003.
- gaius 18y agowhich means a lot in the UK Really? In 12 years experience I've yet to encounter any situation in which the BCS was even slightly relevant. Everyone who actually needs/cares about CEng status goes to the IEEE instead.
- lemonysnicket 18y agoI think it should be noted that pius is an MIT alum (in EE & CS) so is obviously biased here.
- ajmoir 18y agoBecause time and time again people with a formal education in computer science have turned out to be useless in the commercial arena. Let's face facts most programming is not rocket science and could easily be automated. The reason it has not been automated is that programmers by and large are Luddites. They can admire new gadgets but not seismic changes in their work environment. Anybody who has had the where with all to study for a BSc/MSc/PhD then most work in a commercial setting is going to be far far beneath their intellectual capabilities. In short Compu Sci is best for a research role and commercial dev experience is best for producing a product. The two are widely different beasts. Personally, I have BSc in CompuSci and work in the commercial sector. I think both Academia and Commercial use of computers is abysmal. The last big step forward was in the 1960s for Academia and 1980s for business. Since then it's all been downhill. I have recent compu sci grads who cannot design a simple 8 bit cpu, what's an ALU. This is just plain wrong. I also have witnessed commercial developers who don't know how to treat clients. In both cases why are these people even bothering to work in computing? Most devs still think inheritance is more important than interface. Just how far forward can we move with these fools slowing us down. I think what it will take to move forward is a company saying if we do IT better we can rule the market. Then finding some devs and ops with long experience and fresh ideas. When a billion dollar company shows it can run it's IT with 20 people then we have progressed. Not when some dweeb says he has a new programming language that goes to 11.
- swombat 18y agoWhen a billion dollar company shows it can run it's IT with 20 people then we have progressed. Not when some dweeb says he has a new programming language that goes to 11. Well, billion dollar seems a little excessive. Let's say $100m. In which case, 37signals is, imho, the closest thing today.
- nostrademons 18y agoCraigslist.
- swombat 18y ago
- olefoo 18y ago1. academic study of computer science is an indicator of interest not ability 2. Computer Science programs vary widely in what they teach and at what level, ranging from 'All you need is Java' vocational programs to 'You might as well double major in Math' theory of computing. Two people with BSCS degrees from the same institution may have vastly different levels of ability and accomplishment. 3. There exists a spectrum from EECS majors who can write any program and build the computer to run it, down to BACS who can code a form in VB if someone sets up their IDE for them. 4. Because the demand for competent programmers is so strong, smart people who trained in many fields find employment as programmers and often do better than those trained. 5. If I have to explain version control to someone who graduated from college with a degree in computer science; I discount that person's ability, and my estimate of the program they graduated from.
- honne 18y agoWe should not discount formal education. Reason: http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EWD690.html http://www.cs.utexas.edu/users/EWD/transcriptions/EWD06xx/EW...
- callmeed 18y agoI dropped out of a top-ranked (undergrad) cs program my senior year (to work on my startup, natch). This was in '99/'00, and a lot of my classmates who graduated took .com jobs in the valley. A lot of them ended of getting laid off, so I don't regret leaving. I would say some of what I learned in school has been helpful at my startup (OOP, testing/qa, and team stuff). But probably more of what I do day-to-day comes from independent learning, trial and error, and experience.