That seems really weird. Academic CS isn't really necessary for most programming jobs, but I can't see how it would ever be a detriment.
That seems really weird. Academic CS isn't really necessary for most programming jobs, but I can't see how it would ever be a detriment.
A recent example: https://news.ycombinator.com/item?id=14267555
Great programmers should hopefully recognize and implement a proper balance between practicality and rigor, as necessary. They should also exhibit self-awareness and self-restraint, which sounds like the real problem for the guy you mention.
Those people were just getting a bit better at building things. They were building experience. It just so happens you found their bad code that they'll realize was terrible a few years from now.
We can't simultaneously hate our own previous code and expect everyone else to delivery perfectly when they first start (or even at mid-level).
There's also an immense cost to not having CS fundamentals in terms of performance and wasted time; I don't want to pay someone to try and solve a version of the halting problem, or matching opening and closing delimiters with regexes.
Conversely, I've been hired, without a formal interview, twice merely for having gone to CMU. I guess it can work out either way.
In senior positions CS knowledge is less relevant day-to-day, because your experience overrides a lot of that theoretical stuff. However, whenever I apply to companies, the questions about basic CS usually result in me turning down interviews. It would be a poor use of my time to memorize that stuff again only to not use it beyond the interview.
I had a really bad experience with this recently, where I had a final interview which went really well in 3 out of 4 interviews. In one of them the interviewer was expecting a very specific solution, and I believe that I said something like, sorry I don't exactly remember how tries work, and I believe that is what resulted in no offer.
At first I was disappointed greatly, since it seemed like a great opportunity, and I had a great interview and experience with the other 3. But in hindsight, I realized I would really not enjoy working with this person every day.
In my experience, people are often hesitant to hire people who are higher on some (perhaps tacit) measure of nerdiness. Only when people want to win badly enough and it's clear that others are doing better, will many people start questioning such biases.
Depending on context and delivery, overfocus on academics could also be interpreted as snobbery, giving an impression that the candidate is difficult to work with, or that they think less of potential colleagues who don't have the same formal training.
My experience is that most people are happy to leave school behind, and they invoke theoretical concerns only when they are applicable and relevant. People want to hear about you've built and what you've done, they don't want their compsci textbook recited back to them.
If a candidate only has heavily academic projects, or can only discuss projects in heavily academic terms, interviewers may assume that the candidate is either a student or a researcher, and in either case, that person is probably not a fit for a conventional programming job (but they may be a great fit for a much cooler job in R&D somewhere).
Some companies really value an intensive academic background, but not all or even most of them (the article says that only 40% "need to see" academic CS skills, 15% actively dislike overt CS discussion, and that leaves 45% that didn't respond or don't care or whatever -- 60/40 split that talking less CS is at least harmless if not beneficial).
The takeaway, IMO, is to keep things at the high level, and stay focused on real, practical experience until prompted otherwise.
I also think that if knowing something harms me in the eyes of the company, then I do not want to work there. Such environment must be demotivating for learning. And i need to continuously learn. It is ok if they don't care and it is awesome if they are interested in different things that me (I can learn from them). Especially if we are talking about small companies where people who interview you reflect wider culture. Working in environment where people sort of punish you for knowing things they don't know is road to mediocrity. I want to work with collegues that will motivate me to learn - that is super important in length term.
So that leaves 85% of companies where I can talk about theory and not be harmed at all.
That sounds like the social skills issue. If the interviewer signals change of topic is needed and interviewee does not follow, you definitely know the person has limitation in the social skills area. Also, if the person can not talk about practical aspect, they can't.
However, "15% actively dislike overt CS discussion" does not suggest companies that merely wanted to talk about practical aspect and could not. It suggest companies that are hostile towards people who attempt to talk about theory - talk about it too much and you are primary theoretical despite being also capable practicaly.
In any case, I do not want to work somewhere where I am expected not to talk about what I know (beyond the normal "don't have long monologues they areally not interested in"). I want my collegues to talk about what they know too.
Knowing how to code quicksort or reverse a binary tree isn't, but an understanding of normalization definitely is...
- it works well sitting around a whiteboard, which is a nice friendly dynamic that emulates how we really work
- it doesn't require detailed/arcane recollection of specifics, is more conceptual. Who wants to fail someone because they don't remember a parameter or some specific details of how TreeMaps work?
- it can't be faked - no-one can talk their way through a database design discussion unless they really have an aptitude for it
- its interesting. Who doesn't want to spitball around, say, modelling what Uber's database might look like behind the scenes.
I would say there are plenty of decent programmers around who can't (or haven't) done any real database design work, but if its a core skill (SaaS app development) that you really need, then its an easy one to detect at interview.
Remember that FizzBuzz was originally proposed as a response to the number of CS degree holders who allegedly could not code their way out of a paper bag.
I don't care if someone can derive the hierarchy of Turing degrees from first principles. I care if they can do the job I'm trying to hire for.
I imagine they correlate an over interest in CS concepts with said group.