Readit News logoReadit News
zeroonetwothree · 2 years ago
CS degrees aren’t meant to teach any particular skill. They should be teaching general knowledge that helps you adapt to whatever the FOTM is in industry. Realistically you can learn to use git in less than one day. It just shouldn’t be a significant barrier to hiring someone.

None of the specific languages or software I learned during my degree do I even use now in my current role.

knighthack · 2 years ago
Git is not just a fad; it's a literal underpinning of most serious software development these days, especially if you need to work with others.

That a CS grad doesn't even know basic Git is telling not of their degree, but of the individual themselves - that they have no desire to learn beyond what's taught, and couldn't even be bothered to look into the requirements of the industry that they want to work in.

I argue that it should be a barrier to hiring, on that ground.

cellis · 2 years ago
As someone who has used GIT a fair amount over the last 15 years, it has literally one of the worst developer experiences, right up there with C, python’s package management, cuda kernel development or shader debugging, ffmpeg, Scala, MongoDB, and Rust. All of those tools are very useful in todays world but they’re not necessary to do the job,and unless I’m specifically hiring for that skillset I wouldn’t ding anyone who didn’t know them.
jmull · 2 years ago
A couple things...

First, git doesn't especially solve problems that CS majors have until they are near the end of their courses. The need to manage collaboration, organization, and change in a code base is trivial until pretty late in a CS program, and typically never gets past basic.

Second, the context here is the git command-line interface. People can and do use git extensively without it.

Third, git's not exactly perfect. Personally, I'll be a little sad if git remains the de facto standard source control in the long term... it's not bad, but we can do better.

I think lack of knowledge of git commands in a CS grad would be essentially uncorrelated with future professional success.

serf · 2 years ago
>Git is not just a fad; it's a literal underpinning of most serious software development these days, especially if you need to work with others.

yeah, but all of the VCSs before git could've claimed the same thing.

if that's not a fad, what is?

i'm glad git is the soup du jourre today , it's a lot nicer to use than it's ancestors -- but it's not like there isn't room for improvement, either.

that's how git came about, I don't feel like we're at the end-all-be-all VCS yet, especially when there is money to be made by doing things better.

Deleted Comment

WolfeReader · 2 years ago
SQLite is not written using Git. Perhaps you should distinguish VCS - a category of software - and Git, one example of that software.
thunky · 2 years ago
> they have no desire to learn beyond what's taught

You know, sometimes 100% is enough. Have a beer and relax.

qludes · 2 years ago
Even if they're focused on theoretical CS they should still be using git to upload their tex files somewhere in 2024. And from an undergrad degree I'd expect both an OS class and an algorithm or datastructurs course that would use some kind of VCS.

Or maybe all that doesn't exist when you attend Canadian Chromebook degree mills?

mmcnl · 2 years ago
I wholeheartedly agree.
mr_mitm · 2 years ago
To expand on that, and maybe my view is a bit too traditional, but my understanding is that universities ought to prepare you to become a scientist. At least that's how it was historically. They are not meant to be "vocational training plus" or to subsidize the industry by training the work force for them. (It might be different for colleges, I'm mainly speaking from a European perspective.)

I know times have changed, but I don't think git should be taught in a university-level computer science course. You teach graph theory and then many operations in git should become clear after reading the documentation. I don't think any implementation-specific skills should be taught, unless you use it as an example, like Java or C++ to teach OOP. Instead, you teach broad concepts that underpin all of modern computing.

Isn't there a saying along the lines of "computer science is as much about computers as astronomy is about telescopes"? When I was at university twenty years ago people were still claiming you could easily pass a computer science program without ever touching a computer.

the_snooze · 2 years ago
I'm a researcher in one of the more "applied" subfields of CS (security and privacy), and we absolutely use standard software engineering tools day-to-day. You're not going to be a productive member of a research group if you don't know how to navigate the tools of the trade. Research isn't about using Git, Bash, or Docker, but you're dead weight if you can't wield those.

Here's a serious research venue asking for technical artifacts for reproducability: shell scripts, VMs, Docker containers, configs, READMEs, etc. https://petsymposium.org/artifacts.php

coredog64 · 2 years ago
> You teach graph theory and then many operations in git should become clear after reading the documentation

Never have I needed to understand the underlying Merkle tree implementation of git to use it. Instead, I need to know when to branch, how to reset, and what makes up a good commit working set and message.

