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.
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.
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.
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.
This is like taking auto mechanic classes and refusing to touch a car because of the grease.
Your comment gives spooky vibes. Like, I'd expect you to avoid pattern matching, because "nested ifs work fine".
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.
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.
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.
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.
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.
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.
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.
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.
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