Hacker News new | ask | show | jobs
by woah 4119 days ago
Actually, CS degrees have little to do with programming skill. I work with hacker school graduates that write cleaner more maintainable code faster than others with CS degrees and 20 years of experience.

EDIT: Actually, the fact that you mention "large scale engineered systems" is interesting. Generally, I have found large, monolithic, tightly coupled systems to be very unmaintainable. "Building a small app" (or a bunch of them), along with in-house libraries tends to be the way to go if you want maintainability. "Building a large scale engineered system" might actually be a red flag when it comes to code reusability and quality.

4 comments

I think you haven't worked much in enterprise environments. You confuse "monolithic" with engineering. Nowhere does an engineered system have to be "tightly coupled" ... I think you could benefit from some of that CS education to see what I mean.

You're confusing "engineered," as in orderly, organized and planned according to specifications with "legacy" systems. A little more time in industry will show the difference.

I've met individuals with one year experience in doing something the wrong way, 20 times. I think the CS degree will prepare the right person to be a better programmer while letting the wrong person slide through. So it may be that the hacker school doesn't prepare the right person as well, but works far better at quickly culling the wrong person, meaning they would be the safer choice to hire from.
I've met these hacker school/self taught types. One of them worked as a programmer for 20 years and didn't know what was recursion until about a year ago. He gets away with it because in programming there are many ways to solve a problem. Usually you only need to solve the problem rather then find the best way to do it.

A CS graduate will know about a 50 ways to solve a problem and will have the ability to find the most optimal way to do it. He'd probably take twice as long as the hacker school graduate who'd solve the problem using the one canned method he was taught in hacker school.

> He gets away with it because in programming there are many ways to solve a problem. Usually you only need to solve the problem rather then find the best way to do it.

"Getting away with it" == using another solution.

> A CS graduate will know about a 50 ways to solve a problem and will have the ability to find the most optimal way to do it. He'd probably take twice as long as the hacker school graduate who'd solve the problem using the one canned method he was taught in hacker school.

Disagree. I rarely find someone with a degree to be substantially better than someone self-taught on the job. I've even seen developers with degrees do far worse.

"Getting away with it" == using another solution.

Not knowing recursion for 20 years is more "getting away with it" then just simply "using another solution"

>Disagree. I rarely find someone with a degree to be substantially better than someone self-taught on the job. I've even seen developers with degrees do far worse.

Sure in jobs where the most optimal solution doesn't matter there is no correlation with performance and degrees. This is probably the case for many jobs. However for a job where it does matter, say the programmers behind the V8 engine or people implementing Ruby and the python features, a degree or knowledge about theory makes a huge difference.

> Sure in jobs where the most optimal solution doesn't matter there is no correlation with performance and degrees. This is probably the case for many jobs. However for a job where it does matter, say the programmers behind the V8 engine or people implementing Ruby and the python features, a degree or knowledge about theory makes a huge difference.

Its disingenuous to think everyone needs to obtain that level of knowledge, at substantial cost, when only a few are going to use that knowledge in the scenarios you described. Not everyone needs to know how to create programming language or write a complier.

We should not look down on those who are bootstrapping themselves in the industry without the exorbitant costs of a CS degree lest we retreat to the mindset of ancient guilds.

>Its disingenuous to think everyone needs to obtain that level of knowledge, at substantial cost, when only a few are going to use that knowledge in the scenarios you described. Not everyone needs to know how to create programming language or write a complier.

This knowledge is usually what separates someone with a degree and someone without one.

I don't look down on someone without a degree, but I have no doubt in my mind that such a person will have a higher chance of being less capable of implementing high concept applications like a ray tracer, a 3D engine, search algorithm, operating system, or a machine learning system, ... etc. These jobs are not so obscure that only a 'few' people need to know it, as you seem to indicate.

In fact there's a popular new buzz word in CS called "Big Data" where those involved need a huge amount of theoretical knowledge that cannot be gained from simply attending a hacker school.

> Not knowing recursion for 20 years is more "getting away with it" then just simply "using another solution"

Someone define recursion here... are we saying this guy didn't know what a recursive loop was for 20 years, or are you using "recursion" in some other way?

edit what i mean is this: did the guy have a hard time defining recursion in terms of CS, or could he flat out not demonstrate it with some pseudo code?

He admitted to me he didn't learn about it until about a year ago. Meaning he never used it in his code and he never understood the concept.

He was a python programmer. Typically in python, you shouldn't use recursion anyway.

Recursion isn't very good in Python this is true. I'm not going to judge the guy's skills since I don't know him, but that seems to be a common pitfall that a lot of developers I know find themselves in - they learn a single language or framework and never break out of it.
That is your social proof. Try passing one of these hacker school grads off in an engineered environment at Google scale - they fall apart quickly.

You proved my point, though. Programming is only one small aspect of computer science. Engineering, mathematics and theory is the biggest part which you can't get at a 6 week school.

I worked at Google, in Search. Some of my best co-workers studied Film Studies, Philosophy, never went to college, or toured with a punk rock band in their early 20s.

A CS degree is one way to learn about algorithms and core CS concepts. It is not the only way.

> A CS degree is one way to learn about algorithms and core CS concepts. It is not the only way.

This is a dangerous idea to those who spent 4-6 years of their life in school before they started receiving real life experience.

> Engineering, mathematics and theory is the biggest part which you can't get at a 6 week school

Agreed. Sadly lots of people are getting sucked into the start up tech bubble. Sure you can get a really high paying tech job on limited knowledge as a web developer at some shitty start up, but it might be gone tomorrow and you'll find yourself SOL.

Having gone the no CS degree route myself I can say that I find myself in a constant loop where I have to prove my abilities even with the recommendation of former bosses and a nice resume.

It would be helpful to hear about your proof, social or otherwise.
Absolutely, if your job is to write search algorithms you definitely need a CS degree (and it'd be great if you have a math degree too). But I'm talking about the day to day app dev, where craftmanship matters a lot more than algorithms.