16 ms·
> CS programs have, in the main, not decided that the primary path to becoming a programmer should involve doing material actual programming. Well, that's beca
by wnoise 9y ago
> CS programs have, in the main, not decided that the primary path to becoming a programmer should involve doing material actual programming.
Well, that's because CS programs are designed to teach CS, not to be a vocational school for programmers.
- Cyberdog 9y agoAnd yet many job listings for programmers demand you have a CS degree…
- SadWebDeveloper 9y agoThat's because CS grads always want to be pair with their own and put heavy work on "planning" how to do things well rather than starting working on it.
- throwawayjava 9y agoBecause for many employers "ability to program" is a minimum requirement, not the full job description.
- alexbecker 9y agoFor far more employers, "ability to program" is something they have no idea how to filter for in a pile of resumes, but "CS degree" seems like it might be a usable proxy.
- BeetleB 9y ago>Because for many employers "ability to program" is a minimum requirement, not the full job description I think this was the author's point. You state it is a minimum requirement, implying a CS degree is a more challenging requirement. Yet it's not hard to find people with CS degrees who do not have the minimum requirement.
- hamstercat 9y agoMy first boss once told me that when he looks at hiring, having a CS degree means that you know how to find solution to problems. Being able to code can be learned on the job if needed. Most junior jobs in bigcos are usually code monkey type of work anyway.
- jasonlfunk 9y agoYes. I often explained that CS was more like a math degree than an engineering degree.
- lordnacho 9y agoAn engineering degree won't teach you how to do things, either. I have one. Grads aren't able to build bridges, silicon chips, airplanes, or whatever else engineers are supposed to do. (Ok, I built a radio in my first term. But it was a very simple one.) They just have some intellectual tools that are useful precursors to gaining such knowledge. You can liken CS to something like Chemistry. Is Chemistry about test tubes and HPLC devices? No. Will you learn how test tubes work when you do a chemistry degree? Probably. It just happens that the practical skill practiced by CS majors is coding. And coding has this unusually large applicability that wet lab work doesn't. Does that mean CS is about coding? No. But you'll probably learn more about coding doing CS than most other things.
- hugs 9y agoIronically, an engineering degree is also like a math degree.
- NTDF9 9y agoElectrical engineering surely is.
- auxym 9y agoMeh, at least my (mechanical engineering) degree wasn't. Sure, you learn some mathematical tools that can help you solve some very practical problems, but it stops about there. I was not taught anything close to creative mathematical thinking. I was never taught the fundamentals of things: the axioms and the theorems on which the tools we "learn" are based on. I can guarantee you no one in my graduating class could read a proof of even modest complexity, let alone write one. Granted, I did go to a school with a good reputation, but one of a very practical/applied program. Still, I'm pretty convinced that math and engineering are very, very different fields, even if all engineering programs include a handful of math classes.
- macintux 9y ago...yet that's not obvious to everyone, hence the inclusion.
- macintux 9y agoForgot I just had this argument a couple of months ago: https://news.ycombinator.com/item?id=15502022 https://news.ycombinator.com/item?id=15502022
- allenz 9y agoIt's not about that fact. The author argues that programming schools should be vocational schools (while ostensibly presenting a list of objective facts).
- jack9 9y ago> The author argues that programming schools should be vocational schools I dont see where. The implication is that they are assumed to be contrary to reality. It's supposed to be a list of obvious facts.
- allenz 9y agoThe full tweet, from the link: "CS programs have, in the main, not decided that the primary path to becoming a programmer should involve doing material actual programming. There are some exceptions: Waterloo, for example. This is the point where I joke "That's an exhaustive list" but not sure that a joke." This reads to me that Patrick wishes that the joke were not true, which is corroborated by other comments of his, such as https://news.ycombinator.com/item?id=7761134#7762383 https://news.ycombinator.com/item?id=7761134#7762383 The fact that you think that the article is in any way objective is why it is so dangerous. Ideology is like water. Patrick's assumptions and biases shape how he presents his "facts" and which facts are left out. It's not objective! What he is really doing is presenting a specific market-based worldview, which has certain insights and major deficiencies. Consider for example "There is no hidden reserve of smart people". It sounds like an actionable insight, but is it true? Is it even falsifiable? What does it mean? And what actions would it lead you to take? My answer: it reinforces the perspective that smart people are the only people worth considering, that there are few smart people, and (in context) that these people are mostly "generalists" and entrepreneurs. It values "intelligence", probably measured in terms of short-term ability to make money, and leaves out values and self-reflection. It leaves out the possibility that you can learn from anyone (c.f. the story of the $20 fan[1]). It leaves out the possibility that your hiring process could be discriminatory or unwelcoming. And so on. This, I argue, is a good demonstration of why programmers need liberal arts; technical decisions are never just technical decisions. We must remember to ask who wins, who loses, is that desirable, is that just? [1] http://cs.txstate.edu/~br02/cs1428/ShortStoryForEngineers.htm http://cs.txstate.edu/~br02/cs1428/ShortStoryForEngineers.ht...
- drewrv 9y agoI've been spending a lot of time lately wondering if people who treat colleges and universities as though their job is worker training are confused, or if I'm naive in believing colleges and universities exist to expand human knowledge through research and education. I suspect the answer is that our culture is confused, we want people who are smart and well rounded to also be useful. And the ugly side of it is, we want clear class divisions. One would never refer to law school or medical school as "vocational".
- rch 9y agoI've heard doctors speak of themselves as having a trade skill... albeit one that pays well.
- mrkurt 9y agoPeople aren't confused. Colleges do many things. They're also very expensive to attend, and the most immediate value they offer is to get people jobs
- codingdave 9y ago> One would never refer to law school or medical school as "vocational". Sure you would. They are 100% vocational schools. Their cost, acceptance rates, time commitment, and difficulty level may be higher than other vocational schools, but that doesn't change what they are -- 100% focused on giving you the knowledge and skills to do a specific job.
- Danihan 9y agoWell then where are all the "vocational" CS programs at universities?
- kingkawn 9y agoCoding Boot camps
- AnimalMuppet 9y ago
- jackmott 9y agowelp, we could really use some vocational schools.
- BeetleB 9y ago>Well, that's because CS programs are designed to teach CS, not to be a vocational school for programmers. And which is why they should be moved out of the College of Engineering and placed into the college that has mathematics. Curiously enough, the only school he mentions where he can reliably know their grads have programming experience actually does place CS under mathematics. I think being able to program basic tasks should be a requirement for all engineering programs. They all require a course in CS - mostly not because they want ME's to know CS, but they want them to be able to program basic things. Yet, many/most engineering grads are really poor at it. I feel for any given engineering degree program, we should make all seniors who have declared they will graduate that semester to take a basic exam on very basic concepts that all grads of that program should know (strong emphasis on the word "basic"). If it's acceptable for them not to know basic material in an introductory class, then remove the class from the curriculum! Example: I was in a top 5 school helping an grad student in CS do basic probability homework. We were disagreeing on the correct answer, so I suggested he write a simple program to simulate it and compare with his calculated answer. This is the simplest program possible: A for loop, and a random number generator. He had no idea how to do it. I'm not picking on him because he's a CS student. I think it's a valid question for people in all engineering programs that involve introductory programming courses. What's the point of making such a course a mandatory requirement if they can literally do nothing based on that knowledge? Similarly, an electrical engineer who does not know, say, Kirchoff's laws should not be allowed to graduate. Yes, I do think universities are for education, but if they cannot apply what they learned, they are not educated.
- khedoros1 9y agoI went to a polytechnic university (i.e. one with a "learn by doing" focus). Our engineering students definitely had to have some programming classes, but they were taught separately from the CS ones. Most engineering students considered them an annoying roadblock in the way of getting back to their "real" work, and I (a CS student) spent a fair amount of time tutoring friends. I'll have to ask some of them if they use any form of programming now, in their day jobs. I suspect I'd get a mix of answers. As for the CS students, lectures were often on the theory, and homework was usually focused on implementing demonstrations of the theory. A grad student who wasn't a decent programmer was either a cheater in undergrad, or didn't come from our school.
- tikhonj 9y agoTo be fair, they do a pretty bad job teaching CS too. Your average undergrad program is almost entirely learning about CS, not learning CS. A non-trivial of students get through a CS degree never doing anything novel in CS—a real shame because, unlike math, research-level CS problems are eminently accessible to undergrads. It doesn't even have to be "real" research: I just expect more than classes which have you regurgitate what you learned to pass. And yet that's all you need to get a CS degree. It's a bit like learning to write by filling in blanks.
- ninkendo 9y ago> classes which have you regurgitate what you learned to pass I think that's what school is, no? I'm not trying to be glib, I think this is just a reality of how education works in pretty much all subjects (typical US academia, YMMV etc.) Can you name a major that doesn't work this way?
- aeorgnoieang 9y agoI had to write real proofs (tho I didn't fail completely if it wasn't free of errors) for my U.S. math undergrad degree.
- dsp1234 9y agoDid those proofs have to be novel, or were the proofs of already known concepts?
- alphaalpha101 9y agoOf course they have to be novel! You aren't allowed to just copy them off someone else.
- vecter 9y agoI'm sure those proofs at the time were novel to the student but obviously not the professor who assigned the problem. That's how the student learns.
- deleted 9y ago[deleted]
- ken47 9y agoThere is a well known delineation between applied math and pure math. It seems that such a convention has yet to be established for CS.
- ynniv 9y agoSometimes* the best way to learn things is to do them, a lot. - Graduate of the North Avenue Trade School (* Most times)
- deleted 9y ago[deleted]
- JepZ 9y agoI think there is a thin line here. For example I was taught I to programm Smalltalk. On the one hand that is not a commonly used programming language and on the other hand it teaches Object Oriented Programming like no other language. So yes, after that you can't start as a Senior Java Developer but I think you have a very good foundation to quickly pick up other Object Oriented languages. So you do not have to teach the latest hyped language to give students the ability to programm. Instead you can use clean languages to teach CS and let your students excercise them to show you that they understood what you taught them.
- ptr_void 9y agoYet not having a CS degree makes getting a programming job 10x more difficult.
- nitwit005 9y agoNot sure that's an accurate comparison. We make the English majors do a ton of writing, the art majors produce a lot of art, and no one seems to have any issue assigning a lists of problems to math majors as homework. I suspect there is just a cultural issue, where the CS faculty doesn't want to do that style of teaching. I had a professor hand out debugging assignments because that was part of the industry feedback they'd gotten, but only the one professor listened to the feedback.
- wvenable 9y agoDon't worry most CS programs aren't designed to teach CS either. They teach a random assortment of technical material that is neither terribly difficult nor terribly relevant.
- patientplatypus 9y agoUgh...I hear this sort of thing all the time and I find it sooo obnoxious. Look, the reason that all the students go to university is to make money. Like 90%+ of undergrads go there to make money so whether it "technically" should be a monastery of cloistered academics pondering the universe (based on some high minded notion of what learning "ought" to be for) is besides the point. University costs a shit ton of money and people (the vast majority) pay it so they can have a decent life. And the fact that universities are, on the whole, teaching skills that do not help their students accomplish this means either A) they are actively misleading their students B) university is a class indicator more than a place to learn (I can spend huge amounts of money so I'm probably not poor and black - which sucks for all sorts of reasons) or C) they don't understand that teaching academic CS, as opposed to programming, is not what industry demands (so they suck at what they're selling). These are the people who, quite literally, are billing themselves as the "smartest guys in the room". If that's the case they can well stop sucking at their bloody job!
- extra88 9y ago> the reason that all the students go to university is to make money. Like 90%+ of undergrads go there to make money Which is it, "all" or "90%?" I went to a private liberal arts college so maybe that automatically puts me and my classmates in the 10% but I did not think the overwhelming majority of us were there to make money. The fact that lots of students still major in subjects that can be very worthwhile and valuable but lack obvious paths to financial success (e.g. most of Humanities and a lot of Social Sciences) indicates "making money" is not why they're there. You think universities should basically be trade schools. They're not and they shouldn't be. Trade schools should be trade schools but the U.S. has a dearth of them and many that fit the description aren't good enough.
- bordercases 9y agoI really hope we see greater specialization of mid-line universities that don't know whether they want to be an academic school or a trade school. Programming-as-inquiry is extremely difficult due to the amount of effort and math required to produce novelty, and programming-as-trade is much less difficult in comparison as a lot of the systems you're composing together already have their principles worked out. You can work from the manual in the latter case, while you're defining the manual in the former. Meanwhile a university not knowing whether it wants to be a trade school or a research school has mixed incentives that results in an inconsistent quality of education. You get professors who don't know how to teach and teachers who don't know how to go in depth. By requiring both you've made your staffing requirements that much harder to fulfill if you don't want to trade off education quality. On that note how have bootcamps been doing lately?
- matt_morgan 9y agoReminder that patio11 might be saying all these things without trying to imply value. I.e., he's not necessarily saying any of these things are good and bad; the "obvious" part is just that they are true.
- closeparen 9y agoMy CS education turned out to be “coding in a few fundamental domains” and I was very happy with it. We implemented some fundamental algorithms and components across operating systems, networks, distributed consensus, compilers/interpreters, visualization, sensing and perception, databases, machine learning, etc. You were free to construct a degree out of proofs rather than source code if you wanted, but those of us who desired a more practical education could fill our days with systems programming.
- fsloth 9y agoI would claim there is a significant portion of population for whom empirical teaching of CS would be far more kind and efficient than going through the Djisktraist pure theory route. Even Djisktra began with writing actual programs until he grogged how to think about it and then moved to pure theory.
- Clubber 9y agoWhat's the point of learning CS if you can't write a complete program? What the hell else are you going to do with it? Try to think of yet another way to write a sort algorithm?
- lukego 9y agoNostalgia: I really love the 60s definition of CS at Stanford, which seems more inclusive of practical aspects than the theoretical bent of today: "I consider computer science to be the art and science of exploiting automatic digital computers, and of creating the technology necessary to understand their use. It deals with such related problems as the design of better machines using known components, the design and implementation of adequate software systems for communication between man and machine, and the design and analysis of methods of representing information by abstract symbols and of processes for manipulating these symbols. Computer science must also concern itself with such theoretical subjects supporting this technology as information theory, the logic of the finitely constructable, numerical mathematical analysis, and the psychology of problem solving. Naturally, these theoretical subjects are shared by computer science with such disciplines as philosophy, mathematics, and psychology." http://i.stanford.edu/pub/cstr/reports/cs/tr/65/26/CS-TR-65-26.pdf http://i.stanford.edu/pub/cstr/reports/cs/tr/65/26/CS-TR-65-...