Please create an account to participate in the Slashdot moderation system


Forgot your password?
Businesses Programming

Are You a Blue-Collar Or White-Collar Developer? 836

jammag writes "Some developers have gone to four-year universities, where they've also studied subjects like history and sociology, while other coders go to vocational schools and focus purely on writing great software. So why, asks a longtime developer, is there a stigma attached to not having a four-year degree, when 'blue collar' coders might be better trained? Why does the software industry keep emphasizing this difference — and generally giving better pay to four-year grads? Isn't being a developer about real skill level, not the piece of paper on the wall?"
This discussion has been archived. No new comments can be posted.

Are You a Blue-Collar Or White-Collar Developer?

Comments Filter:
  • by Anonymous Coward on Sunday November 15, 2009 @02:26PM (#30107180)
    I wear a T-shirt.
  • by blahplusplus ( 757119 ) on Sunday November 15, 2009 @02:27PM (#30107188)

    "Isn't being a developer about real skill level, not the piece of paper on the wall?"'

    It's really a game of social status, education does NOT ensure someone is smarter or more skilled, it only ensures that, that person had the persistance or was a very good cheater.

    Persistance and skill are often confused, the education system is really about handing out status to attempt to justify who gets jobs over who doesn't merit be damned. Anyone who believes education is not mostly about social status is not very bright.

  • Algorithms (Score:5, Insightful)

    by moo083 ( 716213 ) on Sunday November 15, 2009 @02:28PM (#30107196)
    In my experience people who have gone to vocational schools do not have the same background in algorithms than do people who have gone to four year schools. They do not have as expansive of knowledge in data structures and sorting algorithms and the like. There are many jobs where optimizing is important and knowing which algorithm has the best run time in O() notation can be important. They may know Java, but that doesn't mean that they can code just as well. Just because someone knows how to use a typewriter doesn't mean they can write a book just as well as an English major.
  • by Krakadoom ( 1407635 ) on Sunday November 15, 2009 @02:28PM (#30107200)
    If you're a hardcore code monkey, sure, the university experience might not help you that much - but it's my experience, that it's a good idea for a coder to be able to relate better to other areas of a business, and this is where the general knowledge of the longer education might come in handy.
  • Oh come on... (Score:3, Insightful)

    by JustShootMe ( 122551 ) * <> on Sunday November 15, 2009 @02:30PM (#30107212) Homepage Journal

    Oh come on, since when did blue collar ANYTHING get paid more than the white collars?

  • by Anonymous Coward on Sunday November 15, 2009 @02:32PM (#30107224)

    I think it's because there's more to being a developer than just the technicals. Sure, if you want to be a monkey at the keyboard churning out cookie cutter websites, that's one thing. But we live in an integrated world, and you get a wealth of intangible skills in university that help you in other areas, be it interpersonal, writing, or whatever. And studying a broad range of topics trains the brain to think in different ways. Again, intangible, but definately real.

  • by jcr ( 53032 ) <jcr.mac@com> on Sunday November 15, 2009 @02:32PM (#30107228) Journal

    Sounds like you're confusing education with schooling.


  • Re:Algorithms (Score:5, Insightful)

    by JustShootMe ( 122551 ) * <> on Sunday November 15, 2009 @02:32PM (#30107234) Homepage Journal

    The really good "untrained" programmers know where to look for the algorithms. I don't have a degree, but I can use doubly linked lists, sort algorithms, mandelbrot, etc., because when I needed them I learned how to use them.

    You're not talking about trained vs. untrained, you're talking about stupid vs. intelligent, and not only do you not need a degree to be intelligent, you can be stupid while still having a degree.

    Which I think was the OPs point, masked in a thinly veiled class warfare reference.

  • by maxume ( 22995 ) on Sunday November 15, 2009 @02:33PM (#30107238)

    Seriously ... ugh :( I went to college, then to graduate school for a PhD, then did a postdoc, now run a research group. Maybe I'm too picky :(

  • Maybe ... (Score:3, Insightful)

    by smoker2 ( 750216 ) on Sunday November 15, 2009 @02:34PM (#30107254) Homepage Journal
    Maybe the job requires more insight into the everyday world and it's origins than just that which can be gained from frequenting Second Life ? There are benefits to understanding the situation in which the software will be used that are only possible with experience. We all hear about how user participation is vital to making good software, but we are users too. Maybe having a good grounding in other subjects gives an insight in how to program for them. It is possible to be a good "blue collar" programmer, but only if you've got the life experience as well as the leet coding skillz.

    PS. I am a blue collar programmer.
  • Re:Algorithms (Score:3, Insightful)

    by jcr ( 53032 ) <jcr.mac@com> on Sunday November 15, 2009 @02:34PM (#30107264) Journal

    Just because someone knows how to use a typewriter doesn't mean they can write a book just as well as an English major.

    Nor does an English degree mean that someone can write a book worth reading.


  • by Kjella ( 173770 ) on Sunday November 15, 2009 @02:39PM (#30107322) Homepage

    Well, probably because computer science is one of the few places where you really go from build to design. Sure it happens that a construction worker becomes a civil engineer or architect, but it's not something that happens by itself. In most lines of work you'll often end up with people doing it some weird way because they've never learned that sort of thing, you can see it in computers too with people that never learned any design patterns and decided to invent their own - mostly poorly. Sure, proven experience beats all but if I was choosing between someone that's learned the theory and has a little experience versus someone that's been busy writing low level procedures all that time it'd be a tough call. If I could have both I'd probably ask the guy with the academic background to draft it and ask the other to sanity check it. Code can be "ugly but works" and it's not really important, people don't touch it much unless they're changing functionality. There's no such as "ugly but works" design, then it IS an ugly design that'll come back to haunt you again and again.

  • by blahplusplus ( 757119 ) on Sunday November 15, 2009 @02:39PM (#30107336)

    "Sounds like you're confusing education with schooling."

    We all know dumb people with degree's, my point is just because someone went through school does not guarantee they are any good at what they do or that they learned much of anything while they were there.

    The degree is about handing out marks of status, in my experience with people someone with a masters is not really better then someone with a bachelors. One simply had more persistance, endurance/ability to cheat amd money to pursue a mark of higher status.

  • Re:Algorithms (Score:3, Insightful)

    by moo083 ( 716213 ) on Sunday November 15, 2009 @02:40PM (#30107344)
    Agreed. But it all comes down to probabilities. An English Major is more likely to write a successful book, but then there are many with no degree who have gone on to do great things...
  • Re:Oh come on... (Score:2, Insightful)

    by Anonymous Coward on Sunday November 15, 2009 @02:40PM (#30107348)

    Uhhh, trades? electricians (trade) regularly make more than electrical engineers (university) and electrical technicians (vocational).

  • Re:Algorithms (Score:5, Insightful)

    by ceoyoyo ( 59147 ) on Sunday November 15, 2009 @02:42PM (#30107378)

    A degree certifies that you've read and to some degree understood, the book.

  • by Comatose51 ( 687974 ) on Sunday November 15, 2009 @02:47PM (#30107430) Homepage

    Seriously, those aren't questions in the summary. It's a bunch of statements. When you frame your "questions" the way the summary did, there's not a whole lot for anyone to say. There's nothing else for me to say except to refute the basic premise of what the summary laid out.

    I went to a four year college and got my degree in CS. My college is actually very prestigious but for its humanities, economics, and other non-CS related fields. I went there knowing that because I wasn't sure what I wanted to do when I started college. With that said, I did studied a lot of humanities and non-CS subjects because they interested me and my college encouraged me to explore. Nonetheless, I did study computer science rigorously, especially in the more theoretical areas such as graph algorithms and triangulation/localization algorithms. The way the summary is written, it made it sound like people like me don't know what a big-O notation means or what a pointer is. That's really unfair. If someone mistreats you because of your two year degree, the right approach isn't to denigrate people with four year degrees.

    I've been in the industry for a while. The times when the degree matters is when the recruiter go searching for candidates. They search for skill sets but also for specific groups of schools when hiring interns or new college grads. Why? It's based on the perception that those who go to prestigious schools tend to be fairly intelligent because the schools themselves do a good job of weeding out bad students. It doesn't mean all students from those schools are good nor does it mean people who go to two year schools are bad. You have to think of it in terms of probability and inference. With that said, schools pay a role mostly when hiring for NCGs and interns. For experienced candidates, we usually don't even bother look at that. In fact, most candidates put that information last on their resume and we glance at it at most. The most important part is the ability to solve problems and write good code.

    BTW, the article itself is pretty horrible. It doesn't even say anything of value. It's just a bunch of guys arguing and being judgmental. Grow up.

  • by noidentity ( 188756 ) on Sunday November 15, 2009 @02:48PM (#30107444)

    Why does the software industry keep emphasizing this difference -- and generally giving better pay to four-year grads? Isn't being a developer about real skill level, not the piece of paper on the wall?

    Isn't being a four-year grad about having gone to college for four years, not the piece of paper on the wall? Like you said, they study other things like history and sociology.

  • Please no... (Score:5, Insightful)

    by QuoteMstr ( 55051 ) <> on Sunday November 15, 2009 @02:52PM (#30107486)

    This is the kind of story that will bring out the worst in Slashdot. It has it all:

    • provocation for pragmatic and the elegant schools of programming
    • bringing the know-nothing anti-intellectuals out of the woodwork (Durr! I just need to know dem PHP!)
    • bringing all the hyper-sensitive academics out of the woodwork (E Gahds! I can't let the PHP guy go uncorrected! *typetypetype*)
    • inflaming emotions over an issue that can't possibly be resolved objectively
    • a complete lack of substantive merit; nobody will walk away smarter
    • setting up a divisive us-versus-them mentality that's practically purpose-built for flamewars

    Slashdot, what the hell happened to you? You used to be interesting and hot, but you gained 400 lbs and started smoking crack. You've really let yourself go. I don't think I can do this anymore. It's hard to say, but I don't love you anymore.

  • Re:No. (Score:3, Insightful)

    by nathan.fulton ( 1160807 ) on Sunday November 15, 2009 @02:54PM (#30107500) Journal
    no, that's why google comes up with lots of great stuff that you don't even know you're paying for.
  • by mbkennel ( 97636 ) on Sunday November 15, 2009 @02:55PM (#30107514)

    It's really a game of social status, education does NOT ensure someone is smarter or more skilled, it only ensures that, that person had the persistance or was a very good cheater.

    And who exactly were they cheating off of? You think everybody in Caltech is cheating off of the guy going to DeVry?

    Persistance and skill are often confused, the education system is really about handing out status to attempt to justify who gets jobs over who doesn't merit be damned. Anyone who believes education is not mostly about social status is not very bright.

    Somebody who believes educational success is all about social status in technical subjects is probably somebody who was lazy and prefers to say stuff like "Persistance and skill are often confused."

    In the real world, persistence multiplied by skill gets stuff done. And yes those students who had the social maturity to recognize that even though they may be smart they also have to put in their labor too are the ones who get ahead. As they should.

    What level education are you thinking about anyway? My experience is that the level of intelligence and skill at the top level universities is truly very high. Moreover, people from that environment tend to be (mostly) pretty well adjusted and agreeable, especially since they've had enough experience with other very smart people that they realize they're no longer the only sharp fork in the drawer by any means. People who may have been bright but always surrounded by mediocrities can have a pretty arrogant attitude, like "the education system is really about handing out status to attempt to justify who gets jobs over who doesn't merit be damned".

    I've now been on the other side interviewing for open positions in my company. In my group we typically take MS and PhD graduates in serious quantitative subjects from major research universities---that works quite well. However I have done some interviews with others who didn't fit that, but tried to convince us that they had the get-it-done-skill. It became apparent quite quickly that they didn't have the fundamental insight and intelligence that we want.

  • No, it's not. (Score:5, Insightful)

    by KingSkippus ( 799657 ) on Sunday November 15, 2009 @02:57PM (#30107528) Homepage Journal

    education does NOT ensure someone is smarter or more skilled

    People who have a university degree are generally more likely to be smarter and more skilled. No, it's not a guarantee; there are plenty of stupid people with degrees out there and there are plenty of really smart people out there without degrees. But what is a guarantee is that if you get a roomful of people with degrees and compare their skill and ability to a roomful of people without degrees, all other things being equal, the people with degress will do a better job.

    Also, keep in mind that rare is the job that is only about coding. When I was a developer, my job also entailed things such as writing documentation, holding training sessions for other developers and users, basic accounting and budgeting, and so on. Non-coding things I learned in college while earning my degree are useful skills that I do use today, not just how to write some subroutine. Yes, even social skills you seem to have disdain for come in useful, because I actually work with other people, not just holed up with a computer.

    Persistance and skill are often confused...

    Persistence is a skill. By completing your degree, you have demonstrated that you are willing and able to achieve success with long-term projects, including handling things that, at the time, you might not be overjoyed in having to do. You've also demonstrated the ability to learn new things to at least some minimal degree (no pun intended) of competence that might be outside of your familiar bubble of knowledge.

    A college degree doesn't just demonstrate what you've learned, it demonstrates the ability to learn. If I'm hiring someone, I certainly want them to be able to do the job I hire them for, but I also want them to be able to quickly and effectively pick up new things that I might have to throw at them someday.

    I'm not saying that a college degree is the most important factor in hiring. Personally, I'll value experience any day. Given a choice between hiring a 10-year veteran of something versus someone who has only been doing it a year or two, I'll take the veteran any day no matter who has a college degree. But a college degree is important. If experience is more-or-less equal, I'd take the college graduate over the non-graduate every time.

  • Re:Algorithms (Score:5, Insightful)

    by Sir_Sri ( 199544 ) on Sunday November 15, 2009 @03:20PM (#30107730)

    yes, the trick with the advance degree is that you learn in advance about them and when to know how to use them. It also depends very much on what you end up doing at the end of it all,if you end up in a job where traditional search and sorting are your bread and butter you'll pick that up quickly, but not all jobs are like that. Linked lists and sorting is a first and second year problem, Greedy algorithms, graph theory, (shortest path stuff), linear programming are 3rd year and so on.

    I'm taking a grad course in machine learning, where we learn about the backpropogation algorithm (the first algorithm we talked about in class, in I think the first real lecture or maybe second). If in highschool someone had told me go look up and use the backpropogation algorithm for something I could have. But the guy with the degree is supposed to know which to use. Oh and you know all those big O notations... well we have a grad course in algorithms which is all about trying to calculate the numerical coefficients in front of the n^2 or whatever. In that case when they adverted the course to us, the prof gave this sample of two different implementations of the same O(n^2) sort, one had a coefficient of 1.7 the other was 2.something. Maybe important, maybe not. Maybe more education in this case is diminishing returns, but then you don't offer more education to that many people.

    All things that of course you can learn on your own, if it's important, if you have time. The point of having the advanced degree person is they have taken the time, and may know other algorithms as well, and can direct the learning of the other people, who didn't have the time or if at the time it wasn't important. Just the same when you're actually at a company not everyone has time to read the literature, someone has to read, and understand a lot of literature and filter down to the important stuff which is then sent off the relevant people.

  • Re:Algorithms (Score:3, Insightful)

    by SanityInAnarchy ( 655584 ) <> on Sunday November 15, 2009 @03:33PM (#30107894) Journal

    That's one reason I'm trying to get back into a four-year school right now. I was on the job, and doing what I still think is good work, for the better part of a year without understanding what O() notation even was. I still don't actually know what "NP-complete" means.

    I think I'm still a decent programmer, and many of the classic algorithms and data structures can be abstracted away with modern tools. But I can see the holes in my knowledge.

  • by Anonymous Coward on Sunday November 15, 2009 @03:34PM (#30107906)

    Most CS programs I'm aware of are almost purely mathematical in nature, focusing on the verification of correctness, algorithms, data structures, and logical reasoning about computation. You don't tend to learn much practical things like design patterns. Furthermore, I would imagine that a vocational degree would be far more likely to teach such things. My take on the issue is that CS students are better computer scientists, and not necessarily better programmers. I think the Blue-Collar versus White-Collar comparison is particularly apt here: while a student with a vocational degree might have the capability of competently utilizing the tool of their trade (the computer), the student with a 4 year CS degree is more prepared to reason about computing at a higher level. This is similar to how a civil engineer might not be a good plumber, but is still in many ways much better trained.

    The problem is that too many people have it in their heads that CS is about programming. It is closely tied CS, but programming is only a tool.

  • Re:Algorithms (Score:3, Insightful)

    by ClosedSource ( 238333 ) on Sunday November 15, 2009 @03:34PM (#30107914)

    "There is a big difference between reading a book and having professors with years of experience teach you"

    Of course you may have been taught by a graduate student that got his BS last year, but don't let that bother you.

  • by assert(0) ( 913801 ) on Sunday November 15, 2009 @03:38PM (#30107956) Homepage

    Cute, the old "they laughed at galileo" adage... Every crackpots favorite.

    Folks, we all know about Wegener, Semmelweis etc. How they were ridiculed and later vindicated. Now, why do we remember these guys? Because they were the exception. They happened to be right. They were not your ordinary crackpot.

    Remember they also laughed at Bozo the clown.

  • Re:Algorithms (Score:5, Insightful)

    by ceoyoyo ( 59147 ) on Sunday November 15, 2009 @03:43PM (#30108030)

    Certainly. Experience is good. However, if you're going to hire someone who is fresh out of school and you don't have time to exhaustively test all the applicants, do you prefer someone who has taken and passed courses that are relevant to the skills you want, or someone who has not (but MIGHT have read a book on it once)?

    Also, who is more likely to actually DO that "life long learning" thing? Someone who went to school for a year or two or someone who invested four years? Not to say that there aren't two year diploma holders who take professional development very seriously, but the degree holders have demonstrated that they both respect knowledge and are able and willing to invest their time in obtaining it.

  • by Blakey Rat ( 99501 ) on Sunday November 15, 2009 @03:44PM (#30108054)

    The longer you spend time in school (2, 4, or 6-year degrees), the greater value you have to the employer.

    Only because the Employer *thinks so*. That's a self-fulfilling prophecy.

    In the real world, I've seen no correlation between education and programming ability, or communication skills, or planning skills. Absolutely none whatsoever. Despite that, I've worked at companies that require candidates to have a 4-year degree, a policy I thought was grossly unfair.

    Why don't I have a degree? For some reason I've never understood, a CS degree that my University required calculus. I can't hack calculus... my failing that class multiple times destroyed my self-esteem to the point where I dropped out of school rather than try again.

    What does calculus have to do with programming? From my experience, nothing. Absolutely nothing.

    I don't have a degree because the degree program required a difficult, pointless, and utterly useless class. After a few years, I realized it wasn't me who was dumb. And that was confirmed when I entered the industry and began interviewing candidates who had calculus degrees, but couldn't code worth crap.

    Obviously, maybe I'm a weird and special case, but you can see that I really don't care whether a job seeker has a degree or not, I'll give them a shot either way. If they can hack it, they can hack it.

    (Oh, sure, there's going to be someone who stands up and goes, "well what about programming video and audio compressors?" But that's not using calculus as a *programming* concept, that's using calculus because it just happens to be relevant to that problem domain. Just like you'd be better off knowing the GAAP if you're writing an accounting application.)

  • by assert(0) ( 913801 ) on Sunday November 15, 2009 @03:49PM (#30108110) Homepage

    Sorry about whooshing you.

    My point is this: for every Wegener/Cantor/Galileo there are thousands of Bozo the clowns. This is a strong indicator that the system works.

    I'm really sorry if you're unable to grasp this basic fact.

  • Re:Algorithms (Score:3, Insightful)

    by vlm ( 69642 ) on Sunday November 15, 2009 @03:50PM (#30108116)

    You sure these two quotes go together?

    I will have no idea which algorithms have the best run time in O() notation

    I'm leaps ahead of some of the "schooled" developers in my company

    Your runtimes and/or program performance limitations will be pretty poor indeed if you don't have any interest in optimization.

    Kind of like being the worlds best bulldozer driver, vs being a civil engineer. Claiming there exists at least one civil engineer stupider than the worlds best bulldozer driver proves nothing. Also claiming the worlds best bulldozer driver is better at digging a hole than any of the civil engineers proves nothing.

  • by jcr ( 53032 ) <jcr.mac@com> on Sunday November 15, 2009 @03:57PM (#30108180) Journal

    What does calculus have to do with programming? From my experience, nothing. Absolutely nothing.

    Depends on the application. I've worked on an application to plan spacecraft trajectories, and calculus certainly had a lot to do with it.


  • Re:Algorithms (Score:2, Insightful)

    by blackcoot ( 124938 ) on Sunday November 15, 2009 @03:58PM (#30108194)

    Quick: who are Robert Tarjan, Edsgar Dijkstra, Robert Floyd and Stephen Warshall and why would you care about their work?

    Which brings me to my point: if you don't know what you're looking for, all the references in the world are essentially useless to you.

  • by Colin Smith ( 2679 ) on Sunday November 15, 2009 @04:01PM (#30108230)

    All developers are blue collar. Programming is the IT equivalent of brick laying, it's a trade, not a profession.

    Professions have legal status; Doctors, lawyers, accountants have to be certified and approved.


  • by hackerjoe ( 159094 ) on Sunday November 15, 2009 @04:01PM (#30108236)

    What you may not appreciate, as an engineering graduate, is that a computer science degree is a science degree, not an engineering degree. 2-year technical diploma programs are sometimes closer to engineering degrees than computer science generally is.

    The (admittedly anecdotal) evidence I've seen is that at least at institutions local to me, engineering programs include training like project planning and estimation, teaching you to keep a log while you're investigating so you can double-check you covered all possibilities, as well as including several practical project courses. Computer science, on the other hand, while it does focus on math and the math behind logic, doesn't include all this practical training that's essential to your actual job as a programmer.

    I have contemporaries who tell me that beyond C++ 101 you can get through a CS degree without writing any code -- which is perhaps appropriate for an academic who's interested in group theory, but not for someone I'm going to hire.

    So while I'd rather work with someone who's had that rigor and practical knowledge drilled into them, there's no guarantee that's what you're getting when you hire a computer science bachelor's graduate. Which is why I think we need 4-year software engineering professional degrees, but then while we're at it maybe I could get a pony too..

  • Re:generalizations (Score:3, Insightful)

    by honkycat ( 249849 ) on Sunday November 15, 2009 @04:02PM (#30108242) Homepage Journal

    Generalizations. The foundation of rational decision making with limited information.

  • by joss ( 1346 ) on Sunday November 15, 2009 @04:04PM (#30108266) Homepage

    > I can't hack calculus...

    Sure you can be a great programmer (in most areas) without knowing calculus, but still.. there is the fact that you just couldnt figure out something that a lot of people can cope with. As an employer I would have to wonder what else you couldnt figure out. Unless there was something pretty damn significant in your favour to counterbalance this, I would hire the person capable of jumping over the (somewhat arbitrary) hoops necessary to get the degree

  • by Blakey Rat ( 99501 ) on Sunday November 15, 2009 @04:07PM (#30108306)

    But you're in a problem domain that would have required calculus even if it you were solving the problem with rulers and graph paper. If you were working with accounting software, you'd do much better if you knew the generally accepted accounting principles... but do CS courses teach that? No.

  • What stigma? (Score:4, Insightful)

    by shutdown -p now ( 807394 ) on Sunday November 15, 2009 @04:18PM (#30108410) Journal

    I don't have a four-year degree, in CS or anything else. Most of my time working as a programmer, I've worked with people, most of whom had degrees (usually CS or math or physics, sometimes something else). There was a time when I was a team lead, and both people working under me had degrees.

    I never found it to be a problem for my career, or when interacting with my teammates. Judging by everything that I've seen, the general perception in this industry is that good experience and knowledge always beat formal education.

  • by msobkow ( 48369 ) on Sunday November 15, 2009 @04:24PM (#30108482) Homepage Journal
    There isn't much you learn in university that you can't learn by reading books.
  • by ale_ryu ( 1102077 ) on Sunday November 15, 2009 @04:27PM (#30108506) Homepage
    Nowadays plain programmers only exist in highly bureaucratic organizations, most of us do much more than just code according to certain specs, that's why I prefer the term DEVELOPER. You are given a problem and it's up to you to think of a proper solution.
    Plain programmers became obsolete with structured analysis and design. The reason they still exist at banks and other huge bureaucratic organizations is that they have to maintain ancient systems that are both too risky and expensive to replace.
    Most modern design techniques focus less on details and more on interactions and flexibility, giving the developers much more liberty to make important decisions.
    Truth is, if you're just a code monkey with absolutely no imagination and problem solving skills you're useless for the modern software industry.
    Sorry for the lengthy response, but I'm in systems engineering and I get the same 'programmers are brick layers' from all the useless guys that have absolutely no skills and feel the need to bash on good developers to increase their ego. Somehow everyone incompetent enough to code thinks he is above a developer. It makes me rage a little.
  • by shimage ( 954282 ) on Sunday November 15, 2009 @04:32PM (#30108560)

    Lets calibrate your experience. Have you, or people that you know, been admitted to, attend, or have attended PhD programs in technical subjects in top 25 universities?

    I do. Most of my friends either have PhDs or are working on one. You don't need to be smart to get a PhD. Most people I know with PhDs, are not, in fact, what I would consider smart. Importantly, however, they aren't stupid. I haven't met any idiot PhDs yet. The most important factor in getting that PhD is motivation (or persistence, call it what you will), and that is what the PhD signifies. It shows you have what it takes to finish the job. If you can show that you can get the job done without getting a PhD (and I know some of those too), you can still be successful (though perhaps somewhat less so in research). Like you said, the degree only helps you on that first job.

  • Re:Algorithms (Score:3, Insightful)

    by ahabswhale ( 1189519 ) on Sunday November 15, 2009 @04:36PM (#30108580)
    I agree, and to this point, I have no degree and learned how to write sorts, hash tables, and linked lists all on my own. I'm an autodidact and I'm hardly alone. Back in my C days, I could write all these things by hand, off the top of my head. Interestingly, I found that most people with college degrees could not do that. In fact, most couldn't quite grasp pointers all that well either. It was evident to me that they did whatever they could get away with to pass their programming courses and that's it. There's a difference between passion and education and they often lacked the passion part. Passion is what it's gonna take to learn these things and actually internalize them.

    In any event, I no longer write any of these data structures or algorithms because they are already done for me and packaged in convenient libraries. The vast majority of developers fall into this category. Unless you're working on scientific computing, OS development, or similar subjects, you will probably never need to ever write any of those things. Going forward, this will be more and more true as specialized optimizations are packed and made freely available. I spend far more time learning how to use complex libraries.

    Sadly, the people who profess that knowing how to write such algorithms is so important are frequently the worst coders. They understand the bits and bytes but their design skills often suck and they often lack any concern for maintainability or readability. Let me know when schools teach people how to write good code. Until then, the algorithm pushers can spare me the bs about algorithms and big-O notation because quality code is something important to EVERY developer. What's important is that you know how to learn what you need because every gig is different and there's nothing that any school will teach you that is going to cover it all.
  • Perseverance (Score:1, Insightful)

    by najay ( 733875 ) on Sunday November 15, 2009 @04:55PM (#30108774) Homepage

    A 4 year degree shows you can start a complex, diverse series of tasks and stick with them to completion. People that don't
    have degrees are normally the free thinker types that have problems finishing projects.

  • Re:Algorithms (Score:2, Insightful)

    by arjan_t ( 1655161 ) on Sunday November 15, 2009 @04:58PM (#30108812)

    You're not talking about trained vs. untrained, you're talking about stupid vs. intelligent, and not only do you not need a degree to be intelligent, you can be stupid while still having a degree.

    True, although the ones who really lack any level of intelligence usually don't get the degree either. They tend to drop out in their first year, or second year at most. When I started my CS degree, we had an initial group of some 50 people. After the first semester this was down to some 35 persons and only some 15 persons made it to their second year. Eventually, 11 or so of those graduated. This by itself is a pretty good weeding out of non-talent, don't you think?

    In practice I've seen more talentless people made it into a programmer job than I've seen talentless people completing their thesis.

    Also, don't forget that the reverse of your statement doesn't hold at all. You say you can be stupid while still having a degree, but of course one can also be intelligent AND have a degree. Unless you can provide some prove that an education makes one dumber (I don't think you can), I would say that having a degree and being intelligent is a sure win over being intelligent but don't having a degree.

  • Re:Algorithms (Score:3, Insightful)

    by hjmiii ( 720139 ) on Sunday November 15, 2009 @05:01PM (#30108844)
    More often than not my experience has been just the opposite. The ones who embrace lifelong learning are the ones who weren't jaded by laboring 4 years over subjects that did little more than made them "well rounded" only to come out with a piece of paper, no experience, and no job prospects. On the other hand, those who go out of their way to learn things on their own have already demonstrated that they are resourceful self-starters. They obviously don't need a curriculum handed to them on a platter to learn, and in some cases they have a several year head start acquiring business experience. Given the choice between a new graduate and someone who's been learning in the field for years who can list on his/her resume their relevant accomplishments, I'll pick the latter. Hence the term "or equivalent experience" seen in most job postings.
  • by Homburg ( 213427 ) on Sunday November 15, 2009 @05:03PM (#30108866) Homepage

    Only if "Computer Science" is a vocational degree about teaching students how to be computer programmers. Teaching computer science majors source control is kind of like teaching English majors how to use Word - it may be an important tool in making practical use of what one has learnt, but it's not relevant to the theoretical underpinnings of the subject, and university degrees are usually about the latter, not the former.

    Which is why calculus is a reasonable prerequisite for a Computer Science degree. Calculus is a fairly important part of higher-level maths, so, first, if you can't do calculus there's a good chance you won't be able to do the non-calculus math that a CS degree needs, and, second, calculus is actually used in a fair amount of Computer Science - I would think some calculus was important in understanding complexity proofs, for instance.

    Calculus isn't a good prerequisite for a vocational qualification in software development, but a BA or BSc in Computer Science probably isn't that kind of vocational qualification.

  • by Colin Smith ( 2679 ) on Sunday November 15, 2009 @05:06PM (#30108898)

    phd. certified and approved.

    Programming is a trade, not a profession.

    Now... *Engineering*, is a profession. But you can be a developer/programmer without being an engineer and the number of programmers/developers who pretend they are engineers (without actually following any engineering practices) is astounding.


  • by Anonymous Coward on Sunday November 15, 2009 @05:09PM (#30108914)

    People value four-year grads primarily because of their demonstrated ability to put up with significant amounts of frustration and injustice without giving up.

    Software development isn't a simple trade, where you just do your one skill well and that provides value. In real-world software development, you have to do a lot of communication with people (customers, managers, stakeholders, coworkers, etc), and a wide variety of skills along those lines is critical to your success. And, of course, where ever there are people there is injustice and frustration. You will have plenty of opportunity to get really pissed about ways in which you have been wronged...and if you are unable to retain your composure and find a way to succeed anyway, then you will not have much staying-power as an employee.

    There is some value in the education received, sure. In the specific case of software development, the well-exercised ability to solve novel problems is more important than familiarity with specific languages, data structures, techniques etc (as the parent poster said...the stuff you can pick up just by reading a book). Also, one needs some decent social skills (clients spend more time talking to tech support than salesmen, and the manner in which you present problems, solutions, and constructive criticism will have a huge impact on how effective you become at getting projects complete). There is also the issue of being liked by one's co-workers, which has an indisputable impact on team productivity. A vocational school, which tends to be very focused on a specific subset of necessary skills, doesn't necessarily exercise or otherwise help the student to develop such skills.

    There is value in being a technology specialist, of course, but only if you are good at marketing your skills as a consultant. If you want a full-time employee position, then you need to have a wider range of skills (outside of your specific technological focus) developed, and you need to be able to adapt to a changing environment in which the skills you suddenly discover you need are different than the ones you already have. To this end, the popular belief that colleges churn out self-motivated learners gives their graduates an edge over vocational school grads (who are thought to be too focused on one specific skill).

    There remains the question of whether or not college *actually* provides these benefits. But the market perception is that a college education does, whereas a vocational school does not, precisely because a vocational school is too focused on a subset of the skills a software developer needs.

  • by Colin Smith ( 2679 ) on Sunday November 15, 2009 @05:19PM (#30108994)

    but I'm in systems engineering

    Really? You're in systems engineering. Which engineering body are you affiliated with?


  • by commodore64_love ( 1445365 ) on Sunday November 15, 2009 @05:25PM (#30109050) Journal

    You make a good point.

    I'm an engineer, and I too had difficulty with math. In 6th grade I almost failed (the teacher was kind and gave each student one free A - that saved me), but then in 7th grade my understanding of math suddenly "clicked" and I sailed through with A's until 12th grade when I scored a D in Calculus. But then in college I repeated the same material and got an A in Calc 1, an A- in Calc 2, and then a W in Calc 3 (because I again had a D average). So I repeated the course, with a different professor, and got an A. The new professor even called my college adviser and said, "That guy is really bright." (Good thing he didn't look at my transcript.)

    Sometimes perseverance matters.

    And fair or not, that's what employers look for. As for calc's application to programming, it's pretty rare but sometimes you use computers to recreate real world problems - problems that need calculus to solve. If you don't understand calculus, you can't input into the machine.

  • by damiangerous ( 218679 ) <> on Sunday November 15, 2009 @05:32PM (#30109090)
    But what good reason is there for CS to exclude the people who can't?

    The reason is that it would no longer be computer science.

    Especially when there are so many things about programming they don't even come close to teaching. Why don't they nix the calculus and have a semester on using source control, or working with a team?

    Computer Science is not about teaching "programming". Computer science is the systematic study of the algorithms of information. Calculus is the language of algorithms. Calculus is the foundation on which the study of computer science is based.

    It's entirely possible that you're an excellent programmer, but you're not a computer scientist. Don't confuse the two. Most working programmers in the field will never be computer scientists .A fantastic computer scientist need only be a mediocre programmer. They're tangential, at best.

    You seem to be under the impression that a computer science degree should give you a trade school education, and angry that yours was not willing to. If you would like a trade education as a programmer, there are other courses of study that would better suit your needs.

  • Re:Algorithms (Score:3, Insightful)

    by rainmaestro ( 996549 ) on Sunday November 15, 2009 @05:55PM (#30109268)

    Agreed, it can be useful, but that's really a fringe case. Let's face it: on how many projects do you really have the time to properly implement algorithmic layouts? The GUI is usually the area of an app that gets the least love when it comes to development time, which is partly why so many apps have such shitty GUIs.

  • Re:Algorithms (Score:4, Insightful)

    by georgewilliamherbert ( 211790 ) on Sunday November 15, 2009 @05:59PM (#30109286)

    Academic programs often have an unfortunate tendency to turn out people educated like they were going on to be academics.

    That said - Unawareness of the wider world of algorithms (and wider world of Computer Science, writ large) is a self imposed glass ceiling in the programming field.

    The real key is not whether you went to school. It's whether you care enough about yourself and your career to learn enough to be proficient and eventually excellent. 4-year colleges, and in particular very good 4-year colleges and grad programs, work hard to get proficiency in what they think is relevant (with the above-mentioned proviso that they think a future in academia is more likely than statistics actually support) and open your eyes to the skills and factors for excellence.

    I've known curious bright people who never got any 2 or 4 year degree or who got completely non-technical degrees who are world class programmers. They go to conferences, read journals, participate in technical professional development, etc.

    If you assume just going to college is going to get you through, and not following up with conferences and journals and technical professional development, you're imposing a glass ceiling on yourself. You will not excel.

    If you assume that your m@d l33t code hacking skills will get you through and that you don't need to care about algorithms and computer science topics writ large, you're imposing a glass ceiling on yourself. You will not excel.

    If you assume that reading slashdot and a dozen more websites is an acceptable replacement for doing homework (reading actual tech journals, CS papers, etc), you're imposing a glass ceiling on yourself.

    Grad students generally never survive to graduate degrees without understanding that, though not all succeed in the real world. A lot of 4-year students don't get that, even ones who went to good universities. Far too many 2-year university students and self taught people don't get it.

    Put the video game down and go find out what researchers and cutting edge programmers are doing, what they see as the next hard problems, and find out what's going on which will be relevant to the work you're doing now, what you're going to be doing next year, and what you hope to be doing in your wildest dreams in two to five years. If you aren't actually going out and looking at the advanced stuff coming down the pipe your skills will erode over time, no matter how hot they are now. Widen your scope and look deeper.

  • Re:Algorithms (Score:2, Insightful)

    by XopherMV ( 575514 ) * on Sunday November 15, 2009 @06:00PM (#30109288) Journal

    A degree certifies that you've read and to some degree understood, the book.

    Which could possibly be a very old book that has nothing to do with the things of today.

    The books chosen in college courses are typically not of the "Learn Visual Basic in 21 Days" variety. They cover algorithms, data structures, hardware architecture, OS design, database design, etc. These are general topics whose basic theories haven't changed in some cases for over 50 years. These are topics you use over an entire career, not just until the latest technology fad gets stale like VB, Pascal, Cobol, etc. They are meant to give you the theoretical underpinning so that you understand why any computing technology operates the way it does.

    What I've noticed is that the developers who dismiss college and those "very old books" is that they have a superficial knowledge on maybe a few pieces of technology. They don't really understand how everything fits together and works. Although, they may be decent code monkeys. However, if they run into any truly difficult issue that isn't covered in their "Learn Visual Basic in 21 Days" book, then they're SOL due to their lack of understanding in the fundamentals. You have to truly understand a difficult problem before you can fix it.

    Further, as soon as the technology they know gets replaced, they are the first out a job because they don't have that deep understanding to enable them to transition to new ways of developing. Their future is the same as the Cobol programmers of today. The best they can do is pick up a different "Learn the Latest Fad in 21 Days" book and start over as a junior programmer in a different programming job.

  • by mlwmohawk ( 801821 ) on Sunday November 15, 2009 @06:08PM (#30109380)

    I am in my later 40s. I have been in "high tech" since the early 1980s.
    I do not have a degree.
    I built my first computer in the 1970s.
    I learned the concepts of computer science from an old navy programmer in high school. (in the late 70s)

    When I entered the software industry, computer science was considered a math. In many ways, it is just an expression of a series of non-linear calculus equations, only with a different set of languages to express it.

    I wish the industry were heading in a different direction, but stupid people who think a degree means "learning" have infiltrated the profession. Here's the problem: 25 years ago, you had to be smart and know your shit to work in the industry. Smart people understand that learning is a personal process and no piece of paper can substitute for innate curiosity and a drive for learning. It is the stupid people who barely get through college, barely retain anything they've learned, but managed to acquire a diploma, think, like the strawman from the wizard of oz, that they are now smart. It is these people that become the gatekeepers in the industry. It is the childish and oblivious value they put on the meaningless diploma that harms the industry. Smart people who know what they are doing are passed over for frat boys. The more of them there are in the industry, the more the industry will tend to go in that direction.

    It should be sobering that most of the most meaningful developments in computer science have come from smart people who never learned anything about computers in school.

    When I interview guys from supposedly good technical schools, and ask them how hash tables work or what a "call gate" is, I get a blank look and the response: "Why do I need to know that?" Anyone that has ever uttered that phrase, "why do I need to know that," is an idiot and should not work in any profession that requires knowledge.

    When I was younger, computer science was the science of solving problems on actual computers. It is an interesting science as "real" computers have limitations. Understanding the limitations and operation of the computer allowed you to come up with interesting algorithms. The most used algorithms of our time have come from this type of thinking. These days, you'd be hard pressed to find a computer science grad that actually has any sort of clue about how real computers work. They don't understand why there are signed and unsigned integers and think that pointers are "bad."

    So, blue collar or white collar? It doesn't matter. The idiots are running the industry. Moronic MBAs are coining buzzword phrases like "AGILE" development, and generally making the software industry a hopeless idiocracy.

  • by Smoke2Joints ( 915787 ) on Sunday November 15, 2009 @06:14PM (#30109426) Homepage

    And what about those who view a life long debt and slavery as insufficient to make up for persistance on a piece of paper?

    You are right in that degrees are not an insurmountable challenge to achieve, but for an increasingly competitive marketplace, you are required to accrue greater and greater levels of debt just to keep up, let alone stand out. Landed a great paying and stimulating job, right out of university? Lucky you. Many people are not so fortunate, and others still view that risk as too great, especially when its not amazingly difficult to learn the trade ones self.

  • by siddesu ( 698447 ) on Sunday November 15, 2009 @06:17PM (#30109446)

    No, they wouldn't - I don't know what is your experience with HR people, but for me the HR people (when I was hiring people in IT anyway) were just a convenient tool to do the menial part of the process -- contact and manage the numerous sources of job candidates, appointments, etc. They were also a simple filter for whether a candidate's resume matched the basic skills required, and if it didn't I would still get the resume, but it would be flagged - i.e. the decision was all mine (or my department's). For positions for which we administered various tests, the HR people would generally help organizing and processing those, but that's about all they did.

    So, had I said minimum 2 year associates degree, that would mean exactly that for the HR.

  • by sjames ( 1099 ) on Sunday November 15, 2009 @06:19PM (#30109472) Homepage Journal

    Really, the degree MAY indicate those things, or may indicate someone who went through all the motions for 4 years or who has no idea how to apply what they've learned.

    The skilled programmer without a degree either had aptitude so far over the top that by the time they graduated high school they were already qualified to go directly into the industry, or they at least had adequate self-motivation that they didn't need to be guided through how to learn. Of course, they might also have big holes in their knowledge.

    Either way, the only way to know is a skillful interview followed by watching their actual work performance. I have worked with a number of programmers with and without a degree. My personal finding is that the degree is neither here nor there. It is one of several valid ways to become a skilled and knowledgeable professional.

  • by ottothecow ( 600101 ) on Sunday November 15, 2009 @06:25PM (#30109536) Homepage
    Exactly. I went through the intro CS sequence at my school (majored in econ)

    We used svn...we didn't have a class on it though. Somewhere in the computer systems class it showed up though and we started using it. The first time it showed up, there was a little info on how to use it but otherwise it was a lot like matlab or stata in an econ class..."here is a a tool, it sort of works like this, now use it to do this...ask for/seek help if you need it"

    As for requiring calculus for CS...absolutely. CS is not a professional is a research oriented field of science and as a form of applied math, you won't get far without calculus. Sure, you can learn to write code...but we were only taught *languages* in the first two quarters of the intro CS sequence...third quarter was computer systems where I suppose we were taught a little assembly but otherwise simply expected to know enough C to complete the projects. Fourth quarter was basically a math class and then the upper level classes varied by topic but nothing (except databases) went back to the level of teaching you a language. Calculus was required pretty much across the board (once again excepting databases) after the first 3 introductory quarters. When you get to graduate level, trying to get by without calculus would be a many things have a foundation in calculus that it becomes absolutely required base knowledge.

    To take an example from econ...I can't remember the last time I actually took a derivative or calculated an integral--especially not in a job situation--but many things that I do rely on those two simple functions and I am expected to know WHY they work. Just like you wouldn't put strange working code into production if you didn't know WHY it was working--maybe it works in your test cases but you can't be sure it will apply across the board without vulnerability.

  • by ottothecow ( 600101 ) on Sunday November 15, 2009 @06:38PM (#30109640) Homepage
    You must have had some awful calculus professors (and how do you have so many professors and still not pass it?) if they couldn't give you practical examples of its use. I feel like every calculus textbook I have used was so filled with "practical" examples that sometimes it would have just been nice to be given a problem to just do.

    It sounds like your problem is that you think you want a computer science degree. You are obviously not qualified. If I wanted to hire a computer scientist, I would not hire you. Luckily, most people are looking to hire programmers and it sounds like you are an excellent programmer. One of the responsibilities of a university that grants CS degrees, is to make sure that their CS graduates are equipped to move into a graduate CS program (whether or not they have the grades and other qualifications to get accepted to a grad program) and there is NO WAY you would make it through any respected CS masters or phd program without calculus.

    So please, keep on coding but remember that you have brought up what is part of the fundamental question the submitter is really asking. The "blue collar" coders they were trying to describe are people like you--those with coding training but without the well rounded education granted with a BA. The "white collar" coders they are attempting to describe are the people with some extra training in less related and less job specific areas...they are the people who I could put on a project requiring a little calculus or something else knowing that they could relearn it with 10 minutes and a wikipedia page and then get on with the project.

  • Re:Algorithms (Score:1, Insightful)

    by Anonymous Coward on Sunday November 15, 2009 @06:55PM (#30109764)

    The really good "untrained" programmers know where to look for the algorithms. I don't have a degree, but I can use doubly linked lists, sort algorithms, mandelbrot, etc., because when I needed them I learned how to use them.

    Well you've unintentionally hit the nail on the head.

    1) Good programmers without a degree know where to look for the algorithms
    2) Good programmers with a Bachelors understand the algorithms and why they work.
    3) Good Computer Scientists with Graduate degrees know how to synthesize new algorithms.

    And that sir is why I don't hire code monkeys.

  • Re:Algorithms (Score:3, Insightful)

    by Mansing ( 42708 ) on Sunday November 15, 2009 @07:04PM (#30109838)

    But I can see the holes in my knowledge.

    And with that one statement, you have separated yourself from the mere code jockeys. That statement on a résumé would pique my attention.

  • by exploder ( 196936 ) on Sunday November 15, 2009 @07:24PM (#30110006) Homepage

    You're confusing computer science with software development. What's that Dijkstra quote? "Computer science is no more about computers than astronomy is about telescopes." Computer science is way (way) closer to mathematics than it is to software development. That's why you were supposed to learn calculus.

    If all you wanted was to learn to write code, you should have done a vocational program.

  • by nedlohs ( 1335013 ) on Sunday November 15, 2009 @07:36PM (#30110104)

    I sit in a chair and do nothing for 80% of the day and I get a salary not a wage.

  • by dkf ( 304284 ) <> on Sunday November 15, 2009 @08:52PM (#30110674) Homepage

    All developers are blue collar. Programming is the IT equivalent of brick laying, it's a trade, not a profession.

    Professions have legal status; Doctors, lawyers, accountants have to be certified and approved.

    If you want to work at the professional levels (no, a plain programmer isn't at that level) you almost certainly need a degree in CS, CE or one of a few closely-related disciplines. A higher degree helps as it shows that you can dig in and really understand a problem domain. (You don't strictly need such things, but the alternatives are much harder.)

    Should there be a formal body to codify the professional status? Independent question. Should it be as engineers in the traditional sense? Another independent question. (I'm getting inclined to say "yes, but not at any cost" and "maybe" to those two.)

  • Re:Algorithms (Score:3, Insightful)

    by JimMcCusker ( 27543 ) on Sunday November 15, 2009 @09:01PM (#30110724) Homepage Journal

    Actually, you know what comes in handy for developing GUIs and interaction design? Cognitive Psychology. Linguisitics. Graphic Design. All taught at universities and count towards a degree in Computer Science or Cognitive science.

    Need to develop an object structure or database schema for your application? At the most obvious, there's object oriented design theory. Database theory. Less obvious is analytic philosophy, such as symbolic logic, epistimology, ontology, and theory of language. They are directly applicable to knowledge representation, and help you think about abstraction, representation, and who "knows" what.

    More directly to your problem, hashtable or tree for that map? Or linked list or array? If you don't know how those work, you don't know which ones are appropriate for a given task. Taught in Computer Algorithms, and can be pretty tricky to pick out the gotchas in those.

    Want to write a game AI? Better have taken Artificial Intelligence and Natural Computation (neural nets, genetic algorithms, etc.) courses, or be really, really, good at predicting which algorithm to use in what case.

    In all these cases, a class is usually pretty good at conferring the theory of the subject, which give you a better understanding of why and in what circumstances they work. And theory is usually hard to come by in practical books (learn to write a game in 24 hours!, learn Hibernate in 12 days!). You'll learn the how, but not the why behind the how.

  • by PaladinAlpha ( 645879 ) on Sunday November 15, 2009 @10:56PM (#30111438)

    He didn't say anything about being a programmer. CS is not about programming. Let me repeat it again for you. CS is not about programming. The job you are in has little to do with Computer Science. Computers are not little pocket calculators. They are hugely complex and adaptable devices, and software written for them is developed in several layers. The very state-space the software is developed in is complex enough to be analyzed. Programming is not solving problems, and solving problems is not programming, for anything more complex than projects a student might undertake on their own. Ad hoc development practices might work for a nifty web app or that cool shell utility you wrote in the dorm. It does NOT work for real-world problems.

    One more time: CS is not about programming. You took a theoretical degree in an applied field and then went to apply vocational training. Your success has nothing to do with your education or your inability to succeed in calculus. If anything, you argue strongly FOR formalized education.

  • by Mr. Slippery ( 47854 ) <{tms} {at} {}> on Monday November 16, 2009 @12:25AM (#30111942) Homepage

    phd. certified and approved.

    A PhD has no more legal status than an MS or BS or even an AA degree.

    If you're going to claim that government certification is the distinguishing mark of a "professional", then Einstein was just a "tradesman", while the teenager with the shears at the Hair Cuttery is a "professional". I don't think this fits with the usage of educated native speakers of English. (It may conform to some legal definition, but those often have nothing to do with the linguistic meanings of words -- for example, cocaine is not a "narcotic", but that doesn't stop the law from classifying it as such.)

  • by br00tus ( 528477 ) on Monday November 16, 2009 @04:29AM (#30113034)

    I got a Commodore 64 around 1983, and got a modem soon after. I learned BASIC on it. In 1989, a friend of mine had a dial-in account on a local university's Unix and I began calling that. I always had Unix access since then. I began a job as a Unix Systems Administrator in 1996, at which time I began learning some Perl, and later, some PHP. In 2000, I had a lot of free time and sat down and shored up my C knowledge more than I had already.

    In 2006, I went back for my CS degree. I have learned a lot that I had not learned in the proceeding 23 years. I learned C++. Despite all my experience, I had no idea what a constructor was before taking a C++ class. I learned Java, to where I have sent implemented patches to some major free software Java programs. I learned assembly language and programmed in it. I learned computer internals, DeMorgan's Law and how to create a two's complement binary calculator with AND, OR and NOT gates. I learned about big-O notation. One of my teacher's is an old-timer, and he really showed us how recursion and back-tracking could be used on a whole host of programs - it was really impressive how powerful these tools can be on a whole host of problems.

    I have interviewed people, and have been interviewed, dozens, maybe hundreds of times. The world is full of programmers and administrators who know the basics of how to code, and only learn minimally when they have the job. Once in a while you meet people who really want to understand everything and almost seem to actually understand everything about what we're doing. Amidst a whole bunch of interviewees they really stand out - if they are somewhat normal and seem like they'd do the work, they're almost a guaranteed hire.

    Also, on the other hand, do you want to look at yourself as a wage slave who knows the minimum to get by, or a craftsman who understands his work, even if he happens to be a wage slave? You can get caught in a trap of thinking that spending time learning is only benefiting your boss, but really your bosses will win either way, if you just consider yourself a cog in the machine, they've won in another way. People should take pride in their craftsmanship, even if the management doesn't.

  • Re:Algorithms (Score:1, Insightful)

    by Anonymous Coward on Monday November 16, 2009 @08:16AM (#30114022)

    For some reason, that famous quote "standing on the shoulders of giants" comes to mind.

    Though in your case, it ends up meaning quite the opposite. Congrats on using other people's work and failing to even acknowledge the hard work and the knowledge that was required to produce it. Well done.

  • Re:No. (Score:2, Insightful)

    by HazMathew ( 207212 ) on Monday November 16, 2009 @11:27AM (#30115766)

    Cool story, bro.

  • by DarthVain ( 724186 ) on Monday November 16, 2009 @01:38PM (#30117708)

    As someone who has taken both a 4 year CS degree at a University and gotten a 1 year certificate at college I can offer the following perspective.

    It depends on the school. The university I attended wasn't exactly well known for CS, but I think did a decent job. Some with more of an emphasis is CS will defiantly do better, while others will be much worse. College or vocational schools whatever you call them, are they same way. If you go to one that its focus is CS, it will likely be pretty good, if it isn't, well it will likely be very very bad. It depends of people. People are different, some are smart, some are not, others are lazy, and some have good work ethic. A 4 year degree gives at least some reassurance to an employer that the person is not dumb and lazy. It is by no means a sure thing, but it will weed out a lot. A challenging college or vocational school can do the same thing, in a short period of time, but I would say that you would have to know specifically which schools, and they would be few in number.

    I found personally that University taught me how to write good code correctly, and college taught me to write code. Mind you the college was not a CS college. They were concerned about memorizing syntax (C++ and VB in this case) and getting your code to work than anything else. In university I might get marked for how optimized my code was, or if I used things like recursion properly. They also stressed the little things, like commenting, documenting, and planning (though I remember like many making my pretty little charts AFTER finishing the program). In college, so long as it worked there were pretty happy.

    So I don’t see anything out of the ordinary that people with 4 year degrees generally get paid more or hired more than people that don’t, its pretty common sense. Does that mean that they are better at coding? That depends on you definition of "better at coding". That also assumes that all they ever want you for is coding. If they are looking for someone for the long term, as a company asset it is one thing. If they are looking for someone to fill a "job" then that is something else entirely.

    Anyway, I think everyone should do both, though I know that can be a tall order.

  • by Stradivarius ( 7490 ) on Monday November 16, 2009 @02:08PM (#30118326)

    You have the misfortune of commenting on a story whose sole purpose seems to be flamebait.

    Based upon my experience in the field, I see it this way:

    1. There is a wide spectrum of computer and algorithmic knowledge, and the boundaries of the various disciplines within this spectrum are fuzzy. To me all these flamewars over what CS is, or is not, are ridiculous. You draw from different parts of the spectrum as the problem domain requires.

    My stab it would be thus: computer science helps you understand, analyze, and develop algorithms. Computer engineering helps you understand the machines those algorithms need to run on, thus improving your ability to implement algorithms as efficient programs. Software engineering helps you understand how to implement those programs in ways that efficient to maintain and extend, less error prone, etc. BUT THE BOUNDARIES ARE FUZZY.

    2. There are multiple ways to learn this spectrum of knowledge. Formal degree programs are good ways to learn, but self-teaching and experience can also get you a lot.

    3. Employers have a need to vet candidates for skills and intellect. College degrees provide a convenient shortcut, or pre-screening function, to narrow the pool of candidates. For an employer that may be a cost-effective strategy, but does mean they may miss out on some excellent candidates who don't fit the common mold.

    4. My experience has been that the difference between really effective developers and mediocre ones is neither degree nor even IQ. The really great ones can adapt to murky and complex problems, communicate effectively (including writing easy-to-understand code), and exercise good judgment about when to polish the apple and when to say it's good enough.

    I've seen plenty of developers who went to great schools, probably have great IQs, but struggle in a real-world environment. Because in the real world, problems are often ill-defined, you can't look up everything in a textbook or derive it from mathematical equations, and your limited resources need to be spent wisely.

    So I wouldn't take too much grief from all the snobs coming out of the woodwork. If your employer is keeping you while laying off the others, that says that in the real world you're doing what needs to be done.

  • Re:generalizations (Score:3, Insightful)

    by rgviza ( 1303161 ) on Monday November 16, 2009 @02:42PM (#30118958)

    If the information is too limited the decision is fallacious.

    Hasty generalization...

    An inductive generalization can be valid but there has to be enough information for it to be considered so.

Nothing ever becomes real till it is experienced -- even a proverb is no proverb to you till your life has illustrated it. -- John Keats