All of this would be the same if I was sullying myself by learning vocational skills or just being able to effectively and efficiently work by myself on a research project.

ruicraveiro · 2 years ago
Indeed, I've always been against filtering people on programming language. However, I wouldn't hire a developer that wasn't good at the language they had been using or learning for the last years. In the same way, I wouldn't stop from hiring someone without git experience. But I would definitely not hire someone who, in 2024, hadn't been using some CVS tool. Plus, I would be curious to know how the applicant had been sharing code with colleagues in group projects and why they had gone for solutions other than git. For someone more experienced I would be wondering how they managed to be insulated from the most widely used code repositories like GitHub, GitLab, BitBucket, and so on, which overwhelmingly are git focused (BitBucket even started out as a Mercurial solution and then slowly shifted to Git). This could actually be an interesting window into the applicant's decision making process. Even though I would be open minded, I think that the odds would tend more for me to find out reasons not to hire that applicant.
noufalibrahim · 2 years ago
This is theory. In practice, you should have done some work during your course and it's reasonable to assume that using version control (which you can learn in a day) is a skill you'd pick up at that time. If not, what exactly were you doing for all those years is a question.
stale2002 · 2 years ago
Ok.

And source control is an extremely important general concept in the space.

The idea of "programming with other people, on the same codebase" is not some industry specific skill set.

It is important and useful for a thing that involves programming and working with other people.

shreezus · 2 years ago
Anecdotally, some of the best engineers I have worked with were entirely self-taught.
miraculixx · 2 years ago
That's a very weird take. Suerely you would expect some skills from a CS graduate?
whitfieldsdad · 2 years ago
This has proven to be an extremely controversial topic, but, in my opinion, it's perfectly okay to use git in college or university, and we should encourage, not discourage people from using technologies like distributed version control software.

You could substitute git with WhatsApp, Google Drive, or e-mail for small projects, and get by just fine, but, why not spend 15 minutes learning the basics of git?

As far as I know, the use of git and other distributed version control software is very popular, and we don't see the same hesitation when adopting technologies like Google Docs and its collaborative editing features in college or university.

Is distributed version control software truly a controversial technology?

If distributed version control software is not suitable for use in college and university, what would be a more appropriate technology?

yukinon · 2 years ago
The university could even setup their own private self-hosted Gitlab and use it as part of assignment submission.

10 years ago, my no-name college had a CS degree that required us all to take a "Software Engineering" course that covered the fundamentals needed once you graduated, including Git. We did group-style large coding projects where teams had to submit their GitHub repo at the end.

The prof was able to review who committed what and then hammered us on good commit messages, clean coding style, testing, etc.. I feel that a large part of my career success was due to the early start I had from that course.

whitfieldsdad · 2 years ago
I think that this would be a great idea, and could also help combat students not doing anything in group projects.

I lone wolfed most of my group projects in college, and don't have any regrets, but, of the projects that I didn't loan wolf, most people didn't write a single line of code, or only contributed in relatively inconsequential ways.

I think that adopting distributed version control systems in higher education would be mostly good.

