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.
Thats all people care about. Some HR departments will only use a checklist with CS degree if they are a very large company. But CS graduates are often unemployed after graduation due to the lack of experience in hard times.
What IT needs is someone to fix shit. Not talk about mathmatical models when the server goes down.
If you want to get those nice jobs my advice is to pimp yourself out contracting for 2 years. The work is hard and the pay is mediocre at best but your contacts get HUGE afterwards when your non compete agreement ends and you can make bank. After that only hte most beaucratic companies will weed you out on that piece of paper.
http://saveie6.com/
Poorly written and full of absurd sweeping generalizations.
Is a student loan an inverse indicator of future success? Does that mean that doctors with highest debt are the worst? Can I mark this article "Troll"?
Same answer for both.
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.
These days, I'd recommend getting a degree in "Stupid and pointless article posts to Slashdot" What do you think, Soulskill, know anything about that?
Go to college for your degree and teach yourself along the way.
You'll have a better chance getting the interview with a degree and teaching yourself will get you the job.
Tards.
Newz i can uz 2 snooz! U looz!
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
I think if you already have the real world experience, obtaining a CS degrees /may/ help your corp cred. Is this advisable? I don't know.
You are certainly going to have to do more on the sidelines to make your degree applicable.
Next question...
I wouldn't be surprised if your run-of-the-mill CS graduate wasn't as skilled as your average self-taught software engineer. The existence of a degree will mean that more people that aren't as deeply into it will enter the workforce, so yeah, there'll be a certain amount of watering down. But universities also do put out some skilled programmers, and so as the overall number of programmers becomes much higher, so does the overall number of skilled programmers.
In other words, there aren't enough self-taught programmers out there to fill every job, so limiting yourself to them only harms your chances of finding the right fit.
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.
See subject.
Fuck systemd. Fuck Redhat. Fuck Soylent, too. Wait, scratch the last one.
For me, earning computer science degree was a scheme to get my parents to let me screw around and teach myself to code while finding my own way for 4 years.
If you graduate from high school and spend the next few years living off your parents while screwing around on your college, you'll find yourself cut off very quickly. If you do the same thing, but also earn a computer science degree, then your parents are satisfied that you aren't just aimlessly drifting through life.
If I hadn't had 4 years of time to really tinker with my computer I doubt I'd be half the coder I am today.
If you spend 4 years studying computer science, and got most of your learning from a classroom, then unless you went to a really good school, you are screwed. Hurry up and learn something marketable.
[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.
Most schools suck at teaching theory and aren't great at Java instruction, either.
My computer courses at University in the 80s:
Year 1: Structured programming using Pascal, Business programming using Cobol (course was half teaching the language, half theory)
Year 2-4: Data Structures, Operating Systems, Database Management, Graphics, Numerical Analysis, Compilers, Real-Time Systems, Software Engineering, ...
Every course that required programming used a different language, usually the prof would say something like "in this course we'll use C, for those of you not familiar with C, I'll give a half-hour introduction at the beginning of next class." People would groan and say "how can we learn a new language in half an hour?" The prof would say "you learn languages on your own by reading the manual, how do you think it works on the job?!"
I came out of University loaded to the brim with theory, that's the whole point of "Science" in "Computer Science." And the Uni placed us in internship programs where we got real-life experience... Maybe your Uni/college is doing it wrong?
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.
A CS degree means that your mind are tough enough to support long hours of boring classes. OK, just kidding. Although I had a couple of years of experience in programming before I applied to a college education CS I can't just say that I haven't learnt anything. In addition to CS theory (I think it helps) I studied some useful things like Psychology, Entrepeneurship abilities, Mandarin Chinese (It is useful, believe me), and the last but not the least, I went to a lot of parties and drunk lots of beer.
What I want to say is that the Univesity environment helped me to open my eyes to world problems. I can't imagine my life without a college education. Life isn't just about coding, believe me. It's hard to believe if you do it for living.
The university academical environment is not for everyone at all. There are many programmers that would feel sucks at the univesity enviroment. That's ok, different choices for differente people.
is just 1 subset of computer science. And those who got a degree and can't code, were they from a top 10 school with a good GPA? Anyone can just barely pass, have to keep taking summer courses, repeat courses 3 or 4 times, and finally get their degree. Now if you showed me a grad from CMU with a 3.0+ GPA who couldn't do code or theory, then we have issues...
I assume that a fellow with a degree knows more about how to engineer things properly rather than just hack something together.
Speaking as someone who holds a computer science degree, no, it is certainly not worth getting, don't even bother.
Translation: The fewer of us there are (lower supply), the more we degree holders will be paid (higher demand).
Speaking as a business owner, no, it's certainly not worth getting, don't even bother.
Translation: If you are skilled (can produce value for me), but don't have the degree (lower demand for your skills), the less I have to pay you.
Speaking from your best interest, yes, get the degree. Why you should do so is left as an exercise for the reader.
Why bother?
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.
Having just gone through an exhausting whirlwind of a job hunt in the bay area, I would say, yes, absolutely, a degree in CS is worthwhile. I was eliminated from consideration for a good number of positions because I did not have a CS degree and I was asked about having one in many phone screens and interviews. The act of being able to do pen-and-paper/whiteboard programming tests (something you'll get a lot of in CS classes) and talk about what I'm doing with some level of competence was key to my successful prospects. That, and working with people in paired programming sessions/being a nice guy helped too, something you'll probably get experience with in CS classes as well.
In the very-much-non-tech-town I am from, Phoenix, I was asked about having a degree once. This may be one of those things that varies on your area, but for areas that matter (here, probably a few select cities elsewhere) it would be advantageous to have one.
And if you think there aren't companies that feel the need to train you, that's ridiculous. I took what is all intents and purposes an entry level Ruby on Rails job after over a decade in PHP and some past (mostly 3 or 4 years ago) RoR experience. There are good companies that will hire good programmers regardless of what languages they know--I know this because I am working for one now. You do have to find them tho.
"[T]he single essential element on which all discoveries will be dependent is human freedom." -- Barry Goldwater
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.
step 1: tell everybody not to get a cs degree
step 2: ????
step 3: profit on the scarcity of your cs degree
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.
Freshly minted engineers of every stripe are virtually useless when first come out of school. That is nothing particularly new either. This is not really the fault of academia either. There are simply too many variations in the skill set required by potential employers to try to custom fit each perfectly. Does that make a self-taught engineer/machinest/mechanic/technician better than an engineer with a degree? Only in as much as the particular skillset matches the particular job opening. If nothing else, CS/Engineering degrees represent a rite of passage--it indicates to a potential employer that you have been exposed to some level of technical instruction and have achieved some mastery of it. It is likely a person with a CS or engineering degree will be more versatile and creative, but not necessarily more productive or capable.
What is really missing is simple Java/C/C#/C++ programming as a trade. Much like machinists learn just enough mathematics to do their jobs, two-year coders could be taught just enough about algorithms and discrete math in order to do the job. Because, let's face it...if you are programming today, you are likely using libraries for most everything and just writing enough code to tie the output of one call to the input of another. To do otherwise is to reinvent the wheel. That is the sort of thing that well motivated tradespeople can do all day long and with focus and consistency that would put many CS degree holders to shame. It is only the air of mystery that hovers over the curriculum that keeps "non-math" people from entering the field. And if you think that tradespeople lack the brainpower to do most of your jobs, try trading places with a CNC mill or lathe operator some time. Or maybe watch a mechanic diagnose an engine or transmission problem.
Most CS people are not thinking great thoughts, deriving algorithms from scratch, or coding to bare metal. They are stacking Legos. And I think that gets at the heart of the question. A self-taught and motivated Lego stacker might be a better fit than an inexperienced CS graduate, but a better option would be to have a certificate or technology degree with a practical programming focus.
A CS degree, and consequently most CS graduates, are hyperfocused on one aspect of software development: algorithms and data structures. Unless you're making AAA games, your learning should not end or begin there. Any other, more useful, parts of software development (design patterns, TDD, etc.) fall by the wayside because so much time is spent familiarizing the students with, well, programming language and OOP basics. However, since the CS degree is the closest thing to a "software development degree", employeers will continue to require it for even the most basic programming jobs. I don't expect the complaints about CS degree holding aplicants that can't fizzbuzz ending anytime soon, either.
Andrew C. Oliver is a professional cat herder who moonlights as a software consultant. He started programming when he was 8 and cut his teeth on GW Basic, BASICA, and dBase III+. He is most known for founding the POI project, which is now hosted at Apache. He also was one of the early developers at JBoss before it merged with Red Hat. He is a former board member and current helper at the Open Source Initiative. He is president and founder of Open Software Integrators, a professional services firm with offices in Durham, N.C., and Chicago, Ill.
And he has a degree in computer science.
A squid eating dough in a polyethylene bag is fast and bulbous, got me?
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.
What this really boils down to is the fact that a lot of software development is a craft, and not a science. Schools don't teach the craft of programming, hell with a four year degree you barely touch on the basics. Figuring that out is something we're left to do on our own and it's largely up to experience to make that happen. So the reason self-taught developers seem preferable is because there's a certain comfort in knowing that we do this stuff for fun - but that never has been or ever will be mutually exclusive to the self taught. I've known awful self taught programmers, and I've known incredible programmers with a doctorate. It's all down to circumstance, common sense, individual strengths, and interests. There's a lot of reasons people get computer science degrees, not all of which are "because I fucking love it!", which is why it's not all that useful when picking out a candidate.
No if you just want to sit to code like a monkey on whatever tecnology the industry is developing at a given moment.
Nothing to see here, move along.
That's funny; I've been a 'self taught technologist' since about 1992, and I am seriously considering a CS degree...
...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."
I used to work in a team of 12 people. About half of them have master degree in CS. The rest have BS in CS or ECE. I have never worked in the better team. Pretty much everybody knows, say, not only what are getter and setter, but also when to use them. When someone doesn't really know what others are talking about, they ask a bit and do research on those things on their own, which is what I think a habit they got from grad school.
I joined that team when it is newly formed. The manager has all the freedom and time to choose people he really wanted. He did a great job hiring this staffs.
That was 6 years ago. Unfortunately most people went for greater things, including that manager and me, and that team is now just another team in the company.
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)
You are so right, because there is nothing that lets you work with others or see something through to completion other than going to school.
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.
It's a silly question... the answer depends on the motivations and character of the individual. Just to have a piece of paper to wave at potential employers, probably not. As something that might get you started in a long (20 plus years) program of study that should be rewarded with good paying jobs along the way, yes, if you choose wisely. Avoid online programs for now, they're not ready for prime time yet.
The IEEE and a number of states are working toward getting Software Engineering to be recognized as a real engineering discipline, with a PE available for those working in the field. Granted, programming is only a part of software engineering (an important, but not only part). As an IEEE member and software engineer (without degree), I can appreciate what is involved in this move. My friend Dr. Gary Blank (IEEE VP and presidential candidate in this year's IEEE election being held right now) is very keen on making this happen for real over the next couple of years, and has been working diligently toward that for several years now already.
At the company I work for, we generally don't hire new CS grads, with some exceptions - those with prior experience, or who have completed a successful internship with us. All of our new hires have to "hit the ground running" because of the demands of our business. I was a new hire just under a year ago, and felt like I had to strap on the rocket-powered roller skates the first couple of weeks on the job - and I have 30 years experience as a software professional. No sitting on your laurels here! Since then, all of the new hires who are showing a successful transition into the organization that I have observed have been totally competent at their jobs, and able to adapt to new requirements quickly and without complaint. Instead of someone saying "I can't do that - I don't know language X or system Y", they just dig in, learn the language/system, and apply it to solving the problem at hand. One thing that helps is that everyone here seems willing to help people get up to speed as quickly as possible. One intern-turned-employee after he got is CS degree earlier in the year helped me tremendously in getting my development environment sorted out with our various hardware emulators and such. I've helped others with advanced Linux development techniques, and am now mentoring a young engineer in formal modeling practices and advanced C++ coding techniques. He has a CS degree, quite a bit of experience in the company, and writes competent code, but his formal engineering training is sadly lacking - a lack I am trying to remediate now. He seems very receptive to what I am trying to teach him, so this will probably turn out well for him, me (he is helping me tackle a really hard/complex job in real-time predictive analytics of system performance), and the company.
I would not hire anybody who is "Self Taught".
Then you're just another lazy employer that refuses to actually evaluate potential employees and instead chooses to rely on degrees. This is especially idiotic if they can show you that they know what they're doing and they have the required skills. At that point, a degree should not matter.
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.
It depends what kind of programming you want done. If you have code monkey coding you want done, then maybe you're OK. But if you really want PROGRAMMING done, you want someone who understands the practices. There are many, many, many programming jobs I've been on or needed others to do where correct application of the practices was necessary for a good final product. That's especially true when you're on larger projects where components and/or people need to work together, or on projects where you have data that needs to be associated/manipulated in interesting ways.
paintball
I would not hire anybody who is "Self Taught"... etc
Ambiguous criterion detected.
Case the criterion fails to answer: having a formal degree in a non related field, with relevant experience for the position being self-taught (my case: graduated physics, have 20+ years professing as a software engineer/programmer, team lead, tech manager, etc).
Questions raise, answers kill. Raise questions to stay alive.
CS is not = IT and IT needs more trades based learning with on the job learning / apprenticeship.
apprenticeship not tied to degrees are needed and can mix in with tech schools / Community Colleges. internships are a mixed bag and they should be not tied to College.
I review a lot of resumes and perform a lot of interviews for CS jobs. I value both experience and education. If you're a recent grad, don't try to feed me the argument that you have no experience because you just finished school. I get candidates who took it upon themselves to do their own projects at home. Proving that you're motivated goes a long way with me. Resting on a degree and assuming that alone will get you a job gets you no where with me.
the guy that invested time, effort, and money in a degree will get the job. That's 100% makes it worthwhile. Employers would like you to think that you're easily replaced, the reality is quite different.
Get a degree, I'm self taught, I'm very very successful and sought after. HOWEVER it was touch and go many times simply because I was filtered by HR for not having a degree. Even now, I'm sought after by companies that have hired me before or from people that know me, but can't get even a low level job in any company that say "degree level".
PhD's are not worth it, the basic degree is. I know it sucks but lots of companies have HR that simply filter by degree as the first phase in recruiting.
Many of the comments, and the description, indicate that people seem to find in their new hires exactly the thing they expected based on their biases. Good job reading your own mind.
I followed an unusual path into programming. I did various jobs before joining a large company as a trainee programmer. After a couple of years as a programmer, I left and did CS degree. In my first job after graduating, I immediately started finding the stuff I learned in school directly useful in my job. One of the first things I worked on was a parser that used a state transition network. I would never have known to use that approach to the problem before I took CS, and I believe I would have got bogged down in the problem without that knowledge.
So it really depends what problems you want to solve. If you want a job generating reports from a database, a CS degree is probably overkill. I in no way mean that as an insult to people whose work involves database reports -- I've done plenty of that too. But if you also want to solve more challenging programming problems I think a CS degree is a good way to go.
EE was the way to go but not so much anymore.
more like makeing a mechanic have a BA or BS in car engineering in where you don't even go to auto shop as part of classes. And some peopel who went to say 2 year of less Auto tech school with lot's of classes in the shop get passed over.
Your mileage may vary, but I think you deserve to hear the truth from somebody that has actually hired developers and managed them.
Anonymous Coward claims to be many things. Trustworthy is one thing he is not.
Posting AC for it's own sake.
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
I admit I do not have any experience with hiring, but from what I hear from /.and other sites is these employers have to deal with dozens if not hundreds of qualified applicants. At that point, you're not going to spend time getting to know all those people, and assessing them for the nebulous qualities that can't be gauged from a resume (hard working, good communicator, gets along with others, etc.), you're going to take as many shortcuts and possible, and yea, graduating college shows you have additional qualities that would be an asset which puts those applicants at an advantage. Imperfect? Sure. Would you resort to it if you had to shuffle through hundreds of applicants? I'd say yes, especially if you just want to hire someone ASAP w/o doing detailed analysis of each applicant.
I hire developers and manage them. I hire people who I feel are a good fit for my team and my organization. I hire people who have a passion for coding and are willing to continue to learn and help others learn as they do. I hire people who can and do complete projects on time and with few issues.
These requirements are far more important to me than how someone got their resume to me and what it says. Sure, if I have two otherwise identical candidates and one has a graduate degree from an Ivy League school, I'm going to choose that person over the other. However, their resume only gets them in the door, I take the time to really look at the entire picture instead of simply giving the term lip service like you do.
It sounds like advice to other folks to hire people without a degree in the field so that they will be more loyal to you and less expensive. Without a lot of experience this is true. Folks with a year or two of experience with a degree will earn more than folks with a year or two of experience without a degree. That said, after a few more years it events out.
In the end, you have to judge the individual, what they learned, and how they learned it. I have met idiots who had a degree (even multiple degrees!) and idiots who had no formal education. They come in all shapes and sizes. Anyone who thinks in blanket statements like, "All college graduates in CS are worse than self taught" is proving my point.
I found my programs at West Chester (CS undergrad) and Villanova (master computer engineering) to be very useful and improved my abilities at work. I learned a lot in both and I had been programming since I was 7 or so on my TRS-80 Model III. They also made me more marketable. I feel it was totally worth it.
-- soldack
Among a lot more of things, a CS degree helps me to see the whole bunch when I deal with corporate class projects/problems, including user (human) perspective; PC (machine) perspective; server side perspective; the whole OSI layer (network/telecom); across the world and the whole path back again.
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
I have been programming professionally for over 20 years with no CS degree. I have learned much over those years and made many mistakes. My programming has bounced from (roughly in order) basic, asm, real basic, VB, c++, perl, SQL, PL/SQL, VB.Net, Java, c#, PHP, C++, Objective-C with most of those early ones disappearing from my brain over time. But throughout all that I didn't know I was missing some CS bits from my knowledge. I started watching the video lectures from Stanford and so on and my knowledge easily doubled. The math I use to apply was basically simple algebra and endless x++; But then I expanded my math through a TTC course on Discrete math and now my programming is completely different.
Where I have been lucky is to have the freedom to change platforms, architectures, and languages quite freely. Where I have seen many CS people fail is that with their degree they get a "good" job at some company and become the master of say Adabas, MFC, or even something modern and common like Java. Yet soon enough you discover that they "have heard about unit testing" and talk about how hard it is to change the "culture" of their company. Thus their skills become more and more focused all the while becoming more and more obsolete. So when a CS person like that tries to interview they tend to be way out of date.
Also there seems to be a trend in the IT world to try and keep the problems simple. So rarely does your average company programmer get to explore genetic algorithms to potentially save the company millions so much as they get to program a tool to integrate the database from the new subsidiary that was purchased.
So I would say that getting a CS degree is a better way to get a "safe" job as it will get you past HR but that a commitment to a lifetime of continual learning beyond just what you need to know to solve the problem in front of you is key to becoming a great programmer.
The one warning I do have about CS degrees is that your CS professor was almost certainly wrong when expressing any opinions. I don't know how many CS grads that I have worked with who are OCD about things like code being made up of a certain percentage of comments, or lines not being more than 80 characters long, or using hungarian notation for variable names. These might have been key to passing arbitrary goals set by certain professors but they usually just serve to annoy in the real world. Often these CS OCD types will not only make massive faux pas such as tons of magic numbers but they often go even further by showing off by using 0x7DB instead of say 2011 in some date function.
But certainly the worst programmers out there are the ones who went to some crap technical collage, learned some crap language like Powerbuilder, got a job at some large corporation, and 15 years later are still pounding out crap Powerbuilder code; these people are the antithesis of what I said about a great programmer coming from a commitment to learning.
There are always people like you. There are people who won't hire you because of your skin color, either (of course they won't admit it to you).
It doesn't matter. There are plenty of people who will hire programmers without a college degree. Find an employer who will. Same goes for race. You're better off not working with someone who is so discriminatory.
"First they came for the slanderers and i said nothing."
In the Fall Quarter 1978 I entered Auburn University.
At that time theew were no Computer Science Degrees, nor even Computer Science classes per say,
i.e Compute Science was yet to blossom.
As a Mathematics Major I chose to take a class from the Dept. of Electronic Engineering, FORTRAN77,
IT WAS HARD.
We used the IBM (commissioned) Key Punch Machines to embed our CODE (i.e. Programs) on
88 character cards, a technology borrowed from the Textile Industries.
At the end of the Summer of 1980, Summer quarter of taking a class in Numerical Analysis, I left, never
to return to this day.
I still have the text book on Numerical Analysis from then to this day.
Since then, I got a 'Career' at a DoD agency.
Having left that behind, I did a M.S. and Ph.D., both in Geophysics and different specialities.
Well.
This has at least for me has been an interesting ride.
There are still some things which I am 'Yet to be blessed'.
I await those.
Regarding the UN IPCC:
Yes, 'a lost caravan in the Great Desert ... The Arabia Desert ... a caravan ... each and all'.
surely to die an ignominious death
And for this caravan, no 'Orance' i.e. 'Lawrence Of Arabia' to guide the hapless
out of the Nafud to Akaba and Absolution.
A pity. Yet Necessary. This time!
Those who die ... need to die ... and deserve death ... it is written.
For the Greater Good.
I agree, most "CS" or software engineering jobs are actually IT jobs, and most IT jobs seem to require a lot of depth in someone else's technology or a series of technologies. It doesn't help that companies don't let you do your own on the job training. Most CS graduates with proven job experience can learn anything if you give them the chance.
Maybe there wouldn't be such a mercenary culture if companies wouldn't all conglomerate in Seattle or San Fran. $90k can go really really far in most of the US.
Seriously, wtf is wrong with ./ that makes this a news story? And in general, wtf is wrong with these so-called pundits who keep writing these asinine postulates?
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.
More like a driver whose been learning since he was 8, because the driving lessons don't start till 17. But yes, I basically agree with you. Self taught people are more motivated, and tend to know more because they started sooner, and work/learn during weekends. The more varied things you write, the more you've expanded your understanding of problems you'll face in future.
HOWEVER, if you don't have a degree you won't get past HR, and your skills will never come into the equation.
It's as simple as that, you still need a driving license to drive. You still need to do the test because they won't let you on the road without the paper.
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
Almost every programming job I see posted requests a CS degree. So you only need a CS degree if you want a programming job. Or, if you are a super-elite hacker god, you can probably get by without one.
My experience with a small company(extremely successful 20 year old software company) that was gobbled up by a huge multinational(but still essentially it's own division) is that it varies, though mostly leans towards your conclusion. The multinational requires education credentials and inflated experience requirements on the job postings, but after striking out numerous times we just tell the recruiters who to call after we get referrals or troll the local market ourselves. As it stands right now, every developer hired has a strong portfolio, education level be damned. This isn't the case in our support group, where management follows the new corporate standards and get these certified and/or educated people that don't know their ass from a hole in the wall when it comes to supporting industry standard/common software and learning/supporting the proprietary software developed by the company I work for.
Realistically, someone who is motivated and intelligent will have their own personal portfolio to back them up. Those that aren't just go to school and expect profit. I know it, you know it, recruiters don't want to believe it because they spent $50k to get their degree and want the people they recruit to go through the same.
In today's economy it's tough to get started. If I'm reviewing a bunch of resumes and I see one who graduated from a well-known university vs someone fairly new without a degree, the person with a university degree will be the first to get a job interview. They have already proven that they know a certain baseline of material. Also, if I have to choose between someone from a 4-year college vs someone from one of the for-profit technical schools, I'll take the college first.
I'm sorry to say this, but unless you have a really good reputation, forget it.
Now, once you have some real job experience the college degree is less important.
I was self-taught before going to college. I still learned a huge amount in college since I had access to many resources otherwise unavailable to me. I was lucky in that I was able to get an internship during college writing software, (early 1990s) but the economy was in much better shape than it is today.
-Aaron
This post is encrypted twice with ROT-13. Documenting or attempting to crack this encryption is illegal.
Then you are missing out. The best coders I've ever had the pleasure to work with are self taught. The mist important member in my team only has high school. We work on highly successful products. I garuntee you heard of them, and quite likely own one. It's name has the same recognition as Kleenex. Just to give you some context (so you don't assume that what we do is trivial).
...that are killing you. Remove them from your resume and hilight your versitility instead.
Kevin Rose said the other year that at Digg they found they absolutely needed people with degrees for the background in algorithms.
I think a big factor in this guys point of view is being a consultant, while there are exceptions most consultants write code they don't need to see again let alone maintain and scale for years. Rather than writing a pointless article, perhaps his time would have been better spent fixing the vulnerability known in Apache POI for the last 4-6 months.
I have been doing this a long time. Very, very few companies care about degrees once you have a certain amount of experience.
True, but then normal way of getting experience is to have a job. It's the old adage, you can't get experience without a job and you can't get a job without experience. That's where the degree comes in. It gets you in the door long enough to get "real world" experience.
...those with CS degrees can't code, or just implying that programming is beneath them?
Time is what keeps everything from happening all at once.
t forget, someone who is self taught hasnt had some one say "You cant do that" to them. They just might have innovative and unusual approaches to try. Some will fly, some wont. Still worth having on the team.
I'm a head IT manager at a medium sized company and I'm 25. I repaired computers since I was 15 and was running that as a pretty decent company by the time I hit college. I knew PCs inside and out but MCSE, Linux, advanced programming, low level networking functionality etc that I learned getting a 2 year degree at a public tech college easily doubled my knowledge. I would utterly suck at my job without that degree (technically I got 2 degrees in 2.5 years). If someone doesn't know what the SDLC is and can't tell me what a phased deployment is, they're not working at my company and hopefully not any other company either and we don't even go all that "by the books" really.
If you're so smart but you can't figure out that getting a degree for partying and minimum tuition (oh, it exists) is a good move, you aren't so smart. Sure, some exceptions that can't afford a degree but it's moot. "I'm smart but I never attended college" is almost always spoken by someone who turns out to be dumb
No offense to anyone. But I find I have to dumb down most of the stuff I do because otherwise a large group just "don't get it."
Something simple as data structures is mostly alien to self taught or to people without a degree but taught on the job. I had a formal course on this and I almost always must dumb down. Forget concepts and say hello to really simple examples in order to get your message through.
Same for parsing simple legacy file formats. During my CS degree we had to build a simple compiler. Invariably I look back at that assignment and reuse and refine concepts from that course. The reality is that scanners, tokens, parsers, Aho, Sethi and Ullman are all terms and names that only make you look smug.
By now you'd almost think a CS degree is a necessity. But it isn't. Nowadays rhetorics gets you very far. Admittedly not only in IT. Also the ability to succumb to horribly ugly software, clearly coughed up by idiots with a degree in a completely irrelevant field (history anyone?)
If you truly are serious about CS then bite the bullet and get a degree. Sure, you'll get frustrated but at least you can lean back and enjoy the poor, struggling masses.
I hadn't the slightest objection to his spending his time planning massacres for the bourgeoisie... (P.G. Wodehouse)
Everything that exists today that is not natural was once thought. Therefore there is not a single thing a college can teach you that you couldn't think of on your own.
I am guessing you do not have a degree from a real college
1. Be willing to pay them obscene amounts of money. Yes, this means more than the next employer is willing to pay. No matter what folks say, size does matter. Salary is just a way of keeping score.
2. Creative Freedom - don't do endless micromanaging on coding style, and restricting open source from being used.
3. Free energy - ample supply of caffeine and sugary snacks goes a long way
4. Technology Stipend - Good craftsmen understand that they need the best tools to do their jobs. Don't stick them with some random corporate IT-issued desktop with Windows98 on it.
5. Stroke their ego about once a week.
The truly good companies that are able to attact and retain the smartest developers are all good at some combination of the 5 items above.
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)
Where in classes you learn real job skills doing real work.
Yes, it will cost companies. But Germany's economy, and its businesses, are roaring along while the rest of our economies are wilting on the vine. Investing in training a skilled work force would also boost the earning (and thus buying) power of our consumer population, further adding to the businesses' bottom line. The whole thing would be more than worth the investment.
But alot of them can do a tech / trade school and some can learn real well on the job.
I'm currently studying Computer Science at the University of Buenos Aires, here they don't teach you a programming language, that's something you do on your own, when you're given something to code, like homework, you do it in the language that you like, you're not there to be taught a tool, but to learn things that apply overall, if you expect to learn Java in school so you can become a java guru, and be the hero java programmer then you're doing it wrong
The underlying theory does not change, and a person with a degree from a good school will be able to pick up the new skills as needs arise. That AC is hiring people that have a high probability of being trainable. If the company actually does this training, then they've got it right.
I blogged about this topic: http://programming-puzzler.blogspot.com/2012/06/i-feel-sorry-for-computer.html
We always need manual labor.
Part of the problem here is conflating computer science with software engineering. It's like confusing physics with civil engineering.
"Self-taught technologists"
:P
Yeah. Nice name. Like civil journalists. You can improve yourself, learn new programming languages by yourself, read books by yourself. But without a proper basic education mass, self-taught will almost always remain below the ones who had at least some education in math (algebra, analysis, numerical, statistics) and algorithm theory.
Regarding Bachelor's, the article clearly speaks about the U.S. but I think I can generalize that a BSc/BEng degree is not much, anywhere. If I'd filter based on degree, MSc/MEng would be the first step.
"of the people who earned a computer science degree, most don't know any theory and can't code"
That's somewhat also my experience, but with about >50% with Bachelor's, and about 30% with Masters.
"but most of them teach Java"
Again, I assume it's about the US bachelor's CS education. Has to be because I know of a lot of places where Java is only one of the taught languages.
But, again, languages is what I care less than knowledge. You can pick up a language much easier than pick up theoretical knowledge. And I always thought about a CS education to provide more than coding practice information and teach a language. If done properly, and taken seriously, self-teaching oneself to a Master's degree level could take ages.
"I've stopped relying on computer science degrees as an indicator of anything except a general interest in the field."
Yeah, so you're the one responsible for 12-turn, weeks-long interview processes with gazillion quizzes and on-the-fly by-heart coding drills. Thousands of people must love you very much
I am putting myself to the fullest possible use, which is all I can think that any conscious entity can ever hope to do.
I don't know what they learn today. Java?
At university of Copenhagen (MSc) we learned to put together a computer, starting with simple gates. Modern superscalar CPU architecture, cache technologies, etc. Then microcode programming, moving up to 68000 assembler, C, Pascal, Prolog, Miranda, Occam, Emerald, C++ (Simple intro only though).
We learned datastructures, wrote operating system kernel, C compiler, 3D wireframe animation, implemented shared memory libraries on a 16 CPU platform, branch and bound multiprogramming, etc.
Today when I interview graduates they can't explain the typical difference between a thread and a process. Preemptive multitasking is a conundrum to some. Don't get into semaphores. When to use hash table instead of self balanced tree, er, huh? Duh! Facepalm.
With the self taught nobody seems to want to check the result of allocation calls before using the memory or understand bounds checking when writing to buffers and the importance of whitspace to make it maintainable.
Ahh, but it feels good to rant..
I am a Electrical Engineer turned web-dev.
I worked with a fair number of CS grads in my current job. Certainly I am neither a rock-star developer, nor the yard-stick to measure their CS theory... I can tell you that half of them have bad habits like: writing spaghetti/un-maintainable code, not testing code for errors/exceptions, rarely documenting what they code, hardly or never clean up the code for optimal performance and pushing un-compilable code to the main branch. At times, it is undiluted agony to work with them.
I have absolutely no idea what they learn at school. But from the information I gathered from a recent intern who worked with me, he doesn't give a s#!@ about coding, and just killing time to join a bank/financial firm. Surprisingly, he didn't know how to debug codes using a given IDE or initiative to pick up that skill.
Increasingly, my team is getting filled with developers from other majors... mostly Engineering grads, instead of CS majors.
I'd prefer electric chair than go to college. Go to college only if you want to be in debt your whole life.
There's nothing you can learn in college that you can't online.
You don't need a degree to prove what you are capable of, you can prove your skills with code and portfolio, etc. Learn how to sell your skills, improve your vocabulary, etc.
I won't force you not to go to college, but think twice about it. It doesn't make a difference anymore these days.
https://www.youtube.com/watch?v=Y3eAcq9TDqU
It's true, there are talented individuals with the ability and motivation to become self-taught and successful in computer science. They are a subset of the field.
Most individuals, even those with lots of raw talent, will benefit from getting a CS degree *from a good school*, and not just for the piece of paper (hat tip: if you're going to school for the piece of paper, you're either in the wrong school or the wrong field).
Firstly, there is the fact that schools with established internship/co-op programs offer an institutional advantage to getting your foot in the door (another tip: if your program has optional internships/co-ops, consider them mandatory; if they don't have them at all, consider another school, unless you're in it for pure research and going for a PhD).
But also, consider the employer's side of things. Now if you've already broken out and established yourself, maybe you had the wherewithal to develop a unique app or web service that caught the industry's attention, then more power to you! But if you haven't, you could have all the skills in the world, but how are you going to demonstrate them to a prospective employer while they're looking at your resume? Chances are, you won't, because your resume will be tossed in the round file. It's not necessarily that you aren't te jewel in the rough you think you are, but it's that there's too much rough for most employers to be interested in sifting through. For every fantastic applicant with a non-CS degree, there are a hundred others who also lack a CS degree and as well as talent.
Top-tier employers are focused on college grads for new hires, it's just that simple. There are ways around that, but most of them involve becoming an entrepreneurial success in your own right, which again is fantastic, but not feasible for everyone.
In short, if you're wondering whether you should pursue a formal education in CS, you should, and a corollary is you should try to get into the best CS program you can. Those who don't need a formal education in CS won't be wondering about it.
Along the same lines, it's bad advice to tell the average person to avoid college. Those who don't need the degree should come to that conclusion themselves, taking on the accompanying risk (sure, Bill Gates and Steve Jobs dropped out of college... but many others dropped out of college who didn't become Bill Gates or Steve Jobs). Advice ought to be a matter of playing the odds. Chaces are, you aren't advising a super-genius.
>> "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. :-)
Go to school, keep tinkering, and get internships.
That is how to set yourself up to be successful as a professional programmer.
Also, a good internship pays very well, gets you a good sense how to do things right, and can land you with a job offer (or two) before you graduate.
Not since the 70's.
I'm largely self taught, but instead of the programming route, I went more into networks, OS's, hardware, etc.
In '93 I had dreams of being EE (electrical engineer) after .mil service and being a damn good tech and teacher of fellow students.
Somewhere about calc2 that dream died and I discovered computers (mandatory for EE'ish people) and I was good with those
because I was doing things real UNIX admins were doing and students would see and say "You can do that!?"
(no surprise, a lot of that stuff is trivial and standard...now).
Anyway, a big part of my success was being able to communicate to the highers and lower ends of the tech spectrum, which
a lot of "CS" people could not do, and still have a difficult time doing even today.
But even ignoring that, IMO: CS is more than just programming because experience and constant reminders show this:
Excellent programmers, especially in CS/academia don't have a clue about their machines and what goes on behind the
scenes.
Case in point: a very good friend of mine was one of those clueless users, but a fantastic programmer whose pr0n surfing got
him a nasty bug on his laptop. He could not figure out how to get rid of it, much less easily do a nuke and reload w/o
backing up stuff he could not afford to lose.
Well, when he got a job doing embedded systems (he'd never dealt w/ hardware) he was worried about getting canned w/in
a month or less. My advice was "Dude, don't worry, you'll love it because it fits you perfectly and you'll do well".
That was over a year ago, and I was right because he has that anal retentive, laser like focus and over caffeinated mindset
that need control freaks w/ some creative leanings.
I say that, to say this: knowing that, he barely passed the intro to linux and windows class that I aced because of a lack of
experience and the class itself contained good material but was schizophrenic at worst and disorganized at best.
Sadly, very few profs will listen to those of us with experience IRL/exp/jobs because they are put in a box, and in most cases
have never seen the inside of a "box" (computer), have never run a network, but teach networking in a way that confounds
"CS" people but benefits computer engineers, as another poster alluded to.
So, the "is it worth it" question boils down to "yes" if you got the exp, drive and love of the field, because my future adviser
saw my resume when I was getting into school and asked, and I quote directly "why the hell are you going back to school".
Money and a degree, because I got in when the 'pendulum' swung from degree/certs to skill/exp and I wanted to cover both.
Of course for a good decade I was never unemployed for more than 3 weeks because of skill, exp, and reputation that I'd build
over that period.
A degree is worth it in most cases whether you do it forwards or bassackwards like I did, but you have to like/love it and learn
the field and not get boxed totally into one mindset, namely "just programming".
(yeah, programming is a good chunk, but is not the 'end-all-be-all' when you are faced with: building a webserver, network,
custom workstation for X, Y, Z task, explaining why things work, how they work and at what cost an such, when a specialist
in programming will just say "Ummmm...."
Fun moments of a_non_moose: Prof: "what'll you do when a problem you can only solve by programming comes about?"
'moose: "Hire, or have hired someone who knows what the fuck they are doing more that I do, like twice in my career, so far" .
Two or three times I've been asked that, and answered the same. The looks of satisfaction and/or astonishment of the best
answer I think they've ever gotten is still priceless)
Have you read the moderator guidelines? Well, have you, PUNK? (and I want a Karma: Gnarly option)
If I'm choosing between two candidates then, all else being equal, I'm going to choose the one with the degree over the one without a degree. Moreover I'm probably going to choose the one from the "better" school. My feeling is that most employers follow this same logic. Key words: "all else being equal". If you're 18 years old and such a badass that you can reasonably expect to be hired (at a market or above-market wage) without a degree, and if there's no way you can get one without going significantly into debt, then you're probably better off just getting a job. The vast, vast majority of people never find themselves in that situation.
Computer SCIENCE is the science of computing - it is a useless indicator of whether anyone can effective use computers. Engineering disciplines are the ones which teach people to use and make tools properly. If you want someone who can do things hire an engineer. If you want someone who can understand the nature of things hire a scientist.
Korma: Good
If I were a manager I'd never want to hire you. As a developer, I wouldn't want to work with you. You can't seem to understand the value of a CS degree. That's bad enough. Then you go ahead and call somebody who does an asshole. Ignorance is bold.
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 probably won't even get in the door at most places without the degree however...
I have absolutely no problem getting interviews or jobs. Nothing but a HS degree and I started programming at age 8. I spent a lot of time teaching myself all the topics that you would learn in CS classes, though, so unless you are really self motivated, this isn't the route for you.
HA! I just wasted some of your bandwidth with a frivolous sig!
I would not hire anybody who is "Self Taught".
It's a good thing that there are plenty of other places which look at experience first, and often forget to ask about education completely once you show them what you've done before and what you can do for them. And, yeah, they tend to pay well, too. So we're not really missing out on anything.
But, of course, it's your choice, and it's your loss.
No structure, self-tought everything, no outside influences.
Just code, code code, work, do -- not think, think, create, code.
In any case - a bachelor isn't worth the paper it's printed on. Get a real degree (diploma, master, phd) and get interested in your field. People will feel that and hire you.
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.
In the longer term, programmers tend to leave programming intentionally or unintentionally after about 15 years of coding. It's a young-person's field statistically. The risk of burn-out and RSI is large, and the overseas competition weeds out those not at the top of their game. Thus, assume at least a 50% chance that you will become a project manager, tester, documentation writer, IT procurement manager, security analyst, IT sales analyst, etc. eventually.
All else being equal, a company will choose a degree'd candidate over a non-degreed one, especially larger organizations. HR views a degree as a minimum necessary requirement to ensure some sense of a general education about the world, economics, writing, and business, among others.
Table-ized A.I.
As hiring manager for the past 11 years, I have refused to hire anyone without a degree because if they haven't proved the ability to get through calculus, physics, as well as humanities, they haven't demonstrated the intellectual horsepower I assume when I hire an experienced developer. But, fairness requires that I admit that the best developer I've ever hired (because he was recommended by a colleague and I gave him a large pass on everything save the tech interview) only had a vocational certificate before he started working for me. But, even with that, I hold to my beliefs, because he was hopelessly embarrassing in every skill other than being a developer savant, and a team of ten well-rounded business system developers is probably improved with a figurative Michael Jordan at small forward hitting short jumpers with a hand in his face.
Indeed there are some people with a CS degree and no programming skills around. That does absolutely NOT mean that all CS degree holders can't program. Also, the "self-taught" programmers are exactly those who don't know how to PROPERLY do things. They are determined coders at best, but always almost have no fucking clue how about algorithms& data structures or parser theory.
The result is that their contraptions suck mightly.
All the great inventions in information technology (e.g. Unix, relational databases, modern compilers) have been designed and implemented by people with a strong theory background and some serious coding skills. Whether that is CS or maths+reading CS papers does not matter. But certainly NOT by "self-taught coders".
It seems pointless for a company to pay for training.
Consider: You pay a guy's training for a 2 week course + travel + lodging + food. Not to mention, in that time, you're paying his wages.
After that, he's just increased his yearly rate, and can jump ship to someplace else saying "I'm trained on $X".
So why should any company ever pay for an employee's training?
That is, unless there's a pension or other bonus program, and the employee forfeits that money if he jumps.
I'm not a lawyer, but I play one on the Internet. Blog
..be rational here ! We want to support a hilarous knee-jerk notion and you are spoiling our party !!! 111!
Why would you want computer science educations to teach programming languages? That is a waste of time.
Learn the students the fundamentals of the science, have them understand the Turing machine.
Then have them practise all the algorithms by doing it in any language they choose. Perhaps require them to change language for each assignment.
I can do COBOL, PL/1, JAVA, C, C++, C#, Python, EGL and others that I can't even remember to mention. My employer do not hire based on what languages you can, but your knowledge of the principles/science. Anybody can learn how to develop in any language on any system if they know how systems works in theory.
I do recommend that you employ hackers. We may come in a leather jackets with tatoos and piercings. But take those of us who got a masters or PHd; there's plenty of us. Just dont act up all cocky, we got plenty of jobs. Give us pay and let us do our thing.
01 REDEFINE REALITY.
There are many companies which REQUIRE a CS (or equivalent) degree.
So, you could get certain jobs without a CS degree. However, there are MANY jobs which will not even look at you unless you have the CS degree.
e.g. a quick look at what Google wants:
BS, MS, or PhD in Computer Science or related technical discipline (or equivalent).
"You're a bad manager because you've made an assumption, you're operating on belief"
and
"Good managers go on instinct and experience"
Instinct is nothing but belief. Experience is subjective anecdotal evidence with some belief filling in the blanks. So you're essentially saying is that belief is bad, but belief is good.
Yes, the reality is that nobody knows everything and you sometimes need to make decisions based on incomplete evidence. The rest is made up of belief. But having more evidence available to you is usually good. Having a degree can actually help you here. You have studied practises defined through research and evidence based research, rather than just relying on your own experience, which may well be very flawed.
When hiring, you are not hiring based on ability or experience anyway. You are hiring based on your available evidence of their ability or experience. Their actual ability or experience is largely unknown and is something you will find out well after you have hired them. The GP likes to see a good school on someone's CV because it provides him with some evidence that what the candidate is saying is true.
And of course you can fake job references. People have been known to get their friends to write them a reference. The guy saying "that guy really knows his stuff" could be the candidate's brother. Or it could simply be his employer wanting to get rid of him the easy way.
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.
Well, if that's not a Ringknocker mentality, I don't know what is...spoken like a true Blueblood who turns their nose up at anyone who didn't spend $60,000+ on a piece of paper, regardless of experience.
Please continue to wade in your shallowness when looking for talent...it reserves the skilled coders deep with wisdom and experience for the rest of us to hire.
Oh and good luck building your team of executive professionals who are too good to code. Oh, I'm sorry, were you not aware that people "go through the process" just to check a box? Go figure with your mentality...It's now evident why people are forced to do it.
As a person that is currently hiring a bunch of operations guys and developers, I couldn't give a toss if they have a degree. In fact for the ops guys, having a CS degree is a mark down because they're almost certainly too focused on theory than any actual down and dirty practical skills.
For the developers, anyone with 5 years or more experience in the languages we use is already going to have the skills I need. If it's been more than 10 years since you graduated then your transcript is going to tell me sweet-FA about your abilities, or lack of them. What I care about is experience, the ability to pass a technical interview and your references.
So you keep filtering out the good candidates because they don't have a bit of paper and I'll keep hiring all the good employees you're missing out on.
Street smart?
Whenever I hear anyone talk about being "street smart", they are saying "I'm not real smart, but I'm make-believe smart".
School teaches you theory and structure that is very difficult to learn by yourself. I wouldn't touch a resume from someone who hasn't completed college, for good reason. If you didn't complete college, there is probably a reason for it.
But you can't fake job references. You can't fake supervisors saying "that guy really knows his stuff.
References are extremely easy to fake - a lot easier to fake than getting a diploma from a diploma mill. The reference checker has no idea if the person they are calling is truly who they say they are. Pay your buddies $20 to say glowing things about you to the HR droid doing the check.
I don't understand why they even still ask for references in the day and age of disposable cell phones and VoIP.
As a hiring manager, when I see a candidate with a CS degree from MIT, Stanford or Carnegie Mellon, I take notice. I also take notice of any candidate that can show me working code they've done on their own time regardless of degree.
Runesabre
Enspira Online
This entire discussion seems to equate a college degree with vocational training. It's been a while since college, but I remember learning other stuff besides computers like business, accounting, humanities, and psychology. Does this count for nothing in today's world? Do employers want only technical training and nothing else? All I hear is that head-down coder jobs are being offshored, and people need to be well-rounded and know business. Now the article says they only want self-taught coders. I get confused.
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.
I won't read any article if the summary title is a question and the first sentence of the summary answers said question.
I've been at this for a fair while ( not as long as some however) - In fact my first paid for It job was at 15 installing network infrastructure and a file server for a local law firm - I have never Completed a BSc. BS for you colonials, which incidentally over here is an acronym for bullshit. while I have never experienced the American education system, I Have experienced a small portion of the American Job market. In Britain, A degree is pretty much a binary item you either have one or you don't there is no such thing as far as most employers and recruitment agencies are concerned as partial credit, in fact recruiters often edit my cv to remove any mention of having studied for a BSc in Information Systems and Management and almost without exception until recently even the most basic entry level IT job i.e. 1st level 5 minute max log and flog helpdesk looked for an degree in a computer related field. Apprenticeships however appear to be making a comeback over here again. In America I have frequently seen even senior DBA level jobs only requiring 15 university level credits in a related field and 5 years practical experience or a full degree in a relevant subject and 1 years practical experience. My only problem as we don't use a credit system over here was persuading them how much my two years studying for a 4 year course equated to in credits. As regards buzzword recruiting, sorry that is a problem that is at least 30 years old here. when I left my first proper job as a telecommunicatiosn engineer I spent 6 months out of work purely becuase my employer had its own terminology for types of equipment and methods of high order data transmission whereas every other company in the field used the British Telecom terminology. Due to rivalry going back to when the GPO was handed responsibility for telecomunications systems in the UK despite the railway already having far more experience the railway refused to use the same terminology and I was not fully aware of this. No bit of paper ( cv) can ever really let you know whether someone is competent to do the job but what it boils down to is a cost-benfit analysis if you have 100 applicants for a job and you interview them all then that means at least 1 hiring manager has to spend a minimum 100 hours (2-3 weeks) just doing interviews. or you can filter before that the easiest and most cost-effective way of doing so is on buzzwords or prescence / adbsence of degree on the cv. Personally I have a different opinion having hired for a level 1 helpdesk - my main thing I was looking for was not it experience or but a pleasant demeanour , a wilngness to learn and a baasic understanding of the concept of customer service - the rest they could be taught. Yes I have re-read this and I realise I rambled - but I valued my opinion even if no-one else does
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."
That's the biggest load of crap I've ever heard.
The talent is there. But the salaries aren't, because companies got too CHEAP to pay livable wages to workers. They don't get to complain that this leads people to shop around to try to land a fair salary; if you were already paying one, there would be no need!
Let me adjust what TFS said to more accurately reflect reality:
"Now that my employer finally let me learn a new skill, let me check to see if there's an ad for it on Dice or Craigslist with a salary that isn't a total insult. Sorry boss, that's what you get for shortchanging me for the past few years and thinking I'd be OK with never getting a raise even though inflation is driving the cost of living up all the time."
Java is basically unsuitable for teaching coding. Sure, somebody that _can_ code may benefit from learning it, but not too much as the language is basically one big example on how to not design a language. Newcomers will just drown in syntax and neither learn algorithms nor machine capabilities, nor any useful data structuring. Basically, Java-only programmers miss everything important about coding. It is really one of the worst possible choices for teaching programming.
The other problem is that most CS courses are very weak on actual engineering. If you add that at least bachelor programs are also weak on science, you get the described effect, namely people that can do nothing that matters in software creation. By now I think that on BA level, hiring electrical engineers as coders is far better, because they at least understand engineering and will have some hands-on coding experience. After a short time, many of them will be better than BA-level CS graduates. Just don't expect them to think that Java is a good language, as no competent engineer will do that ;-)
It is a bit different on master level: There will still be quite a few duds (in my year of 250 CS graduates, I estimate about half could not code or code well), but there will be people that actually understand the science and added engineering on their own. One thing you will find only here is people that can actually design algorithms and data-structures, do understand complexity, formal languages, crypto, logic, etc. You still need to look very carefully at the individual skills and insights though.
But acquiring these skills without doing a master is basically impossible. Even very good practitioners will only scratch the surface of these topics, as you can get by in some sub-optimal way without spending the time to dig deeper. But if you just acquire what you think you need, you will miss a whole lot, because for many advances CS things that matter in practice, you only understand what they can do after you really understand them. There are no catalogs you can find the parts in as there are in proper engineering. You actually have to understand what parts can be made from scratch. Even more importantly, you will only have an idea what kind of effort and problems to expect after you invested the time to really understand them.
Most ACs are not even worth the keystrokes to insult them. Be generically insulted by this and ignored otherwise.
When I was a Junior High School Student participating in an experimental class in the mid 1970s called "Computer Science," it was explained as the science of solving real-world problems on computers. There was REAL thinking involved. There was REAL math involved. It wasn't about hash tables, trees, and so forth. These main-stay algorithms were not the focus of the class, but the tools one develops and uses to solve the real-world problem.
It may be an esoteric point here, but "CS" as is presented at the university level isn't the science of applying computers, it is a review of the science and math created thus far. To teach it they use artificial computers (java VMs and interpreters) because real computers have too much "real computer" in the way.
Self-taught is the only way to get real-computer science knowledge. The schools won't teach it. The schools CAN'T teach it. In the immortal works of Will Hunting, "You wasted $150,000 on an education you coulda got for $1.50 in late fees at the public library."
The market has been watered down by self-proclaimed technologists. This was made possible by supply of degreed professionals not meeting demand and the vacuum was filled. It will not be reversed, nor should it necessarily. There's certainly nothing wrong with getting a CS degree and there are definitely some jobs that you will be excluded from if you don't, but it will likely not impact your overall earning potential.
Yes! It proves to your new employer that you can listen and think. Sadly it proves little else.
Unless you are *deeply* passionate about software and math, get a degree in business and learn how to code on your own.
Big surprise.
appended to the end of comments you post, 120 chars
Well said
The article writer makes a lot of assumptions, and then apply his assumptions to his point of view.
I started programming in BASIC when I was 8 years old and learned how to create database-driven software in dBase III+ when I was 9 or 10. I even grabbed big books on compiler theory and all kinds of nonsense so that I'd know everything I needed.
The first assumption is using his own experience as a standard. He, as an individual, could be intelligent and diligent, but he is not that average Joe. Many people come into this field just for money. Some of them are diligent but has no talent in the field. Some of them are lazy but could pretend that they are hard working until they get hired.
If I had picked up a degree, I would have missed the entire dot-com boom and graduated during the ensuing recession with no experience carrying a load of debt.
The second assumption is being at the right place at the right time. Not everybody would be as lucky as he is. He said what if he had gone to school when the dot com was booming, he would have had no job because he would miss out the experience. That is not a qualify example because it is just all about opportunity. Some people may not have a chance to earn experience, but they could have much higher potential to learn if they ever have a chance.
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.
The third assumption is coding and theories are for CS degree. I agree only half of this assumption -- theory. CS degree is about algorithm and theory. The coding part of CS is to demonstrate their understanding of theories, not to code a commercial software or program. He did not elaborate the definition of "coding" he talks about, so I cannot comment further. One note, however, is that some people such as myself do not remember certain theory name/keyword. I have a problem with that because I usually forget the name but understand the algorithm detail. The name sounds familiar to me but would not ring the bell about how it works. When someone talks to me about the theory I cannot remember the name and uses only the name, he or she would think I am an idiot because I have no idea what it is with just the name. So I may be one of the group he talks about.
There's nothing wrong with education, just with most conventional educational institutions -- which today are getting a run for their money from nimbler organizations.
The fourth assumption is generalizing all universities provide the same program quality. Some universities, especially for-profit, do not provide good enough qualification of education. I agree that certain schools should not offer CS program at all because their education is not qualified for. However, this is America where one should have freedom to offer such a program if the one can prove that the program passes certain requirements.
Instead, they succeed at putting things on their resume that match keywords.
The last assumption is thinking that writing a resume is one of CS degree qualification. To write a good resume, it does not require a degree at all; besides, there are a lot of places on the Internet that teach you how to write a resume. One more thing that a lot of people do not know about IT resume -- it can be fake. I was once trying to get a job via an Indian recruiting company. The company fabricated a resume for me and tried to train me to be who I was not. I went along with and tried that on one interview. I intentionally threw the interview because I felt so wrong. I quited that Indian company right after that interview and went through a normal way of looking for a job. As you all can see that it is not difficult to fake a resume with all bell & whistle experience (projects). The hiring company would not k
Quite the contrary, I rarely meet self-taught programmers who even know what the f*** they're doing.
Almost every one that I see listed requires a Masters degree in Computer Science and three years experience. This is for programmers, analysts and even helpdesk(!), in some cases. But the best part is that your CS Masters will get you $40K depending on experience.
Meanwhile, online salary survey sites indicate average salaries for said same positions in the $80K range. The only places that I see those kinds of salaries offered are New York or Silicon Valley/SF Bay area.
My point is that without a CS degree, you aren't getting a job. It doesn't matter how good your self training might have been. The HR departments won;t consider you for even a phone interview without the degree. Getting the degree costs you a fortune and earns you very little. After all, why pay a programmer $80K - $100K when the company can get an Indian team to do it for $20K.
I discourage my children from IT. Doctor, lawyer, food. Anything else and you're stuck in mediocrity.
We wanted to make the figures look good, so we dumbed down elementary school, junior high and high school so that everybody could get a degree.
As a result, kids coming to college knew next to nothing, so we dumbed down college as well, and justified it by expanding the industry at a record pace.
Education that's accessible to everyone is not education. It's memorizing stuff for a test, dumping it on the test, and then forgetting it instantly. It does not test ability; it tests duration of study and the assimilation of unrelated details.
Computer science programs were churning out bad candidates back in the 1990s too. These people did not code in their spare time, were not all that interested in the technology, but even worse, were entirely dependent on the type of template-based learning that they had excelled at.
When you dumb down education to make sure that everyone can play, you have then created a situation where degrees are worthless and in fact oftentimes mean that a candidate with a "good resume" is a cynical manipulator who will be a parasite on your company.
nice articlekeep it up guys.:) by the way you can check this site it might make you interested. thanks guyssss Make Money In 72 Hours
...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.
I think a computer science degree is useful for System Administrator type roles, where it is actually useful to know the internal mechanics.
That said, a ton of Computer Science degrees still require an obscene amount of obscure math.
For programming I really think we need to go back to the basics of the concept of "apprenticeship". I think 2 years of basic courses on programming and then 2 years of "apprenticeship", of literally getting to sit and watch someone program, on the job, would be far more useful.
Companies could start charging for these observation slots, the university could get a placement fee, and the student actually learns something. Everybody wins.
From a more practical side of interviewing, one of the biggest predictors of fit for the job is to see an actual sample of the applicant's work. Thus, if the applicant can provide a work sample, this might help employers determine whether or not the applicant is qualified for the job. When I was in the early stages of forming my psychologist career, I had to submit samples of my psychological assessments to potential employers so they could see if I was up to snuff. Could employers of computer coders ask applicants to submit samples of code that they've written and/or software that they had played a crucial role in designing? Even better yet, as part of the interview process, present the applicant with a fairly small computer problem that you want them to solve, so that you can see their problem-solving strategy and if they can actually produce the code that might solve said-problem.
This is probably your best option for determining if an applicant is fit or not, degree or no degree.
The answer is often a resounding NO! Too many colleges pumping out too many people with CS degrees and not enough decent CS jobs out there. Add to that the fact that employers have no loyalty to their employees, considering them to be an easily replaceable comodity and you have almost no chance at a decent job. All of the IT workers that I have known are/were overworked, underpaid and undervalued. Employers expect your job to be your life, your only interest. They expect you to be on call, available 27/7/365.
Employers don't seem to realize that people need to relax, get away from work, have hobbies, have families etc...
Sounds like a lot of butt hurt. He's an asshole and you have no respect for him and you wouldn't even work for him? Let me tell you I don't know of anyone that would want to work with you with that kind of attitude.
I got my BTEE in 1988 and enjoyed a career as a Systems Engineer combining EE skills with software development skills without a CS degree.
During college I had classes in microprocessors, assembler, APL (shudder), and structured programming using Pascal. All provided the foundation for picking up other languages and CS concepts on my own.
I went on to become proficient in C/C++, VB, LabVIEW and had successful projects in database systems, ATE (Automated Test Equipment), and image processing. ATE drew on both my EE and software skills heavily. Image processing really separates the men from the boys and put my college skillset to work as it required statistics, advanced math, structured programming, GUI concepts, efficient assembler concepts, and even my EE background to crank out a good imaging system.
Another college skill I used in systems engineering is technical writing. It's not a course often seen in CS/IT curriculums yet was essential for drawing up competent user manuals and for business development.
From my experience with other CS people in the field, I don't think just a CS degree is enough. The CS/IT field is crowded, but what many employers are looking for are systems people who are skilled in multiple fields. Combine the CS studies with others such as EE or ME and it will open a lot more doors. Having multiple fields also broadens your skill set - if the job market for CS is contracted, you can always fall back on the other skills.
Eternity: will that be smoking, or non-smoking? I Corinthians 6:9-10
It is so much easier to fake a reference than a full 4 years full of courses at a college. All you need is one friend, a phone number, and maybe a website or fake online profile. If you've been handed a degree you want to a crappy school. It isn't too difficult to figure out which are the poor schools and ignore most people from them.
You're the asshole for calling him an asshole instead of allowing him to have his own requirements and trying to see any merit in them. There at tons of projects that are started and never finished. All the online code hosting websites are full of them. He's saying he wants someone who has had to do the last and hardest 20% of a project instead of simply dropping it and moving on to something cooler.
I used to like your posts girlintraining, but they have seem to degrading.
This is why any decent employer will do a technical interview as well as/combined with an HR interview.
That's no good if no "decent employer" is within commuting distance of your home, and you haven't yet had a first job to build up savings with which to relocate yourself.
When you get home from your call center job, just put down the controller and write some software
How so, when the device that has the controller also has a lockout chip for the express purpose of preventing hobbyist development?
Perhaps the thinking is that people who can learn to jump through a company's HR hoops can learn to jump through hoops imposed by the company's suppliers.
Taught myself programming when I was 7, and building computers by 17, now at 34 it pisses me off how many dumb twats I come across in IT that are neither enthusiastic about the field they are in or even capable of doing a simple search online for answers to issues they run into. Half my day is spent serving as a crutch to the inept people around me. Looking forward to finishing my private commercial project to get out from this monotony.
Why should I jump through your silly hoops? Plenty of other employers out there
Because for some people, "out there" isn't very big. They don't yet have the savings to relocate on their own, and all the relevant job postings within reasonable commuting distance have silly hoops.
I'd suggest investing in them only if they will spend their evenings completing a CS degree. For an intelligent and skilled person, this isn't terribly difficult. The ones to be careful with are the "Meh, I can't be bothered to obtain/complete a degree." types.
What about "I'd be glad to work toward a degree, but only if my pay covers tuition in addition to the cost of living" types?
Ugh, look at all my spelling mistakes LOL. Don't think I'll ever get used to typing on these touch screen keyboards (was using my phone).
A CS degree, like any degree, is a means to an end. It's a tool, more or less, and you use it to help build what you want out of your life. One thing autodidacts don't have is the instant credibility that a sheepskin can confer. Not saying that sheepskin credibility is always legitimate (University of Phoenix, anybody?) but HR managers have been conditioned to prefer applicants with sheepskins over applicants without sheepskins. My CS sheepskin from the University of Arizona got my foot in the door with a large defense contractor in their IT department as a sysadmin. It also got me access to company Fellowship programs that my autodidact colleagues could not get, even though they were *much* better sysadmins than I was, or for that matter, than I even wanted to be. This created a lot of interpersonal friction between me and those autodidacts, especially around white sheet time. They were mostly ex-enlisted military computer operators, and they made up the bulk of the sysadmin pool. Eventually, I got a door and a mini-skirted buffer between me and them, so it was a lot easier to deal with their anger and frustration.
The thing is, though, and I think this is the point the OP is trying to make, I was completely self-taught as a sysadmin. My background in CS helped me abstract the individual quirks and idiosyncrasies of the OS's I had to support into something I could get my head around, to be sure, but riding herd on a bunch of users and their mish-mash of Linux, Unix, Windows and VMS platforms (and later managing those same frustrated autodidacts in pursuit of same) is not what I wanted out of life and is definitely not what my BS in CS prepared me for. But thanks to the sheepskin, I eventually had an office and a secretary, so I was no longer stuck in a a cube with a surly, sullen cube mate, and I got to take what were essentially multi-year paid vacations via the Fellowship programs to get More of the Same (MS) and then to Pile it Higher and Deeper (PhD) on the company dime -- a career track that was structurally denied to those angry autodidacts.
So yeah, a CS degree has been worth it to me, even if I ended up becoming self-educated in my career field, which, tbh, was just glorified tech-support monkeyism, and definitely not computer science. But I was a well-compensated tech-support monkey, and now that I've retired from that company (at the ripe old age of 50) with a good company pension and a well-fortified 401(k) to meet my day-to day living expenses, I'm looking forward to actually using my CS degrees in a constructive way as a private consultant, and maybe to even help pay for the toys on my bucket list that I haven't checked off yet. Have I really used any of the deep CS theory I was taught at this point in my life? No, at least not outside of trying to grok a few of the more abstruse posts here on slashdot. But the sheepskin did let me get a job that allowed me to create a pretty decent standard of living for myself, and which, two decades or so down the road, might now actually be used for what it was meant to be used for.
Nobody is asking you to lie, they're asking you to jump through a hoop.
Yet in my experience, several companies' HR departments have shown themselves unwilling to clarify exactly how a candidate failed to jump through a particular company's hoop for fear of an anti-discrimination lawsuit. How should candidates learn how to stop failing to jump through hoops?
Sorry you wasted your money on a degree from ITT tech.
It gets better! Because the behavior of the underlying hardware in a Turing machine is considered axiomatic and unfailing, the following M:tG CR sections:
104.4b If a game that’s not using the limited range of influence option (including a two-player game) somehow enters a “loop” of mandatory actions, repeating a sequence of events with no way to stop, the game is a draw. Loops that contain an optional action don’t result in a draw.
716.1b Occasionally the game gets into a state in which a set of actions could be repeated indefinitely (thus creating a “loop”). In that case, the shortcut rules can be used to determine how many times those actions are repeated without having to actually perform them, and how the loop is broken.
716.3 Sometimes a loop can be fragmented, meaning that each player involved in the loop performs an independent action that results in the same game state being reached multiple times. If that happens, the active player (or, if the active player is not involved in the loop, the first player in turn order who is involved) must then make a different game choice so the loop does not continue.
mean that this M:tG Turing machine solves the halting problem! The consequences of the fact that, without the halting problem, a Turing machine would never have been described are left as an exercise for the reader.
Who knew little 20 years ago, and now know nothing at all, regardless of what they're allegedly taught in school. Recruiters often specialize in certain market niches, and their people fairly ofen do have a clue. But HR depts? They don't *want* to know what they're hiring for - that's why we see the idiocy of automated d/b searches in big companies, and the manual look for these acronym searches in smaller ones. They'll even do what they can to *prevent* qualified applicants from being hired, if they don't have at least a degree.
mark
FYI, if you have to find a job as a computer scientist via Craig's list, it's time to find a different line of work.
Jeez, no wonder I have to pay 6.8% for my student loans. They can't even get their money back out of computer science degree holders...
Stay the fuck away from IT/Compsci if you can. It's boring work with poor pay and limited job opportunities if you don't live near a major 1st-world city. Ask me how I know.
"When information is power, privacy is freedom" - Jah-Wren Ryel
If you want someone that can understand your project, improve it and keep it on track, you want a computer scientist. If you want someone that can whip out code snippets in the out dated technology of the day( ms and apple ) then you want a programer. You might want both.
Some would say that's an emotional statement. But I say if your not using open source and free software from the get go, as your core, in the long term you are doomed.
This really isn't about whether the self taught programmer is better than the person with a CS degree that doesn't know theory and can't code. Those are not comparable categories.
The following are comparable categories:
1. self taught vs. formal education
2. can code vs. can't code.
3. knows CS theory vs. doesn't know CS theory.
All of these categories are mutually exclusive, and ultimately #1 is irrelevant compared to #2 and #3 unless you work in HR.
Regardless of how you learned (or didn't learn) CS, if you can't code AND you don't know theory, you are not a good computer scientist. If you have a degree but you can't code or you don't know theory, you are a bad computer scientist. If you are self taught and you know how to code, but you don't know any fancy theories, you are also a bad computer scientist. Even if you are better than someone with a degree (who is also bad), that does not make you good. Everyone in the "bad" category should be unemployable, regardless of relative skill.
Even if you are an employer trying to hire on the cheap, it is still a bad idea to hire an under-qualified programmer. A good programmer charging $200/ hour will get you what you need about 100x faster than an incompetent programmer charging $4 / hour. In fact for many problems, not knowing theory will cause an incompetent programmer to never find an adequate solution, because he/she won't know something is unsolvable the way they are attempting to solve it, or unsolvable in general.
Furthermore, I don't think universities should be teaching coding, except to help students familiarize themselves with how to apply the theory they are learning. I went to a good university and we spend 2 quarters programming, and the rest of the time drawing arrows, boxes, and symbols on paper. I can learn programming languages myself with the internet and a half a day. I don't think I could have learned the theory part with out someone teaching it to me.
Answer: No. My 40,000 dollars (read: parents) to get my software applications programming degree isn't really that worth it. Yes it's gotten me in the door and more job offers than I can handle when combined with my experience - my resume is more impressive with it, but I'm starting to feel it's irrelevant.
Any fucktard who thinks they can solder a new part onto a laptop motherboard can convince an IT company to hire them for an entry-level job and almost make as much money as people with years of real experience and a degree, depending on the market. I have a friend who never ever went to school for it, she's a web designer, doesn't know anything about other IT categories or even technology besides web design, she makes more than I do. I have a roommate who never went to school for IT, never graduated school for anything, works at the same IT company I do (starts with an S) and almost managed to make as much money.
I have worked with people that hold dual masters or bachelors in various fields, including IT fields, who have been stuck in bullshit positions where they are more qualified than the people in charge of the entire IT division. The IT field is a very weird place.
The hiring process for most IT positions or companies IS useless and ineffective. We just hired a guy who has no problem solving ability whatsoever in our project, I have no idea how he got here. I've destroyed the shit out of so many interviews, in fact most of them this year, and not gotten the job. My first job out of college after I got my software programming degree was one interview - made a friend for life in that first hour of the interview and still talk to him to this day. He still calls upon me if his company needs someone. So for a long time my interview K:D was 1/0. Then it was 2/0. Then it was 3/0. Then somehow, with 3 years of experience and an impressive resume and owning these interviewers and their practical tests in the interview, they tell me "We'll let you know" and they don't want to hire me for the same job that I've done for the past 2 years and excelled at. Is it possible there's someone better? Maybe, someone better at following SOP perhaps. I wrote SOP for my first company. I follow it perfectly, how couldn't you?
Then I had another interview at a major IT staffer here in town. I'm not sure I was declined so much as I already had two IT jobs at the time I interviewed and I told them I would let them know, then never did. After that I had yet another interview for a similar job further north of my area of Cincinnati, and never heard anything back. I've had some interesting interview experiences this year, including an interview I never agreed to nor was I ever informed about - if this staffer did inform me, he in no way got confirmation from me before scheduling it, because I certainly never agreed to an interview. Then when I next contacted him, I was condescended to and his enthusiasm about getting me this higher paying position, which he had been sucking me off over at first, changed to complete disrespect. You can't miss an interview you never said you would go to, am I not right?
As a previous poster said, it's very easy to tell within a few minutes if someone is incompetent or not when it comes to even general computer knowledge. I actually felt like a moron when I interviewed for my current job because my manager asked me completely obscure questions and then the one completely easy one, I overthought the crap out of it. He'd say "How do you do blah in powerpoint?" I don't have the powerpoint menus memorized in my head, eidetic memory or not. I can guide you through it in .5 seconds if I look at the menus.
So yea, the IT world is a crazy place.
Maybe he should stop interviewing people from bad schools.
Because when you apply for a job, the 1st line of defense you must breach is their requirement for that piece of paper. After that you can dazzle them with your smarts and book knowledge, but in many places....no piece of paper, no interview.
I was self-taught. I started out in jr. high school on 30cps clacky terminals dialed into M.E.C.C. (anybody else in here know what that acronym expands to?)
But then I went on to get a CS degree with EE "concentration" (kinda like a minor but not as much work). The EE work was not trivial- I took 4-level courses on things like signal processing, vsld, semi-conductors, etc. etc.
As a result, I graduated knowing three things:
1. What a computer can DO
2. HOW it does what it can do
3. How to MAKE it do what it can do.
In other words, I understood computers soup to nuts (or thought I did- I still had a lot to learn). When diagnosing a problem or architecting a solution, I think holistically. The phrase I've been frequently accused of over-using is "Silicon to Glass," meaning from the silicon in the chips all the way to the glass screen of the computer monitor and everything in between.
To an employer, this probably doesn't mean squat. They're looking for Skill XYZ. And when they hire you for Skill XYZ, they really have no intention of using you for anything else for the entire time you are with them.
To me, it means everything because while I'm working for an employer and utilizing Skill XYZ, I'm also looking for opportunities to learn Skill ABC and apply it to my current responsibilities. And then Skill ABC goes on my resume.
As a result, my resume looks impossibly broad, with real, working, got-paid-for experience in a diverse range of disciplines, from large-scale (many thousands of nodes) network design, telecommunications, database architecture and application design (I've designed systems that earn $100M/year). Not only that, I've spread out vertically as well, working in as many industries as technologies.
The thing I ALWAYS credit is my CS degree. Without that intimate understanding of what's going on inside the systems and software that I create and use, I would be simply (as another poster put it) responding to interfaces, not utilizing skills.
What freaks me out is how a large majority of my co-workers are one-trick ponies. They know how to code Informatica data integration mappings. Or they know how to write Perl scripts. Or they know how to create SQL Server databases and monitor their performance. Maybe they have a minor secondary skill, but that's usually it. I always ask that type of person if they have a CS degree- I've never had one reply "yes." Turn that around, and when I find that a co-worker has a CS degree, it doesn't really matter what we originally hired him or her for- if a job needs doing, that person will either apply existing knowledge to the problem or immediately go about acquiring the required knowledge from whatever sources are available- and if nothing exists at the time, they will CREATE the tool that solves the problem. Because a CS degree is just that: a set of "tools in the tool belt" that can be taken out at need- and some of those tools are designed specifically to create other tools. Self-taught folk are fine, but I've never found one with the breadth and depth of understanding that you get even from a newly-minted CS grad.
When I'm hiring, I'll take a CS grad with diploma still dripping ink over a "expert" in some tool or technology ANY day. Because the former has demonstrated the capability of picking up any tool and applying it (or making his own), but the latter has only shown the ability to use one.
I find that category to be extremely variant. I've worked with plenty of Electrical Engineers turned software developers, and a couple physics majors turned software developers. Some of them are great, and are up to speed with all the best practice concepts in the development world. And some of them specialize in writing horrible unmaintainable code with a strong, "who cares, it works!" attitude. That isn't to say I haven't met my share of CS people who do the same, I just think it's at least a little less common.
You mindset is extremely limited. You like to play it safe; great if your goal is to churn out your little commoditized widgets in your safe little town and never rock the boat. Worse than useless if you actually want to change the world.
I admit I do not have any experience with hiring
And yet you decided to chime in anyway, as if providing us a with a summary of the misconceptions other slashdotters seem to have is helpful to this discussion or enlightening in any way.
but from what I hear from /.and other sites is these employers have to deal with dozens if not hundreds of qualified applicants. At that point, you're not going to spend time getting to know all those people, and assessing them for the nebulous qualities that can't be gauged from a resume (hard working, good communicator, gets along with others, etc.), you're going to take as many shortcuts and possible
Only if you're a fucking moron. This is idiotic hiring advice, and an oversimplification by somebody who doesn't understand. (Who'd have guessed?)
But you'll probably have to. Especially if get the wife-kids-house going. I took a difficult comp sci class and got a B. A year later I ran into someone who was also in the class. She got an A. I could remember everything and she could remember nothing. College is to many people a sort of intellectual bulemia. Cram and puke. Get a good grade, remember nothing and don't care. You can always teach yourself later if you need it. Pursue what you like - whether it's math, comp sci, physics, carpentry, or anything else. You can't go wrong. If you pursue money, degrees, academic status, etc. then you have a problem with your perception of yourself. You see yourself as needing something to improve your self-worth. Self-esteem problems. But the world generally doesn't see it that way. Tony Robbins is making a lot of money feeding the pathology of neurotics. I like people who just crave knowledge and suck up as much as they can. Usually they have some general focus areas but they go after everything they come across. They're usually seen as crazy in some way but of course everyone's nuts, it's just a matter of taste. My girlfriend and I have a house where she teaches piano and violin (Juilliard, doctorate, etc.), I'm off consulting where I'm at a large corporation doing database work but not kissing anyone's ass and at night I have a condo full of computers in some stage of design, build, modification and programming. I'm gonzo, batshit crazy but holding down a full-time job. I tell people my long-term goal is galactic domination (actually I've always wanted to be the sadistic warden of a women's prison) and that I'm doing research on time travel or building an anti-gravity device. I could say that I can calculate the distance to the nearest exact duplicate of earth and everything on it or I could engineer a rabbit with a jellyfish gene that makes it glow purple in the dark. But that's all been done before.
That is a problem of our fast paced world, where knowledge is not something that lasts a lifetime or even a decade.
However, what a college/university degree should have taught anybody is how to learn, how to learn efficient and fast. On top of that academic education is in order to elevate your ability to learn objective reasoning and logical thinking. Skills that never age.
If the poster asks about the skills in *a* specific programming languages (like Java) he does not understand what he needs to ask for (someone that has the ability to learn any programming language in a short amount of time, because she understands how computers work, how applied programming languages are translated into machine language and the ability to think in abstract concepts (algorithms, parallel threads, computational complexity).
If he says that theory is often not taught well, he might be right or does not understand the theory himself. Either or, you hardly find a self taught person that understands things like computational theory. Because it is an average skill and a teachable skill to understand such concepts. But it requires a genius to develop such concepts by yourself.
First off having a CS degree is not the same thing as being a programmer. It is PART of it, but just a part. There are plenty of "CS" type positions that have little or zero actual personal coding. Second, usually you learn a lot of languages, and don't really concentrate on one (I think I had 6 or 8 by the time I graduated). It is about the process and not the syntax, which anyone with a degree, or in the field for more than 6months can tell you can change overnight. If you want simple a Java programmer, yeah hire some college cert monkey with a year at it, or someone you think is deeply interested in messing about with Java. They will be able to code right away. What kind of code and design you might get will vary however. Which is the next thing, the author seriously believes that CS degrees do NOT come with theroy? But some self taught person will? Delusional. One of the big differences aught to be that the degree comes with a lot of theroy and things other than just "programming" that will potentionally benefit a company or project. Not sure what sort of CS degrees you have been exposed to, but perhaps they are not all the same. Also someone with a degree should come more balanced, in that they will have knowlege across a broad swath of CS study, not just Java syntax and structures
Good luck with that Java and everything.
We are talking about to different things: 1-Cs Degrees. 2-It professionals. CS is more about math (Remember the S). IT is towards more practical matters.
The government permits device manufacturers to persecute Real Programmers(tm). Sony v. Hotz.
They everyone needs to be a java programmer?? I don't understand this.
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
I was a foolish young man, as most are, and got exploited. You can be both brilliant and stupid at the same time. It happens every day.
Help stamp out iliturcy.
I would say this:
Some stuff is really hard to self-teach/get exposed to without the degree, but the degree is a waste of money if you weren't really interested to begin-with because ultimately good devs self-teach all the time, long after graduation or their first job that proves they have the chops.
It is my primary shortcoming as a JavaScript dev who could write books on JavaScript and knows a ton about web-technology/web-UI work that I'm a bit weak in the algorithms department and I often lack the language for relating JS approaches to things to people from other language backgrounds. I'm fine with math. I know how to use ratios. I don't have trouble with math when it gets more complicated, especially geometry/trig-oriented. I write complex regular expressions without having look anything up. I do well at work-avoidance and perf-optimization in more architectural scenarios. But when somebody hits me with one of those node tree questions, I have very little to go on other than instincts honed from working with the DOM API.
But for the love of assembly, it is a lot harder to find "the good books" on algorithms and general comp. sci concepts than it is to find the good reads on JavaScript or how to handle common CSS layout issues.
The key benefits of a comp. sci degree, IMO, is exposure to a wide variety of stuff a self-taught dev might never run into by accident, and handy things about the more math/science oriented nature of the field. The problem academia has with putting out decent programmers, IMO, is failure to recognize programming as a heuristic-driven craft where the set-in-stone rules for doing it right can vary wildly depending on the nature of the language itself and the scope of the problems being solved. Also, if you're going to use one language exclusively, Java is a horrible choice, IMO.
What is passing for a "Computer Science Degree" today at 4 year schools is both way overpriced and does not hit the mark in terms of skills needed. Our MBA's in the Mega Banks have shipped as many tech jobs overseas that they can, and frankly for the moment there are plenty of people to do the job, adn are just as anxious to drag people from foreign countries here.....because they are "smarter"....I know, nobody with less than a Business Administration degree can understand either. What we need is people innovating, not just learning Microsoft applications and thinking they are coders. Thanks to Microsoft and Apple, an entire generation of people has not even learned architecture or other important skills that used to be part of a CS major. (I have a B.A. and M.S. in Comp Science and nearly a PhD in Instructional Design. Thinking out of the box these days is writing a "cute bit" of object code. to make real advances in the field, it is necessary to have people who have gotten their hands dirty and done the work. IMHO Junior colleges are to a large degree filling this need of turning students out into the work force in a fiscally and ethically responsible manner.
"Any sufficiently advanced technology is indistinguishable from magic." - Arthur C. Clarke