Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I agree with this. But unfortunately my experience is industry tends to not agree with us. They are like 'cool you know fundamentals, now do this take home project that requires x programming language with m framework'. This isn't too nice for new hires that learn just fundamentals and not the tooling and frameworks industry expects new grads to have. Industry seems to expect CS degrees to be vocational degrees.


> But unfortunately my experience is industry tends to not agree with us. They are like 'cool you know fundamentals, now do this take home project that requires x programming language with m framework'. This isn't too nice for new hires that learn just fundamentals and not the tooling and frameworks industry expects new grads to have.

I think the idea is that you should be able to pick up the language and framework as you go, if you do actually have the concepts down. If your generalised knowledge isn't to the point where you can apply it to some arbitrary framework/codebase in some arbitrary (imperative) language and start being productive more or less immediately (with documentation open in another tab), then your generalised knowledge just isn't at the level where people care about it, yet.

edit: That generalised knowledge they're expecting absolutely might go beyond what you're shown in school (it depends on the school). If you draw the line of "fundamentals" at "what was in my curriculum", then that's an arbitrary line you're drawing, and it's not the line that most of the industry is using (even if people are using their own coursework as their meter). If you consider (eg, in a web dev context) HTTP requests and MVC "fundamental", then you should be able to pick up Rails or Django or whatever without much trouble. Whether or not your school had classes on that doesn't really matter to anyone.


I think you missed my point. Companies I've seen don't care if you have fundamental knowledge of algorithms and data structures. They are testing you on specific frameworks via interview questions and take home projects. They are looking for industry experts in certain frameworks. These companies seem to equate CS programs with vocational schools or bootcamps and are only looking for coders that already know certain frameworks. Your comment justifies what I already believe and understand, but I am pointing out some companies seem to value bootcamp-tier knowledge more than fundamental knowledge and discriminate against graduates that focused heavily in theory but little in frameworks.


> Companies I've seen don't care if you have fundamental knowledge of algorithms and data structures. They are testing you on specific frameworks via interview questions and take home projects

No, I got that. My point was that no one cares that you completed an algorithms and data structures course, they care that you know the fundamentals of (the subgenre they're interested in of) software development. You're just using a definiton of "fundamentals" that excludes the (entirely language and framework independent) concepts they care about that you don't know.

A take home project using a specific language and framework does not require you to know either to complete it before you start; if you know the concepts, you can pick them up as you're writing it. If you've never seen MVC before (and the knowledge you have doesn't allow you to grok it fast), then in a web dev context I would argue that that is a fundamental concept you are missing, which was my point.

Interview questions can be different, but you didn't mention them in the post I responded to.


My definition of fundamentals is more traditional CS algorithms and data structures, not "fundamentals" to a specific genre of the software development genre outside of traditional CS algorithms (ones start up companies or what have you are interested in). The fundamental taught in a traditional CS program may exclude the fundamentals that start ups use day-to-day and the fundamentals taught in traditional CS programs many be useless to startups.

So, while a student may have strong CS theory, they may lack industry specific "fundamentals" and companies may discriminate against those candidates because they lack that industry specific skills (that otherwise could easily be picked up).

I argue that traditional fundamentals as defined above are more important than industry specific tooling or frameworks, since the tooling or frameworks change but the core theory does not. I would like industries to not discriminate against graduates that come from a strong theory background but weak industry specific background, since these people should be able to pick up whatever tooling or frameworks on the job.


> companies may discriminate against those candidates because they lack that industry specific skills (that otherwise could easily be picked up).

What does "otherwise" mean, here? The context we were discussing is that they asked you to quickly pick it up in a take-home assignment, and you couldn't pick it up that quickly. I don't see how this is them being shortsighted; it sounds like you just not delivering on the promise of your "fundamentals".

> the tooling or frameworks change but the core theory does not.

I 100% agree: someone who learnt MVC with Smalltalk in 1979 won't have any trouble picking up Rails' or Django's or whatever's version today. The concepts are timeless.

edit: to boil it down:

> these people should be able to pick up whatever tooling or frameworks on the job.

Yes, and if they can, they won't have trouble picking it up in the process of writing a take-home assignment. If they can't do that, then they just failed a litmus test.


>you couldn't pick it up that quickly. I don't see how this is them being shortsighted; it sounds like you just not delivering on the promise of your "fundamentals".

I never failed any take home assignments, so this isn't about me. I am speaking more generally and not about me personally. My point is fundamentals don't change, frameworks do.

Edit: For some reason I can't reply to your response of this question. But no problem. I see your point and I do agree with what you're saying. Thanks for clarifying.


> I never failed any take home assignments, so this isn't about me. I am speaking more generally and not about me personally.

It was generic "you", the hypothetical person who was having trouble with take home assignments but not interview questions that you were talking about initially. All of my points were about that hypothetical person, and not you personally. Sorry for the misunderstanding.

> My point is fundamentals don't change, frameworks do.

Yes, that's what I was addressing. Companies aren't asking about frameworks when they give you a take home question, they're asking you to learn the framework if need be, which will be easy if you know the fundamentals. I'm not sure where you're getting lost on this point.


I think the deeper point is the difference between a career and a job.

Most companies have very short-term thinking and are looking to hire for the task at hand (to be fair to them, it's not always good to over engineer or over invest). If you do get a job, the problem can be in 5-10 years when your company's needs change or you want to move up in your career.

It may not apply equally to tech or could be a generational thing, but generally trade schools taught specific job skills while colleges taught concepts (and usually omitted a lot of the specific operational skills). I've heard my dad describe it as a familiarity with the wider discipline and the knowledge of where to go for a deeper understanding, when needed. A lot of the baby boomers I know went back to school later for their Masters or PhD because that was a limiting factor for their career advancement.

Less and less often companies are investing long-term into employees. It's up to the individual. That being said, not everyone has to be a lead or a CEO. You can have a long and fulfilling career being a really good mechanic or code monkey. It's such a well earned stereotype to see people go into management and really miss the day-to-day coding work.


  Industry seems to expect CS degrees to be vocational degrees.
Yes, I think you hit the nail on the head here. Unfortunately, in some places software developers are treated not so much as engineers as more like advanced technicians.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: