Is a Computer Science Degree Worth Getting Anymore?
snydeq writes "Self-taught technologists are almost always better hires than those with a bachelor's degree in computer science and a huge student loan, writes Andrew Oliver. 'A recruiter recently asked me why employers are so picky. I explained that of the people who earned a computer science degree, most don't know any theory and can't code. Instead, they succeed at putting things on their resume that match keywords. Plus, companies don't consider it their responsibility to provide training or mentoring. In fairness, that's because the scarcity of talent has created a mercenary culture: "Now that my employer paid me to learn a new skill, let me check to see if there's an ad for it on Dice or Craigslist with a higher rate of pay." When searching for talent, I've stopped relying on computer science degrees as an indicator of anything except a general interest in the field. Most schools suck at teaching theory and aren't great at Java instruction, either. Granted, they're not much better with any other language, but most of them teach Java.'"
Self taught and degree arn't mutally exclusive.
Most of the really good programmers I know were largely self taught. They probably did a lot of coding in their spare time through high school, THEN went on to get a degree and finally a job..
This is of course why there is a thing between getting a degree and getting hired .. it's called a job interview! An interest in programming prior to formal education is usually seen as a good quality and will put you ahead of a similar candidate who didn't know what a c++ was till his second year. You probably won't even get in the door at most places without the degree however... so still worth getting one until there is a massive (not just one recruiter) shift in thinking among the HR departments of the world.
Also university isn't just about learning a trade (that's trade school). It's about getting a rounded education in stuff you probably don't give a shit about, building non-technical skills that are important (writing for instance), proving that you can tackle non-trivial problems with minimal supervision, and proving that you can handle a certain level of stress.
I wish I had my pre-internet CS back, in many ways. In most not I guess.
The mercenary culture is a direct result of companies not sufficiently increasing wages for existing employees. If you want to avoid having talent leave, then pay them what the competition is offering, and treat them well. It's pretty simple.
Wut?
Making grandiose claims with no actual data?
Yup. He probably didn't go to college.
Poorly written and full of absurd sweeping generalizations.
People are making a fundamental error in terminology here. If you're looking to hire someone for a programming job, then you shouldn't be looking at someone with a CS degree. Computer Science is not about coding or programming, it's about the practices behind it. If you want a coder, go hire a code monkey from your local technical college. If you want someone to design the software, make sure it's sane, and then hand it off to a code monkey, then hire a CS grad.
...si hoc legere nimium eruditionis habes...
I would not hire anybody who is "Self Taught". In fact, I looked at schools, GPA, the whole shebang. I want to see that someone has the discipline to go through the process, work with others, and actually see something through to completion.
Tattoos, piercings, etc-- Didn't matter, I had lots of good people that may look funky. Degree from a good school- Mandatory.
Your mileage may vary, but I think you deserve to hear the truth from somebody that has actually hired developers and managed them.
If you've got the chops for a real CS degree, you have largely the same options open for you with an electrical engineering degree, and a lot of other ones you'd be excluded from, too.
If you want to do applied math.. well.. I'd get a math degree and take some CS courses to bolster the programming. Discrete mathematics is just that. Math degrees aren't that common, and IIRC, sought after, especially in finance and statistical analysis.
CS is in an awkward spot. It never was meant to be a trade degree.. somewhere along the lines it was expected to be one. Hilarity did not ensue.
YMMV.
..don't panic
The Author doesn't seem to make the point that he's trying to make. Computer Science degrees may not be a good predictor for coding in language-of-the-week, but computer scientists would not make the kind of dumb rookie errors that you see every day in the real world. I still shudder about a self-taught contractor who wasted weeks trying to write a sort. I'm surprised that an article as poor as this one made the front page.
[quote] that's because the scarcity of talent[/quote] Hogwash, no such scarcity exists. There is a scarcity of talented programmers that will work for minimum wage (inside the U.S.). But that's not really the same thing now, is it?
I'm doing Bachleor's of CS now. In most CS classes I do the following: Look left, look right, look at palm, apply palm to face. I know most of these clowns won't make it to the end, but the fear of some making it is what keeps me up at night. To put it gently, the piece of paper is not enough. CS seems like one of the fields were you always need to take the concepts you learn, apply them, and take them further. You also learn more things not covered in the course, but that are in your book. Then you learn things not in the book. If you expect the average CS curriculum to turn you into a genius, then you have a problem. In addition to my studies, I provide supplemental in class tutoring in several CS courses at local community college. Now in their defense a lot of people in those classes are not CS, usually you get Engineers, and those that are usually have dreams of making video games because playing them is all they do with their time. But the most bizarre question I get after they learn a simple program is: "What can I do with this?" It's like you show a cavemen how to make fire, and they ask you: "What can I do with this fire?" It's like showing a cavemen the wheel and having them remark: "So what?" I just don't know how to answer this question properly. I have tried several responses.
There are self-taught geniuses, and there are incompetent people with CS degrees. There are also "self-taught" people who think they're badass because they've taught themselves PHP and Javascript and lurk on IRC channels but can't do crap outside their comfort zone and there are people with degrees that used every resource available to them to become experts in their field. In other words, where they learned their stuff doesn't matter, but rather, what they've learned and how passionate they are about knowing their field. A self-taught person will almost surely benefit from learning in an academic setting, provided you're not going to some joke school. Universities help you learn by guiding your learning and giving you access to resources and experts in the field, but they don't instantly make you a master of the material. That's on the student. Yes, being self taught implies that the person has the drive to learn, but it's also limited by how well they can steer their learning. And that's what schools and professors are for.
In fairness, that's because the scarcity of talent has created a mercenary culture: "Now that my employer paid me to learn a new skill, let me check to see if there's an ad for it on Dice or Craigslist with a higher rate of pay."
Actually, in true fairness people do this because most companies have no loyalty to their engineers are more than willing to ship their jobs overseas or give it to some less experience person so that they can pay the person shit wages while overworking them.
Of course it's worth getting; assuming the cost of the education is low enough. I believe the average person goes through 3 career changes in the course of his/her life. That's about 16 years in the field, give or take. We'll say the average income in the field is $50,000 -- just for comparison's sake. And let's say your education costs $80,000 (a not unreasonable sum, considering how quickly costs are ballooning). Now obviously because of interest rates and taxes and whatnot, this is an overly-simplistic estimate and I won't consider those -- but given the above, you'd be paying 10% of your income back over the expected life of your career.
The real question you have to ask is -- is the increase in income greater than the cost of the education? Now, obviously, the above numbers are overly simplistic, but it's a starting point to a more in depth analysis. I think you'll find that when all the variables are taken into account, a college education only delivers a marginal benefit to your overall quality of life compared to either trying to get your foot in the door without one, or doing a job that doesn't require one. At least in my country (the United States), with the middle class rapidly imploding due to greed and other factors... you probably want every edge you can get. Work the numbers carefully; If you miscalculate, your financial future is grim.
#fuckbeta #iamslashdot #dicemustdie
Sure you can do coding without a college degree, and make a good living. Quite a few people I know do that.
BUT if you want to be more than a code monkey writing simple procedural stuff for an insurance company, and do more interesting work that requires solving hard problems then that degree and more besides are going to be needed.
The guys at Google working on stuff like image search need everything they can get from at least a MS in CS or math. PhD preferred.
It is possible to self-teach to that level, but it is very very rare.
Um, what? We just went through the worst recession in years, and recent CS grads were still getting jobs without a whole lot of effort.
Now we're knee deep into WTF territory. If you have a CS degree, why the hell are you working an IT job?
There's no -1 for "I don't get it."
"Now that my employer paid me to learn a new skill, let me check to see if there's an ad for it on Dice or Craigslist with a higher rate of pay."
Or, you know, my employer could pay me what I'm worth now that I have expertise with this new skill. You paid for the training. Great, thanks; much appreciated. Now pay me the new salary I can command, too. Them's the breaks. You needed the skill to be brought on board, and I learned it, now pay for it. Consider it an investment in a better employee.
I went in to ask for a raise years ago, having just graduated with my (you guessed it) CS degree, and also now that I had many more responsibilities and was travelling for the company.
I was told that "travel is a perk, and your responsibilities are the logical progression of your position. We can't afford to give you that large of a raise." So I found someone who could. Best job I ever had, but below a certain threshold, the money really did matter.
Honest employers realize this, and while everybody likes to save a few bucks, the best employers are the ones who care. It's a rare gift when you work for one.
A job requires a bachelors? Well there you go it matches. If they require one in "computers" it also matches.
Also don't whine about keyword matching: Learn it and use it. In many big companies, resumes are filtered by HR. They don't know shit about technical jobs. So what they do is look at the list of requirements given to them, and see if the resume matches. If so, it goes in the "good" pile, if not it isn't sent on.
So if a company asks for experience in TCP/IP and you have networking experience, don't put networking, put TCP/IP. HR doesn't know those two things are related.
This is how it works at the university I work at. Most departments have HR filter their resumes so the manager doing the hiring isn't inundated by crap. Some people resume spam no matter how little their experience is related to the job so you can have literally hundreds to wade through. So they have HR filter. What that means is only resumes that meet the requirements are passed on and THAT means buzzwords have to match.
Like writing code, writing resumes requires using the proper terminology. Don't bitch about it, learn it and do it.
Self-taught, learned Basic, Pascal, C back in High School. Got a job and career without a degree, wanted to get a degree, thirteen years after high-school eventually got Computer Science degree.
From that perspective I can tell you that it only made me a thinking programmer (not just a coder), a program designer. Topics such as asymptotic analysis are indispensable. Those who do not have such a degree, I found them to be lacking in code quality.
Computer Science degree is absolutely needed.
When I hire I find most self taught aren't very good either. I think those with a degree generally have better breadth and depth with different technologies and theories. This is partially because a degree forces you to do some things you aren't interested in. But if you're looking for corporate developers go with information systems majors. Databases design and applied programming languages are more useful to most internal business analyst/developer types than compiler design, Assembler language, and even C.
...Then they didn't go to Waterloo, or they did but didn't pass. I have to wonder how low the bar is for your typical college CS degree is, if that statement can hold ANY water at all.
Data structures, algorithm theory and design fundamentals, run time analysis, software engineering paradigms, formal languages and parsing theory, complexity and computability, formal logic, operating system fundamentals, compiler fundamentals, matrix algebra and vector calculus are just some of the REQUIRED courses for a CS degree at Waterloo. Then you have to pass a bunch more courses of your choosing.
Don't other degrees require graduates to have studied similar topics? While you could learn these things on your own, its easier with a prof, TAs, peers, structured schedules, etc... (IMO expensive but worth it)
What if an applicant had a decent portfolio/resume but no degree? We all have to start somewhere.
"It is a denial of justice not to stretch out a helping hand to the fallen; that is the common right of humanity."
Having a degree doesn't make you a great coder and neither does being self taught. Talent and understanding big picture concepts are what makes a great coder. If you don't have either of these by age 30, then having a degree or not doesn't matter as you're useless to all but the most bloated of organizations.
If you are a hot shot coder fresh out of high school and understand how to follow a schedule, estimate hours, generate unit tests, use an automated build process, use revision control, capture requirements, and can generate readable documentation, then you are FAR FAR beyond where most self-taught people are.
If you have a brand spanking new CS, SE, CE, IT degree and can do all of those things above but understand why compiler errors are typically on the line following the error, why C++ link lines need the libs in a specific order, why Java and .Net apps are trivial to disassemble, and have actually wrote something on your own that wasn't part of school to solve a problem you have, then you are FAR FAR beyond where most young people with a degree are.
If either are the case, contact me cause I would probably hire you.
Note: After age 30 or so, neither of these matter as you should have enough experience in the real world to do all of it.
- gtaluvit (prnc. GOT-tuh-LUV-it)
I have been doing this a long time. Very, very few companies care about degrees once you have a certain amount of experience.
Self taught and degree aren't mutally exclusive ... Also university isn't just about learning a trade (that's trade school). It's about getting a rounded education in stuff you probably don't give a shit about ...
I can't agree more. Learning on your own **and** learning as part of a formal degree program is probably the best. Most purely self taught tend to have gaps in their knowledge. They are just as smart, possessing the same raw talent and I have worked with many and would be happy to work with them again ... but occasionally gaps are evident. There are classes in a degree program that a person has no interest in and they are unlikely to study on their own. However these "uninteresting" topics are sometimes important or may provide an unexpected solution or insight into something you are working on.
I have only met one person who is purely self taught, reads computer science textbooks or the equivalent, and reads such books covering a wide variety of topics comparable to what one sees in a traditional computer science program. When I was working on my degree I borrowed Knuth vol 1-3 from this person, these were not vanity books for a bookshelf, they were all obviously read.
Most people do not posses the discipline to do it on their own. They will benefit from a formal program that forces them to do things they would not otherwise do.
The professors at the university I went to specifically told us that they were not there to teach us how to program in a particular language. But to give us the fundamentals to program in any language that we needed to. If you need to program in x, go buy a book on x and learn the language. And, to make that point, we were thrown at Pascal (all the data structures classes), ADA, C (networking, operating systems), C++ (OOP) , COBOL, databases, a couple flavors of assembler, file systems (I can still do block calculations) computers and law, and, to top things off, PostScript. I also was able to pick up a minor in mathematics, classes on Russian history, Western Civ., communications, economics, physics, chemistry and all that other 'crap' that is to make you a well rounded egghead. Because of that expanded world-view, I can actually work with my counterparts in India and treat them like human beings. (For everyone that is bemoaning the fact that jobs are going over there - don't blame the Indians - they want the same thing for their families as you do - food on the table, roof over their head, clothes on there back and a better life for their children. Blame your local politicians and business leaders).
Because of the way they designed the CS environment, and how they approached the material, I was able to build stuff that ran circles around the 'self taught' folks. Sure, we can build a linked list and tree in COBOL 85 to do fast data lookups (COBOL didn't support pointers in that release, but it has this really good array system). I understand the multiple tree structures inside of a PDF - and how the file actually organized as it is written to disk.
I have a CS degree.. I work in IT... and to be honest, I rarely use the programming skills to actually program - most of what I did was in PostScript when I did program. But, I've also had to learn Python, JavaScript, Visual Basic, 370 Assembler, JCL, and SAS when the need arose. Lately what I've needed to do is advise other folks on good practices vs. bad. Talk to the engineering departments at my vendors how their systems work (or don't) .. sometimes with an uncanny insight into how their systems were actually programmed (I'll bet Bob wrote this at 3AM) hopefully with some great ideas on how to make their better. I can translate business rules into software rules (four years coding pension plans) and generally understand why business operates the way they do. Finally, I made some great friends there. The kind of friends that are still friends 20 years later.
Yea, at least for me, the CS degree was worth it.
Yes, I have a computer science degree. Maybe if Andrew Oliver went to university he would know that most of us are actually self-taught when it comes to programming. I believe I took 3 courses which taught programming and they were all first/second year. The rest of the courses were on software development, algorithms, graphics programming, etc, etc. The programming courses taught Pascal, PDP-11, etc. For the other courses you could program in any language you wanted. So if you wanted to program C/C++, Java, etc you had to teach yourself, which everyone did.
Now our local college on the other hand, did have a 2 year diploma specifically teaching programming.
Maybe he should learn how to perform an interview. Its not rocket science. Its very easy to tell in a few minutes (if you know what your doing) as to whether or not the applicant knows what they are talking about. Sure, sometimes one will slip by but that's what probationary periods are for.
"Thanks to the remote control I have the attention span of a gerbil."
What you want a guy who went to automobile trade school and owns at least one performance car he built/maintains himself.
Employers don't have to choose between CS degree OR self-taught. They can choose both - look for people with CS degrees and side projects. Lots of kids I went to school with wrote some other software that had nothing to do with their classwork. And we put that on our resumes.
That's why the whole, "I have a CS degree but I can't get a real job because I don't have experience!" excuse is BS. Anyone worth their salt as a programmer who has a CS degree can MAKE THEIR OWN EXPERIENCE at ANY TIME! When you get home from your call center job, just put down the controller and write some software, and assuming you stick with it, 6 months later you'll have some experience.
paintball
Algorithms, data structures, boolean logic, automata theory, and computer architecture. Lambda calculus if you're unlucky :-). Probably more, it's been a while. That's the hard part, or at least the sophisticated part. Algorithms and data structures are "how do we make these machines do what they do". Automata theory is "what can these machines do". Computer architecture is "how do the real machines do it" at several levels of abstraction.
Design patterns? At best, a nice codification of practices that work; not particularly hard to learn for anyone with any experience, and not particularly useful for anyone without any. At worst, templates for blind code-monkeyism. TDD? You can explain it in a short paragraph. Build systems and revision control? Easy enough to pick up as you go.
Nor should they, because anyone who gets a CS degree damn well ought to be able to write fizzbuzz in some language.
I manage software developers for a large tech firm and have done significant hiring.
My experience is in direct conflict to the ideas presented here. I have found the best results with pure CS graduates. The vast majority of self-taught developers I've worked with have huge gaps in their fundamental CS knowledge, while CS graduate rarely make poor algorithmic choices that we come to regret when our projects scale. Their code is often of higher quality so code reviews are less cumbersome and require less rework. CS graduates are usually nerds from an early age, and to a large degree self-taught before they reached college. These people are generally "serious" about computers, general nerdiness, and their work.
Some self-taught people may be brilliant developers with less student loan debt than CS graduates, but they are not a reliable source of talent. If you are a professional bulding a team, stick with CS graduates, or you take a big risk. That well-spoken self-taught programmer might seem like a great candidate, but wait until you come across real CS problems.
PS - There are a few engineering degrees which I think are just as good as CS
The suggestion that a CS degree isn't worthwhile is preposterous. I lead a fairly large organization and I've hired dozens of software engineers over the years and hundreds of interns. With only a few exceptions, we find that self-taught programmers have some superficial skill in the languages or platforms they tinkered with but lack CS fundamentals that enable them to build well designed, maintainable, and performant systems. Their code doesn't adhere to patterns and standards that make it easy for other programmers to understand. They struggle to decompose complex problems and don't have a mathematical background to tackle the biggest challenges. They often haven't even explored the full capabilities of the languages they use. Yes, there are exceptions, but we've found that a CS degree from a good institution to be a very valuable indicator when selecting our employees. It's the difference between a home cook and a chef trained in a culinary institute.
I started programming in 1976 while I was still in high school. I went to a university and signed up for computer science but did not do at all well in the non-CS courses - probably because of the arguments I used to get into with the professors. I took as many CS courses as I could and quit school and started working. I retired at 43 in 2004 after ending up running a lot of very large product organizations within a pretty large company. The lack of a degree almost kept me out of the company but I had advocates within the company with whom I had worked who championed my cause.
A VC called me to visit one of their startups in 2006 to see about joining at a fairly high level. Things went well until I interviewed with their head of HR and had the following conversation:
HR - "You left education off of your resume. Why?"
Me - "I didn't finish school and felt that a couple years of college weren't important compared to the rest of my resume."
HR - "Don't you feel unfulfilled?"
Me - "I'm sorry, unfulfilled in what way?"
HR - "Don't you feel unfulfilled in not having a degree."
Me - "Not really. I'm retired and your investor asked me to come see if I could help out. If it's not a fit then we can both walk away happy."
HR - "Well, we'll need a notarized affidavit confirming your level of education."
Me - "I'm not claiming to have a degree in anything and I'm willing to say I've had no schooling whatsoever if it will save us this process."
HR - "No, we'll need the affidavit."
Me - "I swear, I'm not hiding an advanced degree in nuclear engineering. How are you going to confirm that I'm not hiding advanced degrees?"
HR - "It's policy."
I never went back but I tell the story often about how the hiring process has degraded to a point of near uselessness. It's extremely difficult to find good talent to begin with and when we do find it the processes and legal jiu-jitsu we force the good applicants to endure makes it very difficult to bring them on board.
The successful companies will continue to be those that get the processes out of the way and hold accountable the individuals who make bad decisions - be they hiring decisions or others.
When you want to hire someone a good HR person will say, "Let me see how we can make that happen." Likewise, when you want to fire someone that good HR person should have the exact same response. Too often the HR and legal departments just become wielders of the veto pen and don't provide good support to the underlying mission of the organization.
As a result, we end up with sadly degraded expectations where hiring becomes a check list of acceptable and non-acceptable gates through which our candidates pass and out the other end of the process is a mealy mash of homogeneity that does little to promote diversity of thought within an organization.
The degree is still important but only as a single component in an overall tapestry that represents any particular candidate.
I want to see that someone has the discipline to go through the process, work with others, and actually see something through to completion.
So what you're saying is, you're an asshole. You aren't hiring based on experience or ability, but because you went to school and therefore they should go to school. You say that you value someone seeing something through to completion -- but you can't fake ability or skillset for years on end. You can fake test scores, classes, hell -- you can buy yourself a degree online if you so desire.
But you can't fake job references. You can't fake supervisors saying "that guy really knows his stuff." You're a bad manager because you've made an assumption, you're operating on belief. That's what bad managers do. Good managers go on instinct and experience... and maybe, if you had worked your way into your position instead of having been handed a degree and slotted into it, you'd know that.
I have no respect for you, and I wouldn't work for you whether I had a degree or not, regardless of the pay. I work for managers who understand information technology is a creative profession, where skills change faster than courses can be designed to teach them, and experience is worth more than book smarts. I don't want to work with someone who can name all the layers of the OSI model but can't explain to me why having large buffers on the border router is a bad idea when it serves a call center.
And that's what you get with a college degree: Book smart. Not street smart.
#fuckbeta #iamslashdot #dicemustdie
What happens when it becomes masters, PDH, post doc, ECT? Just to get in the door.
When you have skills gaps.
Few are interested in hiring recent graduates because they do not want to train them. The candidates they want are already employed, doing the job in question someplace else. What is in short supply is work experience specific to the immediate job, and no one wants to give anyone that experience, a Catch-22.
and what will more higher edu do to fix that??? We need more classes covering the areas that don't get covered in a college but are filled in a tech school.
Some nations provide grants and, arguably, a superior education as a result. It is my contention that educational systems that are driven by "market forces" must, by definition, offer the least at the greatest price that they can. (The more you offer, the greater the cost of providing the service. The lower the price, the less the return. Profit is return - cost. Market forces maximize profit and the only way to do that is to reduce what you offer and raise the price.)
It is also a truism that beancounters aren't very good at deciding what services are actually important to the consumer. They're very good at telling you the price of everything but the value of nothing.
What is wanted is to abolish student loans, switch universities to grant-based systems, fund students via grants, and pay for it by demanding that the universities so-funded provide education of high enough quality that the fraction of the increase in profits that go into taxes covers all those grants. That doesn't mean any individual line of education needs to pay for itself, only that the system as a whole be in dynamic equilibrium. The cost of one course must be covered by the benefit of another.
By eliminating market forces, universities can focus not on fund-raises and PR stunts but teaching and research.
Oh, that's another thing. I'd argue that all universities must do both as must all lecturers. (How the hell else are the lecturers to stay current, if not by research? How the hell else are the researchers to improve their communication, if not by teaching? Have different ratios for different jobs, since not all people are good at both, but breadth of experience shouldn't be limited to students. Fossilizing is how you ruin a good lecturer.)
Since most kids enter university with inadequate education to actually DO any kind of real degree program (universities often waste the first year teaching remedial maths and English), I'd contend that schools should also be forced to pick up the pace. This, of course, requires adequate funding, but it also requires a serious look at what is being taught. Creationism and ID are distractions. Standardized exams may be cheap, but they allow teachers to teach to the syllabus (ie: teach the least) and to avoid teaching any understanding. Schools should be 100% about understanding, facts should be on formula sheets. I'd also abolish leaving school before completing a BS/BA rather than at a fixed age. It means the best can leave at age 15, so it doesn't change school-leaving ages, it just means those leaving early are competent to.
It's a small world and it smells funny; I'd buy another if it wasn't for the money; Take back what I paid (SoM)
While I am an entirely self-taught programmer as well, I have to disagree with your assertion that you are 'proof'. Proficiency in IT/networking is not the same thing as developing a maintainable, object-oriented, large-scale application. That takes experience and TONS of effort, whether you have a CS degree or not. The guys handling network administration are not the guys that can build complex systems.
>> "I don't have a computer science degree"
Found this sentence and did not read the article. The guy lucked out by being in the right place at the right time, and now he's spouting his confirmation bias to anyone who would listen. I'm also pretty sure he doesn't know what "confirmation bias" is. :-)
I've stopped relying on computer science degrees
I know few people who ever did. If you have a pile of 1000 resumes and only have time to sort through half of them, throwing the half without CS degrees in the trash is a method many people use.
In my experience, self-motivation, a nearly pathological interest in the field, and great problem-solving skills are vastly better indicators than a college degree that a hire will be successful.
No kidding. How much of this can be discerned when looking at a resume though? Again, when you have hundreds of resumes for a positions, whether someone has a BSCS is a good guide for trimming down your pile, especially for positions which don't require a lot of experience.
When a bad economy comes, like now to some extent, compared to 1999 any how, have fun sending your resume out looking for work while companies inboxes have lots of applicants with a BSCS. Some require it on the job posting, and HR will often ask you even if it is not a requirement. It may be smart or dumb to do, but you're not running the company so it's not your decision.
I don't dispute a self-taught self-motivated, interested problem solver can do a better job then a BSCS who slogged through class in a lot of the standard grunt programming work companies do. And there are outliers - John Carmack is a better programmer than 90+% of BSCS holders ever will be, even though he only attended two semesters of college. But BSCS holders seem to me to be able to do more of the creative, ambitious, higher level stuff. The problem isn't just that self-taught programmers don't know some of the higher level data structures and whatnot, it's that they don't even know they don't know. That's what the real problem is.
You don't even know. MIT grads can be excellent, or not. I've known a few I wouldn't trust to do my laundry.
Dude, I had a BA in computer science and a decade in the field when I was washing dishes in a cafe and deli many years ago. That's a vast understatement of my qualifications then. I've cleaned the same grease trap over, and over, and over. Do you know what a grease trap smells like? It smells like fragrant death. I had to deal with the owner's daughter, whose sole gift to humanity was that she was born rich and thought that was a reason to beat me down. I used to pause while walking the mile to work in all weather here and there to vomit.
And at that time I had implemented LZW, designed my own operating system, programming languages, popular BBS forums, a platform for magazine distribution through self-executing e-zines, a streaming graphics protocol and a number of other things. Had been a Unix admin for a decade. Everybody involved knew I shouldn't be there but that did not change my life. And I guess that's OK. I had to survive to find the opening I needed to get out of that hole, and they needed things too. I'm not afraid of honest work. I managed to learn some useful things: I'm still a killer chef and baristo. I had to fight my way out of that hell.
Eventually I got lucky and got back in the tech game, and have since found a good spot for me. Ever since I don't assume things about others, no matter their situation or education. They have only to show me they can and will do the work, and they suit.
Help stamp out iliturcy.
The author thinks Basic and DBase are the technology milestone to be marvelled at and a book on "compiler theory" is all kinds of nonsense. Text book example of Dunning Kruger effect at work.
...who taught themselves how to code when they were 10.
Who owned a Timex Sinclair T1000 when they were 11 amd learned the entire Z80 machine language set simply by experiementing with PEEK and POKE... as well as learning Pascal.
Who wrote our own games.
Who owned three different computers by the time they were 12.
Who then majored in Computer Science (dual major in Mathematics) simply becuase that is what they really loved to do.
Yeah... fuck that. I would never hire such a person.
Andrew Oliver: what a complete and utter dunce.
I am very small, utmostly microscopic.
While many "CS" departments are just awful, check out the curricula at the top 10 CS departments (that ranking is decided annually by consensus of CS department heads) -- CMU, MIT, Stanford, etc. You get a through education in computer SCIENCE, during which you learn both the PRINCIPLES (including healthy doses of hard core theory--proving programs correct etc.; AI; databases; hardware, etc.) and the BEST PRACTICES of programming -- as much as is feasible in four years. IHMO a good CS education requires an M.S. If you intend to be a programmer, chances are you are going to start out as a good relatively inexperienced one and with experience become one of the 10%'ers that can out-program 10 mediocre programmers. But many people with CS degrees are not focused on programming -- for example, they may be focused on software engineering, which is a separate but closely related field. And of course he are people who get CS degrees, just as there are people who get physics degrees, not to work in CS or physics but to use their education in another field.Finally I'll note that some people get CS degrees so they are better prepared (assuming it's from a good department) to get M.S. and Ph.D. CS degrees.
Doug Jensen