News for hackers. Stuff that matters.
Re:Silicon Valley Asks Mostly for Developers with Degrees by marcus_holmes on Thursday March 31, 2016 @12:52AM (#11395066)
> he's come upon difficult issues that would be avoided had he had more experience.

FTFY

Re:Silicon Valley Asks Mostly for Developers with Degrees by wting on Thursday March 31, 2016 @01:11AM (#11395123)
>> he's come upon difficult issues that would be avoided had he had a more comprehensive education.

> he's come upon difficult issues that would be avoided had he had more experience.

I vehemently disagree with this. Education provides the breadth to know where to look for answers. In industry, a developer gains depth as this is mutually beneficial for the employer.

There are fundamental topics that self-taught developers generally don't learn because they're not directly applicable to industry, yet come up in practice all the time:

- compilers / PL theory

- kernel development

- distributed systems

- statistics

- graph theory

The cost of switching jobs to learn aforementioned topics is magnitudes higher than simply taking a course, assuming one can even get hired for a position with no relevant knowledge or experience.

I know a few smart and motivated self-taught developers. They're incredibly productive, but sometimes waste too much time trying to solve known problems in an inefficient manner.

Re:Silicon Valley Asks Mostly for Developers with Degrees by dasil003 on Thursday March 31, 2016 @02:02AM (#11395282)
I have a CS degree, which I completed with a significant percentage of graduate-level classes where among other things I wrote a compiler, a raytracer, and a network stack. I agree that the breadth of knowledge from a proper CS program gives you the lay of the land in a way that a self-taught individual won't have.

But I certainly would never hold it against someone not having a CS degree, even in specialized fields. Frankly, you can learn more in a couple months on the job at places doing real cutting edge work than you would through an entire CS undergrad program, at least for the purposes of shipping software of value.

The bottom line is if you have what it takes to be a competent software developer, anything you would learn in a CS degree is easily accessible just by learning the right things to google for. There are certainly disciplines that require more specialized knowledge and have a much higher bar than your typical CRUD app, but even there I don't feel like school is any kind of important factor in determining whether one can achieve competence.

I can't put my finger on it exactly, but I think there is a baseline ability to grok software which can be unlocked in an individual through sufficient practice, but not by education, and this is the primary factor to one's productivity in all programmer jobs.

Re:Silicon Valley Asks Mostly for Developers with Degrees by Joof on Thursday March 31, 2016 @02:43PM (#11399520)
When I learn something completely new, the biggest obstacle is often finding a good source of information and path to learn it on. School definitely has it down once you hit graduate classes (and they often have free accompanying material!), but I'm not sure it's as good for basic programming skills. It's like learning an instrument, you have to work at it a lot and a one-on-one tutor would probably help a lot. What people do need are good exercises and a way to find reference material that is high quality. There's a ton of bad code tutorials and classes out there and its difficult to sift through.
Re:Silicon Valley Asks Mostly for Developers with Degrees by marcus_holmes on Thursday March 31, 2016 @07:23AM (#11396332)
And I vehemently disagree with this. Self-taught people know how to teach themselves anything they need to know. If a problem takes them in a direction that they don't understand, they know they can understand it with some effort.

My experience of university-taught programmers has been that they can't teach themselves, and tend to assume their knowledge is wider than it actually is.

And my original point is that experience is massively more useful than education when encountering difficult issues in the field. I stand by that. I've seen too many real-life examples to not believe it.

Re:Silicon Valley Asks Mostly for Developers with Degrees by dagw on Thursday March 31, 2016 @08:51AM (#11396738)
Self-taught people know how to teach themselves anything they need to know. If a problem takes them in a direction that they don't understand, they know they can understand it with some effort.

This is an extremely optimistic view of self taught programmers. While these type of self taught people certainly exist and I have worked with a few, they're definitely not universal or even, I would say, the norm. Most self taught programmers I've dealt with will brute force any problem they have into the one thing they know and are just barely scraping by on frantic googling and copy-and-pasting in random code from stack overflow.

Re:Silicon Valley Asks Mostly for Developers with Degrees by neffy on Thursday March 31, 2016 @11:07AM (#11397703)
First I would suggest that being able to teach oneself and having a university degree are not mutually exclusive - and indeed a lot of courses are so bad you need to be able to teach yourself in order to successfully escape them

That said, a lot of people in both categories aren't that great in the workplace. Either through lack of discipline, lack of experience, emotional problems that prevent them acknowledging negative feedback and using it to improve themselves, or a general desire to overthrow capitalism whilst reading Facebook. But none of that has anything to do with going to university which is a privilege that may or may not be available to somebody given their class, background, and general life experiences.

As long as programming remains an uncredentialed occupation - compare and contrast with medicine and the law for example - people without degrees deserve the right to be assessed on the quality of their actual work, and not a general prejudice on how they acquired the ability to do it. After all, the people who laid the foundations for computer science, necessarily didn't have a computer science degree.

Re:Silicon Valley Asks Mostly for Developers with Degrees by marcus_holmes on Thursday March 31, 2016 @10:20AM (#11397334)
That's bad project or team management, not down to quality of coder.

You could easily say the same of university-educated coders who only learned Python and C and are up against a real commercial deadline for the first time. I've seen those folks do some crazy shit.

Dumping anyone into a project outside their area of experience with no guidance will cause poor practices.

Re:Silicon Valley Asks Mostly for Developers with Degrees by Dr_tldr on Thursday March 31, 2016 @02:12AM (#11395312)
None of your fundamental topics except for graph theory and a tiny bit of distributed systems stuff will ever come up for 90% of developers.

If you happen to be in that 10%, then yeah, maybe some higher education on those topics is necessary.

Re:Silicon Valley Asks Mostly for Developers with Degrees by nemothekid on Thursday March 31, 2016 @02:06AM (#11395300)
wrt, to your fundemental topics, I'm not convinced companies are hiring BS grads for those fields, nor do they come up in "practice" all the time. Distributed systems are notoriously hard to get right, to the point you should almost always be using an off the shelf solution. If you find yourself in the industry, 1-2 years after college, needing to build and deploy a distributed systems, I don't really have confidence that "15-440 Distributed Systems" would adequately prepare you to launch a production system that actually serves customers. In Distributed Systems specifically, I believe experience trumps education as most (popular) systems now predicated on running some nodes in an expendable cloud over a flaky network. I can't really imagine a company hiring fresh faced BS grads to build compilers and distributed systems, even if they did attend an elite school.

If you know developers writing their own distributed system, chances are they are wasting their time, BS or no.

Re:Silicon Valley Asks Mostly for Developers with Degrees by tragic on Thursday March 31, 2016 @06:17AM (#11396085)
It depends what you mean by distributed system. A rich SPA type web app connecting to a server is in a limited sense a distributed system. Pretty much any common AWS setup involves distribution. These are things that a wide variety of programmers touch every day, not just people who are experts at formally verifying their CRDTs or whatever.
Re:Silicon Valley Asks Mostly for Developers with Degrees by alexc05 on Thursday March 31, 2016 @08:34AM (#11396657)
> I know a few smart and motivated self-taught developers.

> They're incredibly productive, but sometimes waste too much.

> time trying to solve known problems in an inefficient manner.

As a self taught with 20 years in field, I agree and am even in the process of getting ready to go back to school because of it.

Re:Silicon Valley Asks Mostly for Developers with Degrees by blub on Thursday March 31, 2016 @03:08AM (#11395501)
All of these are niche topics, they don't come up all the time. e.g: I am doing embedded Linux and wouldn't dream of doing kernel development, it just wouldn't make sense when there are people specialising in that.
Re:Silicon Valley Asks Mostly for Developers with Degrees by cerrelio on Thursday March 31, 2016 @01:05AM (#11395099)
He's in his early 40s and has two decades of development experience. Experience is not the issue. The issue is his lack of machine learning knowledge. His dodgy, non-working, memory-hoggy misimplementation of A* search on a problem space of size > 10^20 demonstrates that very pointedly. Also, his general experience should teach him that if he knows nothing about a topic then he should do his homework. He doesn't. Education is key.

He sure can build a great ecommerce system in Rails though.

Re:Silicon Valley Asks Mostly for Developers with Degrees by blub on Thursday March 31, 2016 @03:34AM (#11395570)
I don't get this. Why aren't you sending this guy on an intensive course on machine learning (and graphs) instead of complaining on HN?

This way he'll acquire that missing knowledge and one can still profit from his decades of experience, something a fresh graduate would not have and can't acquire at all without spending the actual time.

Re:Silicon Valley Asks Mostly for Developers with Degrees by cerrelio on Thursday March 31, 2016 @12:59PM (#11398640)
1) I'm not his manager. 2) I've sent him half a dozen papers about topics ranging from heuristic search to genetic programming to general good ML practices. He's read none of them. 3) He believes he knows what he's doing.

Those who do not want to be helped cannot be helped. And an intensive course won't fill all the statistics and math requirements he doesn't have.

Re:Silicon Valley Asks Mostly for Developers with Degrees by roel_v on Thursday March 31, 2016 @04:56AM (#11395850)
Lol if you think that you can make a productive machine learning guy with 'an intensive course'.
Re:Silicon Valley Asks Mostly for Developers with Degrees by blub on Thursday March 31, 2016 @05:47AM (#11395996)
What does it take to make a productive machine learning guy?

OP seemed to hint at a master's degree or Phd, but then also mentioned doing one's "homework".

Re:Silicon Valley Asks Mostly for Developers with Degrees by roel_v on Thursday March 31, 2016 @06:56AM (#11396209)
Maybe it's a difference in interpretation, but to me, an 'intensive course' for people who are working is a few weeks of classroom-led instruction. That's the interpretation I was dismissive of.

Without wanting to make this into a discussion about what 'a productive machine learning guy' needs to know, I would say that you need to be able to understand, implement and calibrate most state of the art machine learning techniques. So then you need 3-4 semesters of undergrad maths (algebra 1 & 2, calculus 1 & 2, statistics, linear algebra), a theoretical machine learning specific course (course as in 'university course', so 8-12 weeks with 1/2 lectures per week plus lab sessions, plus homework/exercises, plus exam; this could maybe be consolidated into half that time for a more experienced person who commits himself 8 hours a day plus half a day on the weekends), an operations research or similar course, and maybe a numerical computing course or short course.

All of this is assuming that the candidate already has a solid grasp of computer programming, including some data structures, algorithms, distributed systems maybe. Plus good practical skills, but that should be the least of the problems.

This is at least one year of full time study, for a gifted person who can really commit to the program. Realistically it's 1 1/2 or 2 years for most people.

Somebody without a college degree will likely not know any of these topics (I mean the things from my second paragraph), save maybe some high school calculus and stats. Maybe they've used R a bit and have done some numerical computing or so. But that's a far way from becoming what I would call 'a productive machine learning guy'.

edit: typo

Re:Silicon Valley Asks Mostly for Developers with Degrees by blub on Thursday March 31, 2016 @07:23AM (#11396330)
Thanks for the thorough answer. My interpetation was that the person described could get away with having fundamental knowledge - this was optimistic and involved too much guessing on my side.
Re:Silicon Valley Asks Mostly for Developers with Degrees by roel_v on Thursday March 31, 2016 @07:38AM (#11396381)
Well I can't blame you - I have thought for years myself that I could 'pick up machine learning' like it was some web programming framework that you can be an expert at over a weekend. But I had to concede after a few years of trying on and off that it doesn't work like that. Which is also why it's a testy subject for me - like how ex-smokers are usually the most obnoxious anti-smoking crusaders.

I don't have a proper math-intensive CS degree myself, only a 'software engineering' degree, so I've been going back to uni and studying when I can to build a math foundation first. So what I wrote down above is basically the 'curriculum' I designed for myself, as well as what I already know from the software side and is needed for ML.

To make it relevant again to the topic at hand - this is also why a university degree (and a proper one) is required for programming jobs that are cutting edge. Sure, making websites doesn't require it - and neither do line of business CRUD applications. The interesting work though is not 'programming', it's 'using math to solve problems and using programming to get the computer to do the repetitive stuff for you'. When it's framed like that, it becomes obvious why a university degree is required.

(yes yes theoretically it's possible to study math by yourself - the number of people who have the discipline to do that though is minuscule compared to the number of people who can bootstrap themselves to be 'programmers' of simple applications like web applications, most mobile apps or CRUD applications)

Re:Silicon Valley Asks Mostly for Developers with Degrees by duaneb on Thursday March 31, 2016 @05:57AM (#11396025)
Isn't that what a degree is? Granted, an expensive, intensive course in the US.
Re:Silicon Valley Asks Mostly for Developers with Degrees by diffraction on Thursday March 31, 2016 @09:38AM (#11397021)
Yowza, sick burn on your coworker! Since we are talking about hiring practices have you read this section of Joel's Guerilla Guide to Interviewing?

"People who are Smart but don’t Get Things Done often have PhDs and work in big companies where nobody listens to them because they are completely impractical. They would rather mull over something academic about a problem rather than ship on time. These kind of people can be identified because they love to point out the theoretical similarity between two widely divergent concepts. For example, they will say, “Spreadsheets are really just a special case of programming language,” and then go off for a week and write a thrilling, brilliant whitepaper about the theoretical computational linguistic attributes of a spreadsheet as a programming language. Smart, but not useful. The other way to identify these people is that they have a tendency to show up at your office, coffee mug in hand, and try to start a long conversation about the relative merits of Java introspection vs. COM type libraries, on the day you are trying to ship a beta."

http://www.joelonsoftware.com/articles/GuerrillaInterviewing...