>If you plan to develop device drivers, or work with artificial intelligence or on real-time embedded systems with loads of algorithm analysis, a CS degree is a must.
This is false. John Carmack, for example, has made significant contributions in terms of real-time systems and algorithm analysis. Others without degrees have done the same in other fields. Even the chief data scientist of the data science-focused Kaggle came from a non-traditional background. An education is a must. Schooling isn't.
Who came up with the idea that education only happens at a university? I knew significantly (by orders of magnitude) more about development (by doing it 8 hours a day for six years) before going into university than what I learnt in my five years there.
Of course, I learnt about lots of other stuff as well, but, if you want to learn something, you can just as well start doing it and learning about it yourself.
I often joke that I need to graduate so I can start working on my education. By that I mean to finish my formal education with degree and everything so I can start learning what is not provided by my program.
Many good programmers I know didn't get a degree, they were just highly motivated and learned to program by themselves/through side projects (these days it's not really difficult to find good learning material and advices online).
A single anecdote is perfectly sufficient to disqualify the claim.
Whether or not dropping out is a good idea is the real tired argument here, and does not even relate to the parent's comment. Google has studied this and released a recent report about the matter (I do not have the link handy anymore, but it was posted to HN at the time). They found that there is no relationship between educational attainment and ability/performance. The case is closed, at least until someone invalidates their study.
Given that, whether dropping out of/not attending a post-secondary institution is a good or bad idea is really a personal matter, and is highly dependant on the individual and that individual's particular situation. It might be important for you, personally, to get a degree, but projecting that onto anyone else is pointless as nobody else is in the same situation as you.
> The case is closed, at least until someone invalidates their study.
Studies don't prove anything, it's so difficult to show causation with the methodology of a study that very few of them even attempt it. The best you can get is a strong correlation.
Logically, if someone says that swans must be white, you do not need to find more than one black swan to disprove that statement. Also, you are completely misusing the term anecdote.
Don't mean to ad-homeniem, but this was written by Jordan Poulton - the Apprentice UK finalist that was ousted for failing to comply with the competition's rules (read: lying).
Ahaha that's brilliant. I always thought he stunk of a subset of the HN crowd (the make a lot of noise 'ideas man' caricature).
It's not completely ad-hom as he has no ability in coding-- either through degree or self learning (he teamed up with a coding founder for his idea, was clearly not technical).. which is somewhat relevant for this advert. Was this his idea on the Apprentice (12 week coding course) or did that fail? All the references I can find just mention the mess around it, not the actual business idea.
Nomenclature matters, I hate the term "coder" what was wrong with programmer or software engineer?.
What you call yourself has an impact on how people assess your skills (I know it shouldn't matter but it does).
If someone is called a software engineer that brings to mind a conscientious programmer who writes clear maintainable code that meets the spec however when someone is called a coder I visualise someone who vomits PHP into an editor intermingled with HTML and CSS in a form of code injection bingo.
In that vein, software engineer in my mind implies that you have completed a professional practice exam of some sort, depending on your jurisdiction's requirements, which may include the requirement of completing a software engineering degree, and are willing to take on the legal consequences of any faulty software that you sign off on.
Just having a software engineering degree alone should not really make you an engineer, in this respect, any more than someone who has studied software development practices through other means.
Not necessarily true, even in more formal engineering disciplines it is often possible to become an engineer (as recognised by professional bodies) without a degree.
In software engineering this is even more blurry, for example my school offered both computer science as software engineering degrees. However in practise the only difference was that the software engineering track had a mandatory module on UML.
We have pretty much the same thing here at school, with a few differences. I got to computer engineering, which has math, physics, some chemistry (for unknown reasons) and a few other things. While the computer science/informatics course has just discrete math and no calculus, no physics and no chemistry. They have more IT classes.
At least here in Norway 'Engineer' is not a protected title (but Civil Engineer is), so anyone could just call themselves an engineer.
But unless you have tons of experience and can prove you know the required things then I doubt you will be getting a job as a Construction Engineer or something like that without a degree.
In IT I doubt anyone cares as long as you prove yourself capable.
This depends a great deal on jurisdiction, in the UK there are many jobs with titles of "X engineer" which would more accurately be described as "X technician" or "X operator".
In places which more rigorously enforce titles it is usually down to a professional body to set requirements, though even then these tend to not mandate a degree (though that makes the path smoother). For example the IEEE requires either an IEEE accredited degree or 6 years of proven work experience in a relevant field to achieve member status.
In the UK we have a institution for IT professionals (The British Computer Society) though as far as I can tell nobody really cares much about it.
Lots of the people I've worked with that I've respected have been members of the IEEE they seem to have quite a few programmers and all the ones I've met have been excellent.
Even SE degrees are a little flaky. My CS program compared to the SE program was one difference in compulsory modules. McMaster seems to be going the right way with their program, which isn't focused on CS like most others are [1].
but you can also be an expert in your fields, even without a a degree.
Think about online marketing practices like SEO. There is no university which is really teaching you how search engines work and you can influence them. You can only read as much as you can and learn on your own experiences.
And even if you have a degree and call yourself a software engineer, it does not imply that you are a one, does it?
I always have to smile when someone calls themselves a "coder" (especially when they smugly call themselves a "real coder"). It wasn't that long ago, in the era of big iron, that coder meant something else entirely. Programmers would write programs on paper. It was then the job of the coder to type the programs on the punch-card stations. Coders were guys who could be trusted not to screw up the syntax but not to write their own code. If you wanted to insult a programmer, all you had to do was to call them a "coder".
As a coder (programmer, software developer) without a degree, my question is:
If you have that degree, do you know how to code?
I've worked with a lot of people with degrees that were not coders. They might have written code in university to get their degree, but I am not sure that they could really code, or maybe they weren't interested. They were managers, architects, engineers, analysts, quality assurance, sales-people, directors, presidents and various other titles and roles but they were definitely not coders.
Do not let that detract from getting a computer science degree. I learned from people with a degree: non-coding stuff, and methodologies that I had been clueless about that definitely improved my coding. You need much more than being self-taught, everything helps: formal education and training, working with other coders, work experience, non-work experience, and mostly you need to make mistakes along the way.
The first and only thing you need to be a coder, is to code. Keep on coding.
Two of the best programmers I know have not got degrees. However, I also know a few that have got degrees and are really smart.
Having a good degree does apparently demonstrate that you are able to apply yourself, without someone standing over you nagging you to finish your assignments (ala Mama and Papa whilst at school).
That is an attractive quality for an employer. I have a crap degree, hated my course but have been a successful freelancer for over 10 years, mostly working remotely. I deliver and my clients trust me. I may be an exception, but in my opinion degrees don't really mean diddly-squat.
I'll take work experience over a degree any day of the week.
I am sure there a lot of very smart people with great programming skills and without a degree. However at least in Germany I see another problem: Almost every job ad for a programming positition starts with "Computer science or related degree required". Without a degree you are just filtered out by the Human Resources Department that doesn't know anything about programming at all. They are just checking formalities and doing buzzword matching. You won't even get to an interview or get an opportunity to prove your skills. :-(
Same situation in Austria. Not only for development positions, but for nearly every rudimentary interesting job, you need any kind of university degree. I have got another philosophy in finding the right people.
In my opinion, people only need the right attitude and they need to be willing to learn something. all the rest can be teached / learned.
Here in Sweden the standard line is 'FooDegree or equivalent' and that always mean that competent people are free to apply regardless of if they have a degree or not.
I would argue that a CS degree will make finding that first developer role a lot easier. You should also be more prepared for it. After 5+ years of experience it becomes a lot less relevant, and yes there are lots of people that have got a developer job without degrees but I think it takes a lot of dedication and sometimes a bit of luck.
Although as this article claims, £50000 is indeed hard to justify.
I have seen CS graduates that are unable to use debugger. I think that CS is great if you like it. But in the real world where cows are not spherical and definitely not in vacuum a CS graduate needs some roughing up from uncooperative chips, frameworks, hisenbugs, undocumented features, undocumented bugs, management hell before throwing them in the trenches.
The best developers I know usually come from electrical/communications engineering backgrounds - they are used to stuff not working for no reason and never assume anything.
I don't think a degree is necessary; certainly not necessary in the same sense that you would want your brain surgeon to have graduated from medical school.
I think there are two separate problems here, though - one in which a particular individual is being assessed for his or her aptitude, and one where dozens or hundreds of applicants for a particular position must be evaluated on the basis of limited information, often from a pool of even more candidates.
A degree by itself is not a terribly reliable proxy for capability or potential, but better proxies are harder to scale and apply to many more people. Companies like degrees because they're an easy, lazy way to (at least in the minds of HR people) establish a competency baseline, and if it's true that most companies would rather have false negatives than false positives, it's easy to see why a degree would be "required" in a lot of cases. Hopefully that will change in the future.
Although not entirely necessary or not guaranteeing the skills and expertise, a somewhat scientific (or engineering if you prefer) background is definitely more probable to give solid foundations for a programmer. I am guessing companies would prefer someone with a scientific background too.
Perhaps a degree in Computer Science specifically is not a prerequisite, that's certainly debatable. In particular, once you have some foundations on mid/advanced mathematics and logic I guess you can catch up with software systems and languages pretty quickly, depending of course on your ability to learn and talent, thus becoming self-taught on software engineering.
Growing up on the farm and being able to work directly along side my father and grandfather, I remember being encouraged to solve engineering-like problems, of which you'll find many on the farm, along with them at a fairly young age. I sometimes wonder if higher education has become, in many ways, an attempt to substitute for that kind of mentorship that is so often lost in our now predominately urban society?
Mentorship is not lost. In fact it is expanding. How many conferences, training workshops can one attend or how many blog articles & tutorials are we reading on a daily basis? Nevertheless, people tend to reject theoretical knowledge or value it more over practical. This can prove to be disastrous as well :).
Although some people have a fair grasp of machinery, imagine someone self-taught building their own reaping machine for your farm, would you try it or would you trust better someone with a more engineering background?
You are right. I was thinking at a young age though. How many people are working with professionals in a given field while still in elementary school? In fact, in many places there are laws against working with those people at such an age, often with farming being the only exception. Adults do have more options, including college, which is possibly the de-facto standard to make up for what I suggest is lost as a child.
> imagine someone self-taught building their own reaping machine for your farm, would you try it or would you trust better someone with a more engineering background?
If you look at the history of the farm equipment manufacturers, they all pretty much started on farms to solve the problems of the farms, built by the farmers. Today, in the well established market, you do not really know who is building the products. They might be engineers, they might not be. Nobody asks - nobody cares.
Aside from nobody using reaping machines anymore, if someone self-taught brought a new reaping machine onto the market, I'd certainly evaluate it. It is not automatically any worse than anything else available. Some of the agriculture products built by big-name manufactures (and presumably fully trained engineers) are laughably bad to begin with, so the bar isn't necessarily high anyway.
Today, it doesn't make economic sense for a farmer to build a machine from scratch, but farm-built modifications to production equipment is very common. While some farmers are professional engineers, farmers come from all walks of life. It doesn't really seem strange at all to be building that kind of thing without formal training. It is just part of the job.
Those best suited to solve the problems of a particular discipline are those who are invested in it. Developing software ought to be a literacy that many are able to attain outside of having a CS degree. That way, one can develop their interests outside of software.
Obviously, if technology is your major passion, CS is awesome. However, maybe you want to become a baker, a musician, a painter, etc. who also happens to like developing software.
You either need a degree or enough financial comfortability to take the time to write and sell your own software or service. Accumulation of advantage, and all that. I have neither and I can't get a job.
Before you say you didn't need a degree, consider if people helped you, if people would only help with unreasonable strings attached, or if you have many friends.
I think that designing, soldering and programming simple PCB with a PIC on it that can echo stuff received over RS232 should be obligatory right of passage project for programmers.
This is false. John Carmack, for example, has made significant contributions in terms of real-time systems and algorithm analysis. Others without degrees have done the same in other fields. Even the chief data scientist of the data science-focused Kaggle came from a non-traditional background. An education is a must. Schooling isn't.