blobcode · 2 years ago
This is one of those things that MIT’s missing semester course aims to help with (https://missing.csail.mit.edu/), and although computer science is different from software engineering, the reality is that most CS grads go into software engineering, and thus should try and learn these essential skills.
seadan83 · 2 years ago
Computer science in the graphics space requires a ton of gnarly coding. If we consider post-doc computer science in particular, the idea you dont then need to be at least a semi-competent programmer is.. a surprising idea to have.

Which is to say, the idea CS do not need to ever code is a stretch. How does a person work on cutting edge graphics algorithms without building something with it? Without coding in a pretty serious way?

One example, at the end of my intro to programming, the final assignment was to build something, I wrote a chess program (with a GUI). While some classes are quite theoretical, I strongly disagree that a person can get through all of a CS program without their coding skills being challenged.

serf · 2 years ago
who cares?

git is a tool, not a discipline. It's made to facilitate work, not to create a whole knowledge domain unto itself.

I wouldn't fault a seasoned and well trained mechanic for not knowing the specifics of a specialty tool necessitating the need to find the manual; similarly although git is the current VCS-ish thing of choice right now, it doesn't represent all of computer science.

seadan83 · 2 years ago
VCS is something that is interacted with multiple times a day in any codebase. It is a basic tool, not too far apart from being able to traverse a file system. The next step after viewing files, is being able to commit to and view the history of those files.

I dont know if that answers "who cares", but a mechanic that does not know how to do something they need to do multiple times every day - there is a skill gap. While CS is about theory, I would expect a CS grad to have used all of the basic programming tools and more.

DougN7 · 2 years ago
Any code base?? I question your depth of exposure.
Dylan16807 · 2 years ago
> git is a tool, not a discipline.

> the current VCS-ish thing of choice

It's not like they're using mercurial instead. There's a lot of concepts here they should be familiar with.

> the specifics of a specialty tool

Are you calling VCS specialty in the context of a CS degree? I wouldn't.

theobr · 2 years ago
If a mechanic didn’t know how to use a hammer, I’d fault the mechanic for sure.
noahtallen · 2 years ago
It’s a fair point. At the same time, I think it’s pretty important to cover VCS at some point in college. My CS degree included a couple classes with projects where we did project management, code review, VCS, working with stakeholders, design, etc. —- most of that is just part of life in programming. It’s good to at least touch on it in college.
AnotherGoodName · 2 years ago
What about containers. These are now pretty ubiquitous too. Should they also be taught containers? Package management? Document management systems?

I feel like there's a line where we expect some on the job ramp up. Version control was not ubiquitous 20 years ago even if it technically existed in some early form. We honestly weren't really using SVN/CVS much back then and git wasn't invented 20 years ago. Containerization is another example where it was not ubiquitous even 10 years ago.

What if some new technology becomes fairly ubiquitous across the industry? There's some line where you need to accept people won't be taught this in a CS degree. There's a reasonable assumption that you'll learn on the job and also continuously throughout your career.

noway421 · 2 years ago
VCS is an applied project management and communication system in the context of software engineering. Both project management and communication are disciplines.

CS grads don't need to know VCS, but software engineers do.

kaycey2022 · 2 years ago
I would say that you can put physical computers in that same category. It is unnecessary for a good computer scientist to even touch a computer to acquire the scientific skills required to call yourself a computer scientist.

https://xkcd.com/378/

alexmolas · 2 years ago
This is why it's called Computer Science, and not Software Engineering.
sureglymop · 2 years ago
In my uni, "Software Engineering" was the one class of the CS program that had nothing to do with programming. It was about UML, SOLID, DRY, KISS, agile, scrum and more. Useless class that was mostly a waste of time.

On the other hand, we had classes like Operating Systems, Computer Networks and more where we had to write things in C and assembly.

solarkraft · 2 years ago
It teaches you how to build practically functional and maintainable software instead of the prototypes that are enough to pass other classes. It's one step beyond just programming.
seadan83 · 2 years ago
CS is an underpinning to software engineering. Knowing how code is translated to assembly to then machine language is helpful to engineering. It is helpful to know how to analyze algorithms, to have studied and implemented algorithms.

Though.. in software engineering, being able to write well is perhaps the single most important skill. Communication, documentation, very important.

Are we going to then say English majors are the best programmers? If they later become dev managers or director - then perhaps. Does a person learn English really well by also learning Latin and the origins of english and it's great works? I believe yes, and that is why I think knowing the theory and underpinnings of CS are very useful foundational knowledge. Required? No, but nor is touch typing or anything else that makes a person extremely competent.

Uehreka · 2 years ago
So where should people who want to learn the discipline of software engineering go? It’s definitely what most CS majors are actually there for, and there’s no separate software engineering major at (almost) any liberal arts colleges. I get that saying “that’s why it’s CS not SE” is the hip thing to say when this comes up, but it doesn’t answer the underlying issue, which is that people want a mix of theory and job training, and right now they’re getting almost entirely theory.
jacoblambda · 2 years ago
To quote an older comment of mine: https://news.ycombinator.com/item?id=40416604

> Computer Engineering or any of the other legitimately useful CS degree paths instead of CS itself.

> At least at the school I went to, CS was kind of a joke for undergrad.

> The students that cared about CPU design, low level software (firmware, drivers, kernel, embedded), or robotics (including computer vision, etc) all went computer engineering.

> The students that cared about cryptography or the formal maths side of computing all went to the mathematics dept in their applied discrete maths or applied computational mathematics degree paths.

> The students that cared primarily about high performance computing or applied computing in general (but didn't go one of the aforementioned routes) went through the computational modelling and data analytics program.

> And the students that wanted to learn CS for the purpose of game design or creative arts had their own program within the school of arts (can't remember the name).

> So out of the students who were interested in computing that went to my uni for undergrad, the ones that were left in the CS department were those who were told "get a CS degree for lots of money", those that didn't bother researching any other programs, and those who wanted to be web devs or enterprise java/c# devs.

vitaminCPP · 2 years ago
I don't know where you are from, but in Canada there's a clear distinction between those 2 degres.
threatofrain · 2 years ago
Some universities differentiate between engineering and CS.
vunderba · 2 years ago
Exactly.

Graduates of a computer science program don't know specific commands around versioning software that they can learn in 10 minutes on the job. Gasp.

Algorithms, mathematics and logic are timeless, tooling is not, and it baffles me that people can't distinguish between the two.

EDIT: Furthermore, where did they pull this statistic from? I didn't realize that the census also included questions around git knowledge.

iainmerrick · 2 years ago
But if they aren’t teaching Git, are they at least teaching about source control in general? What it does, how it works, how it should and shouldn’t be used. That would be pretty useful.
mopsi · 2 years ago
How can you graduate from a CS program without having had to learn git somewhere along the way? Do you never collaborate on any project? Do you never check out a repo or make changes to it?
AnotherGoodName · 2 years ago
Here's a thought. Imagine there's another new way of doing things that quickly becomes pretty much ubiquitous in programming (containers may be a good example?). For those who have already graduated long ago and thus didn't learn that new thing in university are you seriously concerned about the people graduating not being rote taught this particular technology?

Git isn't even 20 years old. I graduated before that. I learnt the basics of version control in a day and searched to unblock myself when needed without fuss. It's not a particularly big deal.

When i read things like this I'm extremely concerned and embarrassed for the people demanding new graduates be rote taught specific tech stacks. That's the real concern here. The projection from having so little faith in their own ability to learn they can't even see that something like git is going to be one of the many things needing to be learnt on a new job.

the_snooze · 2 years ago
>When i read things like this I'm extremely concerned and embarrassed for the people demanding new graduates be rote taught specific tech stacks.

I think that's too narrow of a reading. There are some foundational practical tools and concepts that are broadly applicable to all computing tasks: version control, command line file-and-folder navigation, quick-and-dirty sripting. These don't (and shouldn't) need to be "rote-taught." But they can absolutely be integrated into existing coursework so students learn how to use them in context. In a data structures class? Run the lab work in Linux and C++ with basic makefiles. Have a compilers course? Offer the skeleton code for the parser as a git repository and submit via merge request.

stale2002 · 2 years ago
> the people demanding new graduates be rote taught specific tech stacks

If people were graduating from college with a CS degree, and didn't know how to use a keyboard and mouse, then yes Id advocate for them to be "rote taught" basic keyboard and mouse skills that they should have learned in elementary school.

It would show that something is extremely wrong going on if the most basic of skill set isn't know by people who's entire field of study involves computers, and didn't know how basic interactions with a computer work.

Deleted Comment

mos_6502 · 2 years ago
I had a strikingly similar experience at my own university, and took things into my own hands somewhat by teaching a free, basic Git course each semester.

[0] https://ctis.me/s/git

Apreche · 2 years ago
Yep. When I studied CS in early ‘0X the lecture material was only about programming. Everything else you were on your own.

The labs all had Solaris machines. Most students had never seen Unix or a terminal before in their lives. The instruction on how to use it was extremely minimal.

There was a very wide gap between the students who were huge nerds who already knew, or learned in their own, and those who didn’t. There wasn’t even YouTube, or Stack Overflow, or anything much to help in those days.

The biggest difference was between the students who had to physically go to the lab to do their projects, and the others like me who knew SSH existed, and how to use it, doing our projects from the comfort of the dorms.

qludes · 2 years ago
I was a TA during that time. A part of the students that came in weren't familiar with concepts such as files and directories or desktop UI metaphors because they were used to mobile OS or in rare cases didn't have any actual exposure to computers. But because the last case used to be the rule and traditionally students mostly used the provided thin client labs and Solaris servers the basic intro to actually using a keyboard and the provided hardware to get things done didn't change much, even when they switched from Solaris to Linux on x86.
uncletaco · 2 years ago
The iPhone came out in 2007, the ugly brown android in 2008 or 2009, what mobile OS were students using during the time period mentioned in OP’s comment?
redprince · 2 years ago
> There wasn’t even YouTube, or Stack Overflow, or anything much to help in those days.

That's right. We would have been completely lost were it not for... books.

Apreche · 2 years ago
Love me some computer books.