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

I don't get this viewpoint. Yes, of course when you start at your job you will have to learn how JIRA works or how to write a design doc. Obviously nobody is going to teach you that in college. But nobody is going to teach you that online either!


Writing a design document isn't really part of computer science (a branch of applied math). But most colleges also have some sort of project based software engineering courses that do teach more practical skills to students who want to work in industry.


I learned git and project management by working with people in my college robotics club. (I already knew the barebones basics but that's where I learned the more complex stuff like rebasing.)

No professor or anyone else explained this, me and the other firmware programmers were on our own and had to figure out how to collaborate. That's what people mean when they say it's the social part of college that really matters IMO.


How about performing git bisect to identify when a regression was introduced, or debugging a docker container that is failing to start in your local environment, writing some unit tests for a CI suite, merging a pull request that has some conflicts, etc etc etc.

These a just a couple of examples of things that I see juniors really struggle with that are day 1 basics of the profession that are consistently missed by interview processes that focus on academic knowledge.

People won't teach you how to solve these problems online, but you will learn how to solve them while teaching yourself.


> How about performing git bisect to identify when a regression was introduced, or debugging a docker container that is failing to start in your local environment, writing some unit tests for a CI suite, merging a pull request that has some conflicts, etc etc etc

That's called vocational training and isn't usually taught as part of academic curricula.

If you want non-academic graduates you've got your pick.

Maybe having a technical addendum to academic curricula that makes student work at the end of the studies a criteria for graduation might help. That's how it is done for doctors, lawyers and accountants after all. The difference is that they graduate but can't practice until they have completed training.


It’s not vocational training, it’s the equivalent to the lab portions of physical science classes. We don’t call pipetting vocational training for biologists or titration vocational for chemists, even though both will be doing a lot of that in professional and research careers.


> It’s not vocational training, it’s the equivalent to the lab portions of physical science classes. We don’t call pipetting vocational training for biologists or titration vocational for chemists, even though both will be doing a lot of that in professional and research careers.

You're on the right path: learning how to use a specific tool produced by a specific $Corp is not vocational training, it's end-user training.

Learning pipetting and titration is very different from learning $MegaCorps software tool that will be replaced with something else in a few years.

Source: Me! I did undergrad in multiple different subjects, including chemistry, physics and biology.

Like I said, if you are looking for end-users, you don't have to search very hard. Universities should not be focused on training more end-users. It's fine if there's a half-credit or no-credit course somewhere on "How to use $PRODUCT".

A better option would be, like I said, industrial practice after graduation, before getting a license to practice, but that's way too professional for a field that seriously and unironically came up with SpaghettiCodeAsAFramework.


I’m not talking about SAP or Oracle databases or Matlab, but tools that are as fundamental to the application of computer science in industry as titration is to professional chemists.

There aren’t even that many of them: git, terminals and bash scripting, IDEs, and maybe a database. Vocational training would be stuff like managing VMs/cloud infrastructure, devops, testing, and so on that would be taught as dedicated classes.

The important thing is that these aren’t skills with a dedicated class but skills a student should pick up and masters across half a dozen classes with CS departments that coordinate their choice of tooling.


I agree with you.

SSH and even just managing your dev env in a sane manner are skills that I have to literally hand hold people through on a regular basis and would fully expect people to have coming out of a 4 year degree.

Git and basic SQL are next on the list.


SSH is absolutely not a core CS skill. I use it daily, and I think students should pick it up somewhere along the line. But it still is a mere tool, not a concept that should be taught in mandatory classes. Same goes for latex and git and C.

All of that is, or should be, vocational, because anyone can learn it given some time. Universities are about the hard stuff that is difficult to get right at even a mediocre level.

If your company requires it, include it in your regular training program. Don't dilute the material because you don't want to be bothered. If you think people spend too much time on hard stuff, hire BSc instead of MSc.


Your expectations are completely irrational.


When learning how to git bisect, you're learning two things:

1. the specifics of how to use git (*) to carry out a task

2. the conceptual underpinnings of the task, which would exist whether you use git or perforce or bitwarden or any future RCS.

Being overly focused on either #1 or #2 is a mistake. It's not good understanding the task if you don't know how to use the tools you have right now to carry it out (or what available tools are appropriate). It's not good knowing how to run the tools if you don't understand what you're actually doing. The two go hand-in-hand.

(*) not exactly the product of a mega-corp


If they learned how binary search works in university, they shouldn’t have difficulty to grasp what git bisect does. So that seems like a bad example.


Binary search can be explained in about 90 seconds, you don't need a university course on it either.


Yes, and I did plenty of that during my university education. Except Docker because at the time I refused to use Docker.


Great, and if you got a job with us I would be having to explain how docker works because you refused to learn it for some reason.

Point is that what is deemed important in academic circle is rarely important in practice, and when it is I find it easier to explain a theory or algorithm than teach a developer how to use an industry standard tool set.

We should be training devs like welders and plumbers instead of like mathematicians because practically speaking the vast majority of them will never use that knowledge and develop an entirely new skill set the day they graduate.


You're simply wrong about CS. CS is a science. You are not looking for scientists, you are looking for apprentices. Don't hire an architect to paint your wall. Don't hire scientists to be code monkies. Universities are not the right place to look at.

Except if you instead just want smart people, yea, they tend to aggregate at unis. There, you can hire an athlete to paint your wall, if that's what you need.


Stop kidding yourself, most CS grads are about as much of a scientist as your car mechanic.


A majority, yes. Though I know enough of them that proceeded with a PhD to say that it's far from universal.


I use standard algorithms all the time. Sometimes I have to come up with new ones. And that's not just when I'm working on performance-sensitive roles.

Also, btw, I did eventually learn how to use Docker. I did actually vaguely know how it worked for a while but I didn't want Linux VM anywhere near my computer, but eventually I capitulated provided I didn't have Linux VM running all the time.


> I didn't want Linux VM anywhere near my computer

This is like taking auto mechanic classes and refusing to touch a car because of the grease.


Why are you against running a vm? And a superior OS in the vm, to boot?

Your comment gives spooky vibes. Like, I'd expect you to avoid pattern matching, because "nested ifs work fine".


Ditto. I avoided Docker as long as possible and look forward to the day it is replaced.


IME it is far far easier to teach a CS graduate how to use some software than to teach a user basic CS principles.

Besides, at the rate of change we see in this industry, focusing on producing users instead of developers will make half the stuff outdated by the time the student graduates.

I mean, okay, lets teach Jira. Then the industry switches to assure develops.

That's the general problem with vocational training: it ages much faster than academic stuff.


We have obviously had different experiences, but I would much rather have a high level conversation on an abstract academic topic like reinforcement learning, set theory and how it applies to sql, merkle trees, cpu architectures etc that a junior dev will be adjacent to but not necessarily need to interact with vs something like AWS IAM roles or the various gotcha's and foot guns in CSS.

I agree that vocational knowledge decays faster, which is why I would prefer stricter training and certification in those areas vs something like building a compiler from scratch in the your final year of undergrad based on a textbook written by the professor 10 years ago.




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

Search: