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.
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.
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.
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.
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.
If you happen to be in that 10%, then yeah, maybe some higher education on those topics is necessary.
If you know developers writing their own distributed system, chances are they are wasting their time, BS or no.
> 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.
> 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.