News for hackers. Stuff that matters.
Re:Two out of three developers are self-taught, and other tr... by georgefrick on Thursday March 31, 2016 @11:32AM (#11397902)
I'm not sure I would so quickly listen to the HN trends. There are a lot of people on HN who are younger and they like the idea that this would be a trend. You are allowing them to define the competitive advantage.

You'll have to do the math and weigh the cost/benefits of your degree.

Personally I think we're in a bit of a bubble/gravy train. The idea that programming will become the new automotive assembly line for self-taught labor is a bit of a stretch.

A degree can impart many benefits (math, core CS ideas, subject matter classes such as speech theory, advertising, management, etc). While many people can make enterprise apps with direction based on being self taught; not many can really build something in depth. Boeing isn't going to let just anyone write aerospace firmware. So if you want to get a job quickly and milk this while it's hot - maybe you go for it? I don't think it's clear cut, and I like having my degree. I'm good friends with fantastic developers without degrees who work alongside me.

In the long term; it depends on the competitive advantage you can get out of that time in school vs your peers extra experience in the field; as well as your goals.

Re:Two out of three developers are self-taught, and other tr... by hajile on Thursday March 31, 2016 @12:02PM (#11398143)
Is a degree objectively better?

Developers generally fit into two broad categories -- those who learned to program on their own at age 10 or so and those who decided to pursue a CS degree because the job pays well or they like playing video games. 7 years of experience beats 4 years of college and 3 years experience pretty much every time.

Unfortunately, a huge amount of CS degree time is spent dealing with those with no experience (We have remedial Math or English classes, why not remedial programming classes?). When I hit college (pursuing EE with CS on the side), I already had almost a decade of programming under my belt. I coasted through anything programming related (I'd already found and read books on the theoretical side of programming, so even those weren't that interesting).

At the end of the college road, the people with college only were mostly worthless. They may be able to parrot the big-O notation, but they couldn't tell if a function would be efficient. They could talk about design patterns, but they couldn't handle systems more complex than a couple files. That's nothing against them, I (and others who had been programming from an early age) simply had a lot more experience in thinking in that way (and over time, most of them have become much better).

We need to introduce programming to all children at an early age. Not because everyone can code (that's not at all backed by any studies I've ever seen), but because lots of kids don't find out that they have a knack for programming until college (or not at all).

If most CS students had been programming since middle school, CS could drop a bunch of the remedial classes and focus on the finer parts of programming. Many so-called masters classes are within easy reach if you have some programming time under your belt. Companies would be a lot more willing to hire a dev out of college if they knew college was worth something. Until that happens, I don't think a degree is actually better.

Re:Two out of three developers are self-taught, and other tr... by georgefrick on Thursday March 31, 2016 @12:48PM (#11398561)
I'm actually confused why you seem to be attempting to argue my point, when I was stating it's a situation that is unique to an individual. Do you really objectively think a degree is a yes/no answer that applies universally? What if someone wants to work on deep sea exploration robotics? Yes/No is an oversimplification and your post actually helps to point that out in two ways.

The second way is easier so I'll get it out of the way. More education earlier is an argument that formal programming education can be helpful. That wouldn't undermine the idea that a CS degree has importance on a individual basis; not as a general yes/no rule. We've agree that formal programming education CAN help.

The second point is big for me, and it really bothers me to be honest (not about your post, I appreciate your post). It's this idea that the CS degree is this static cement thing; like we order it from Amazon. A degree is what you make it!

Your point about remedial classes, etc is spot on. It's exactly an argument that each person has to weigh the benefits they can get from the degree with the benefits from going right into the industry. If the person shows up at college and picks programming for the reasons you described; then you are probably correct in that it is not "better". However, college is a four year chance to build a competitive advantage. Statistics. Economics. Linguistics. Physics. Accounting. Art. Etc.

If someone chooses to make their degree a worthless money sink, that does not cancel out the person who spends four years learning to code, analyze speech, and working hard on the OpenROV team. Those are two completely different people and neither needs to put their degree on their resume. But only one can put speech analysis and OpenROV there; which they got as part of that degree. They also now have those contacts and team building experiences. Another example might be someone who spends the four years working part time as a contractor. "Got a degree while building industry experience" trounces "got a degree" AND "industry experience" (imho).

A degree is something you pay for, it's an investment and should be treated as such (in the scope of our discussion). While the underlying argument may be if an employer cares; I think that honestly employers are looking at it as a signal that there might be something more to you than some Java/JavaScript syntax.

Re:Two out of three developers are self-taught, and other tr... by gravypod on Thursday March 31, 2016 @01:05PM (#11398693)
My main problem with attending my university is a lot of my time is spent dealing with classes I can't care about.

Right now my in major GPA is above a 3.2 while my cumulative GPA is hovering around a 2.9; I just don't care about non-cs classes.

This would be find if being at a university had any noticeable benefits, but it only has detractors.

  - No one will hire me for a paid position
  - I have to waste most of my time on classes I don't care about
  - No more time for my side projects that I use to learn.
Re:Two out of three developers are self-taught, and other tr... by georgefrick on Thursday March 31, 2016 @02:15PM (#11399292)
My GPA was not awesome.

You could be affected by any number of things (wrong university, wrong goals, wrong order of operations, in a hurry). Please don't be offended, I just mean that you might leverage your resources better and find classes you care about (I ended up double majoring in CS and Economics, but I didn't care about econ until I tried it).

Here is a more plain and TLDR response. Pretend it's a new investment and write down/spell out what you are putting in and getting out. If it doesn't add up, don't make the investment.

Finally, not caring is a problem. For some arguing in favor of degrees, this is a big part of their point. Why don't you care about those classes? Do you think you'll only ever get cool and interesting projects at work? An employer needs to know you'll spend two weeks finding some ridiculous bug that doesn't even affect anything if that is what they assign. Every third Sunday, the system crashes. Fix it. While your peers do greenfield work. It means sometimes putting effort into things you aren't interested in as part of the bigger picture.

Re:Two out of three developers are self-taught, and other tr... by HeyLaughingBoy on Thursday March 31, 2016 @02:30PM (#11399418)
If you think of it as wasting time, then your attitude will come out in your work. All those classes you don't care about are there because university isn't trade school.

The more interesting work goes to programmers who can communicate. 90% of programmers can get the job done; I want someone who can articulate what he's built, how it can be improved, when it will be ready, what needs to be changed, what we're doing wrong, etc.

That's what all those classes you don't care about are for: giving you perspective outside heads-down coding that can be outsourced for $50/day.

You'd be amazed at how many people I have interviewed that simply either can't, or won't talk (from the interviewer's perspective they are the same thing!).

Again: most halfway decent programmers are adequate. The great ones are great not because they can write code, but because they can explain how that code works to someone else and, vice versa, they can understand someone who is trying to explain why the code doesn't do what they need. That is worth paying for.

Re:Two out of three developers are self-taught, and other tr... by georgefrick on Thursday March 31, 2016 @04:39PM (#11400404)
It actually bugs me every once in a while when I do an interview and I know the guy can code but he just can't articulate anything. It's like he's locked in there and he would be fine if I slipped tasks under his door in an envelope. But to your point it just doesn't work that way and those people get turned away not because they didn't have the technical skills, but because they demonstrated they couldn't be effective beyond the IDE.

The other day I finally cut a guy off and said, "Yes, sure, you aren't good with terms and explanations. How do you have technical discussions with other developers? What do you do in code reviews?". Deer meet Headlights.

I also realize your point is beyond technical communication, and you are right on that too.

Re:Two out of three developers are self-taught, and other tr... by Ologn on Thursday March 31, 2016 @01:31PM (#11398933)
My college had three non-CS writing courses. I would say they helped improve my writing skill, especially one of the classes. I would also say writing well is an important skill to have when working for a business - when writing documents and sending e-mails to other techs, and especially in communications with non-techs. CS is not the only thing you need to know when working for a business.

Other classes folded back into CS or working for a business as well. For example, my psychology course was helpful in a number of areas, including as preparation for an AI elective I took.

Re:Two out of three developers are self-taught, and other tr... by gravypod on Thursday March 31, 2016 @01:38PM (#11398989)
I have to take two physics classes, ~4 history classes, and ~2 English classes.

We also have a requirement for attending a philosophy class about ethics in computing or something.

Re:Two out of three developers are self-taught, and other tr... by HeyLaughingBoy on Thursday March 31, 2016 @02:36PM (#11399453)
My education as an EE was somewhat similar. Before starting any EE classes, I took 4 physics courses, two chemistry, three English/composition/Literature (would have been 4 but I tested out of Engl101) courses, and one History course (that I failed and had to repeat because I blew it off). Then we can get into the stuff I only know I took because it's on my transcript. Stuff I forgot all about because it was never actually "used" like Thermodynamics, Heat Transfer, Linear Analysis, and Math, Math, Math. I think the only time I didn't have anything that looked like a math class was the semester right before graduation.

Somewhere in there I took a few actual EE courses.

Guess which ones had the most impact on my career? Hint: it ain't the EE stuff (although I worked as an EE for 6 years after graduation).

Re:Two out of three developers are self-taught, and other tr... by gravypod on Thursday March 31, 2016 @04:16PM (#11400281)
The difference I see is that EE is a math field. The concepts of EE can only be represented as numbers and math.

Computer science is only focused on logic and algorithms with state.

It's not really math.

But in the end I DON'T mind math classes, I like math classes. I mind stupid English, Lit, and Phil, classes.

I'll probably go for a math minor. I like it. But I'm not going to for a English minor.

Re:Two out of three developers are self-taught, and other tr... by jwhitlark on Friday April 01, 2016 @01:51AM (#11402944)
Part of the signal of a degree is can you do a good job on things that are required but are not interesting. It's called work for a reason; you're not worth much to an employer if you can only do thing that you find fun.
Re:Two out of three developers are self-taught, and other tr... by Ologn on Thursday March 31, 2016 @01:09PM (#11398737)
Yes, we just had a period after 2008 when open positions dried up, and I remember 2000-2001 when the economy hit the tech companies specifically (I went to work at an investment bank). People shouldn't ask if they and their co-workers have CS degrees, they should ask what percentage of programmers in their 40s and 50s they have met have CS degrees (or at least math/physics/EE degrees). 1999 was even more of a go-go time than now, then suddenly everyone was laid off and looking for work, and the few positions open that didn't require a BSCS would have HR go over your educational background asking about it. A lot of the ones without degrees who got jobs when people were desperate to hire got washed out when times got hard, and never came back to the industry. Something to think about when you see all the 20 somethings sitting around you (where are the older people?) and tell yourself a BSCS does not matter.

One point people make is the best programmers without degrees are better than the worst programmers with degrees. This is true but does not mean much.

I took courses in Java and C++, and self-taught programmers tend to know as much as I learned in those classes. What they tend to skip is the theoretical foundations. Calculus, graph theory, theory of computation, mu-recursive functions.

I took two classes (one was elective) which dealt with mutual exclusion, race conditions, critical sections etc. I spent months studying them, writing complex homeworks dealing with them, being quizzed on them etc. This came to be helpful, sometimes very helpful for me. Obviously people are not learning about this as I run across race conditions in code far too often, and I have heard others say this as well. I had to sit down and learn to deal with this for some months and some programmers never do.

I don't understand the comments from people who say they already knew what was taught in class so it was a waste. Class is one fourth of the time, then you're supposed to spend three hours studying for each hour in class. So if you know 100% of what was taught in class you just saved yourself three hours to do something else. I was a Unix sysadmin for a long time and yes, the class where we learned "ls", "cd", "pwd", "chmod" etc. was not that educational. But the next class our homework was to study the process scheduler for Mac, Windows and Linux. I had always put off doing this, so I finally sat down and studied how Linux's completely fair scheduler worked and learned a lot. I learned what actually happened in full when an add instruction came in for two registers on a processor, and what logic gates they would go through. So even what I specialized in was filled out.

Another thing - often it is not what you know you don't know, but what you don't know you don't know. If I know a heap is a good data structure to quickly find the highest number in a list, then I can learn about heaps. If I never heard of a heap I might use a slower method. Or a real world example - in class I learn about Goedel numbers. Then a year later at work I have to take a (short) list of (small) numbers and make them into a hash. But how? Then I remember Goedel numbers. Again, it's not what you know you don't know, it's what you don't know you don't know. To learn by yourself, you have to know what to look for, and you often don't.

As I said, I worked a while as a Unix sysadmin. I went back to finish my BSCS. I'm not rationalizing a decision I made at 18 by talking it up, I realized how important it was to filling in gaps of knowledge, as well as to getting a job, especially when one is needed. A lot of people reading this are too young to have been working when most of the startups and dot-com's folded in 2000, and the few IT positions at traditional companies were flooded with applicants, many with college degrees. Things can turn on a dime, and having 4 years experience in RoR or Node.JS can quickly go from meaning a $120k job to meaning next to nothing.

Re:Two out of three developers are self-taught, and other tr... by gravypod on Thursday March 31, 2016 @01:54PM (#11399115)
So what you are saying is that the classes are just there to force you to learn by yourself?

If I am paying money for class, then shouldn't I be taught the material? Not do something I can do for a free 2-year stint with a computer.

Re:Two out of three developers are self-taught, and other tr... by Ologn on Thursday March 31, 2016 @02:36PM (#11399452)
How does my three years of reading get compressed to two years?

As I said, most recommend each hour of lecture time to be followed by three hours of self-study.

Also, if someone is going to do those three years of non-class study (after class in my case) so they can have my equivalent non-class study - why not just do the extra year of in-class work and get the diploma? The attitude perplexes me - "I will study three years like you, but won't get a diploma that will help in employment".

No one is forcing me to go to class. But if I am taking a class on theory of computation, with quizzes etc., then it makes sense that that will be the months in which I read about pushdown automata outside of class. So after I choose which class to take in a semester, I am in a sense "forced" to study that topic outside class for the next four months. I can also e-mail my professor or classmates or wait after class or go to office hours if something confuses me.

Re:Two out of three developers are self-taught, and other tr... by argonaut on Thursday March 31, 2016 @07:11PM (#11401327)
1) You will spend 10x the time in those 2 years struggling by yourself (or asking questions online).

2) You will have gaps because you missed things

3) You won't retain the knowledge as well because you won't be tested on it.

4) If you're someone who isn't good at math, good luck motivating yourself to study real analysis, optimization theory, statistical learning theory, etc.