Does Learning To Code Outweigh a Degree In Computer Science?
jjp9999 writes A college degree may not the best route when it comes to jobs in coding. Jobs for computer science majors flow aplenty, yet employers (and job-seekers) often learn quickly that the college grads don't have the skills. "This is because the courses taught in virtually all computer science curriculums focus on theory, and they only dabble in teaching practical programming skills," says Cody Scholberg on Epoch Times. This ties into a unique factoid in the world of programmers. Nearly half of the software developers in the United States do not have a college degree. Many never even graduated from high school. Instead, many aspiring programmers are turning to open source learning materials, or to the new programming bootcamps popping up around the United States. While theory does have its place, the situation raises the question of whether colleges are teaching the right skills people need to join the workforce, and what its place is amid the rise of open source learning.
I wouldn't say learning to code outweighed a college degree. But having the mentality that would lead one to want to learn to code... That's a sure bet. Of course, that mentality might lead one to attend college but it's my contention that that is less advantageous for many (certainly it turned out to be a time sink for me).
There are too many things that an employer is looking for from a degree that has nothing to do with coding. Ability to follow through with a royally painful task, well rounded as in able to communicate clearly and plenty of other things.
Do colleges actually teach useful skills? I got the very basics out of my college and the rest I learned on an internship and on the job. I do think colleges could be improved but I'm not smart enough to say how.
These are the graduates who end up in USA via H1-B process most of the time in HR, IT, banking projects. Quality of the graduates vary significantly. But they all make decent salaries in USA, comparable to high quality engineering grads from US schools on salaries. I have seen these programmers of questionable abilities pulling 100K to 140K a year easily.
sed -e 's/Chuck Norris/Rajnikant/g' joke > fact
Computer Science is teaching EXACTLY what Computer Science is supposed to. Theory. It's an academic pursuit, not an applied skills program.
If you want to learn how to build usable software, that is a different skillset.
I've got a Comp Sci degree, and I've been a professional software developer for the past 19 years. While some things I learned in my degree program have come in handy, I learned to code professionally AFTER I entered the workforce, and primarily from working with other people's code and being mentored by those that had done the job.
There should be a professional "Software Engineering" (or call it something else if the Engineers get upset about the term) program for those that want to actually build code.
Of course it does. You're hired. Your first assignment is to write a simple program to check wether my program terminates or not.
I have been an employed programmer for about 8 years now, dropped out of school to get paid instead of paying. Every single person I have had to work with who had a CS degree have had two traits in common. First, they love to remind you they have the degree. Second, they barely contribute anything to production except great ideas of how not to do things.
As a non-degree'd person, I have done contract work for 3 separate universities so far. You would think they would have an infinite supply of proud cheap labour to tap before giving me a call.
Ever hear of the phrase you don't know what you don't know? What I have seen are people that are self taught and be a pretty good but they have a very limited domain of knowledge, specifically limited to the things they studied. Usually they have huge gaps in information from algorithms, discrete mathematics, and other things that are very valuable as knowledge that can be applied practically to their coding directly or indirectly. The computer science or computer engineering degree purposely teaches a wide range of topics so that you have a large tool set to work with depending upon the problem domain. Self-taught people almost always lack that knowledge. There are extremely rare cases, the exceptions, people have been self taught but they basically study all of the topics that you were studying computer science overtime. Those people are definitely be exceptions and I have met one or two of them in my 15 years as a software engineer. I think people are just fooling themselves saying they don't need a computer science degree it's cheaper and it's way easier basically a limit to how fast they can get a job and that is it and is there a way to grow sometimes but you'll always see people with degrees make a lot more money on average and have a lot more career opportunities. Besides most companies HR require some sort of degree and at most A computer science degree to be hired as a software engineer. Moreover, to be promoted into management you definitely need some sort of for your degree and often a Masters in business or something else. So once you hit that limit then you basically got to start over, get your four year degree and then get a masters to advance and you're doing this when you're old and have children and your basically doing in the toughest way possible when you could've gotten it out of the way when you're young.
On a selfish note, I will never, ever have to compete for a job with someone that does not have a bachelors degree. So this is good for me and it's not good for our country but hey you're going to do what you want to do dummy.
This is simply not the case today, especially as applied to 20-somthing trying to get a job. If you are still skeptical, I invite you to go to talk to HR and ask them what it would take to get entry-level job without a degree.
This is an age old question not necessarily particular to Software Engineering... Are credentials or experience more important?
I would say experience is what you need to do the job, while credentials are often what you need to get the job in the first place and advance your career beyond your current role. I think that holds true for the majority of jobs, but there are plenty of examples and counter-examples of people having success without experience and/or without relevant degree credentials. Career wise I would suggest maximizing the financial return on all your strengths in the near term and either address your weaknesses as best you can or just go around them. Medium to long term always be looking to fill in the gaps in your experience or education that might be relevant to the types of jobs you may want/need in the future.
We've been arguing this for more than 20 years. Not much has changed, and it's not a new question. Code Slinger vs. Book Knowledge. College of Hard Knocks vs College of Ivy. I'm a greybeard now, and while I won't pretend to answer the whole question, I will provide some perspective...
I was a code slinger type - Right out of high school with some programming knowledge, some commercial success (with the C64), and whole lotta balls. I did some college, but it wasn't for me at the time. It didn't connect with what I wanted to do, which was code. I joined a contracting house, and they sent me all over the country. I learned more in 10 years doing that than any college would ever teach. Databases, Integration, GUI's, network programming, mulithreaded programming, and real-world problems, both programming and political. C, C++, Cobol, Fortran, BASIC, assembly (various), and eventually Java.
In the late 90's, I went back to school. Why? Not to learn programming - I was already at the top of my game. I went back to learn all the other stuff, and to do other things. I took psych courses, math courses, art classes, electronics, music, law, languages (Living: French, Dead: Nahuatl) ... I did it on my terms (Harvard Extension, no time limits.) I will graduate next year.
Do colleges teach some basics? Sure - Data algorithms and Graphics programming were very useful. Are they realistic? Not really - sometimes horribly so. Massively Parallel Programming was a mess of math decomposition problems I dropped quickly. Did I need them to enter a career of commercial programming? Nope.
I would say college education is not a prediction of coding ability. Having a college degree when you are entering the field can be useful, but having a CS degree IMHO is not any more useful than a general BA or BS. If you go to college, go to get a general education, learn how to think critically, expose yourself to some interesting things - but it is NOT a training program for coders. Technical schools are a whole 'nother thing, and I would avoid them like crazy. My experience is that they do train you, but the training is narrow and short-sighted. In the end, it would be throw-away time, and the student would have very little gained.
College? Sure - go do it. You will be a better person, and you will have some great social experiences. But if you want to code, you need to put the time in yourself and learn the skills. College won't teach you that.
}#q NO CARRIER
You may have a BS in Comp Sci, but I'll tell you one thing: I'd really hate having to read your Implementation Docs or code comments if they look anything like the post you just made.
Your post also brings into question exactly how good of a programmer you really are as well. You see, English, much like programming, has a structure and a syntax. While you may have syntax, there is no structure. You may not have to compete for a job with someone who doesn't have a BS in CS, but you will most certainly have your cover letter compared to another person with a BS in CS who actually puts structure into his correspondence.
Absolutely. For any reasonable definition of 'coder' that approximates definition of 'employed IT professional' that statement is false.
Clearly we live in different universes.
In yours, it seems that "employed" means "employed by a large corporation whose organizational chart can only be displayed on several bedsheets stitched together", while in mine it means "hired or being engaged to perform work for pay".
My universe is full of people who are employed as IT professionals without having science or engineering degrees. Most of them landed their current positions on the strength of previous work in the field, and are just as capable as their degree-bearing and ring-wearing coworkers. As long as you can do your job, nobody cares what kind of expensive picture frames you hang on your wall.
The premise in the summary is wrong. Employers have not learned that actual skill outweighs the fact that someone survived college.
The fact is that such a degree in no way indicates that obtaining it involved actually learning what was presented for longer than it takes to pass the relevant examinations.
On the other hand, if the programmer presents a series of complex projects they have completed, this does positively indicate they have both the knowledge (what the degree should attest to, but really doesn't rise to the challenge) and the ability to employ that knowledge (which the degree does not assure anyone of, at all.) Those completed project should also serve to demonstrate that the required portions of theory have both been absorbed and implemented, presuming the project works well and as intended.
Employers and HR departments are rarely focused on actual performance, except in the very smallest of companies. Most use a combination of bean-counting, related age-discrimination, and the supposedly valuable rubber stamp of a degree to winnow out programming job applicants. After all, if said employee screws it up, that's the employee's fault. Not the HR person.
This, in fact, is why most corporate software goes out the door with so many problems, and it is also why those problems typically remain unfixed for very long periods of time.
It sure would be of great benefit to end users and companies if actual skill *did* outweigh a degree. But that's most definitely not happening. It's wishful thinking, that's all. And if you're an older programmer, even your sheepskin won't help you -- you cost too much, your health is significantly more uncertain, they don't like your familial obligations, they don't like your failure to integrate into "youth culture" as in no particular fascination with social media... or even your preference for a shirt and tie. Welcome to the machine. You put your hand in the gears right here. Unless you've enough of an entrepreneurial bent that you can go it on your own. In which case, I salute you and welcome you to the fairly low-population ranks of the escapees.
I've fallen off your lawn, and I can't get up.
> In fairness, anyone who actually learns to program on their own can muddle through with a couple of printf's and a stopwatch
That approach is so crude and unsophisticated that just about anyone would know well enough not to admit to actually doing something that primitive.
> Honestly, even if I'm doing it a on a million items, O(N^2) vs O(N) isn't a big deal - hardware is cheaper than my time.
No. Not really. Plus that difference you are glossing over there can mean the difference between the problem being solvable with currently available hardware (or not). There's only so much hardware you can throw at a problem before you exhaust that approach.
Actually. The more I look at your statement, the more the mind simply BOGGLES.
boggles...
A Pirate and a Puritan look the same on a balance sheet.
The best-run company I ever worked with took what I thought was a sensible approach to optimization:
We were working on a complicated production system with hundreds of individual components and intense uptime requirements. The vast majority of the programmers (about 1000) were to focus on writing "robust" code that worked in an "obvious", easy-to-maintain way. The Performance Engineering team would look at system metrics (everything was instrumented) to find the actual performance bottlenecks. Then they would send in a crack team of commando programmers to do trippy, non-obvious optimizations on very small pieces of code.
The idea was, in a complicated system it's very unlikely that your specific piece of code is going to be the limiting factor in overall system performance. So it's better to have less performance-optimal but more robust code in most places; and to use fast but brittle code only where absolutely necessary.
FWIW, the company in question is outlandishly profitable, and their software is widely considered the best in their industry.
As someone without a BS in anything, I've actually found the opposite.
Yes, people who are self-taught often have gaps in our knowledge, but we tend to be *much* faster at filling those gaps. Also, the fact that we acquired all the knowledge we did without a college degree indicates that we are motivated to fill those gaps ourselves.
It is very likely that there are things we have not been exposed to, even if we match your 15 years' experience as a software engineer. However, upon exposure, I am willing to bet that we will beat you soundly at rapid acquisition and assimilation of knowledge - especially since, if you've been in the field for 15 years, your degree is over 15 years old. Which means that plenty of things which are new to me will be new to you, too.
You're absolutely right that you'll never have to compete for a job with someone that does not have a bachelor's degree. I, on the other hand, have to compete with people like you for the right to do my damn job all the time, because you're absolutely convinced that four years in a university beat four years actually in the field working on real-world problems, while voraciously consuming papers and books, and while corresponding with experts in the field - because unlike you, my tools were not handed to me by a university; I had to build them myself.
None of which translates well to a bureaucracy-approved stamp I can stick on my resume, so you're right - good on you. You'll get fast-tracked to management, where you'll continue to pretend like you know what you're doing more than I do, where you continue to ignore my explanations of why your harebrained ideas won't work, and where you'll continue to get me fired when they fail in exactly the way I warned you they would. You've certainly got it all figured out.
Except how to fucking code.
-Hentai [in vita non pacem est]