5 ms·
> All else equal...having a college degree in CS is an advantage in getting hired over being self-taught. I don't think this is uncontroversial. I've done hund
by moxie 11y ago
> All else equal...having a college degree in CS is an advantage in getting hired over being self-taught.
I don't think this is uncontroversial. I've done hundreds of interviews at companies large and small, and nobody else has ever brought up the education section of someone's resume in discussion.
I look at it occasionally, but my hiring preference is inversely correlated to the amount of education a candidate has. PhDs go directly to the bottom of the pile, then masters, then undergrad, and no school is on top.
- cerrelio 11y agoSince my little sister can now put together an MVC app in 30 minutes with no knowledge of threads, big-O or sorting algorithms, I'd say education matters little for junior devs working on run-of-the-mill flavor-of-the-week apps. However, for more specialized types of systems, I'd require formal education, even going far enough to require topic-specific coursework to ensure depth of knowledge. A team at my company is being led by a guy with a BS in CS, but he doesn't have the background in the type of system he's building. The project has been a source of pain for management for the past few quarters; it's stagnating because he's come upon difficult issues that would be avoided had he had a more comprehensive education. Education is crucial for designing and developing interesting software (i.e. anything that doesn't query a database and pretty print results). Dismissing it altogether can limit the types of systems your team can develop, and limits the career potential of your employees/coworkers.
- marcus_holmes 11y ago> he's come upon difficult issues that would be avoided had he had more experience. FTFY
- cerrelio 11y agoHe'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.
- blub 11y agoI 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.
- roel_v 11y agoLol if you think that you can make a productive machine learning guy with 'an intensive course'.
- blub 11y agoWhat 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".
- roel_v 11y agoMaybe 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
- wting 11y ago>> 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.
- dasil003 11y agoI 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.
- Joof 11y ago
- erroneousfunk 11y agoEven for things that just query a database and pretty print results, having a degree can be advantageous when that database gets big and the number of types of things that are pretty printed gets large and the relationships more complex. I've been working half time on a master's in software engineering for the past four years (graduating this May) and one of the most valuable things I do at my company, in terms of "pain and suffering averted" is map out object relationships, both in the database and in the API, in flexible and extensible ways. I can't tell you how many internal APIs I've seen -- even recently developed ones -- that look like: "/api/getAcctManagerUsers" Instead of, say: "/api/users?role=manager" And these aren't new developers who do this, either. Developers trying to export three and four dimensional data in a single CSV file and wondering why it's so gross to use. Developers adding multiple secondary indexes to a 16kb table that isn't anticipated to grow in size, just because "indexes make things faster." I've seen so many boneheaded things done, just because people were just muddling through and writing the app, rather than actually thinking clearly about the data and the system, or knowing how the pieces actually fit together. I would argue that a formal education in software engineering really can force you to think in certain ways, and develop practices that are useful, even in products that should be "straightforward"
- argonaut 11y agoSure. And for every one of you, there are 20 people who put PhDs from top schools at the top of the pile. I think this is uncontroversial when talking about the industry in aggregate. I'm not limiting this to the "computer hacker community," or the "Rails startup" slice of the industry. Also, you probably haven't interviewed for entry level software jobs at a BigCorp in many years.
- azylman 11y agoYou're both right! He's talking about getting hired, and you're talking about interviewing. The degree can have a significant impact on whether or not you get to the interview stage... and then rarely matters past that. So, all else being equal, you're less likely to get hired without a degree, but you're just as likely to pass an interview.