10 ms·
The number of CS grads who don't even know basic Git commands is astounding
- h2odragon 2y ago"its so easy to use!" tho, right? Why should one need formal education to pick it up? Git is like Autoconf for a lot of problems: utterly unnecessary but often included by default because people have been told "best practice" and never thought to ask themselves if that was true in their case.
- Dylan16807 2y ago> "its so easy to use!" tho, right? Who are you paraphrasing there? Git is the program where I see the most alternate interfaces trying to make it easier to use. "basic git commands" are more or less easy but git overall is a mess.
- seadan83 2y agoAt first a person follows a best practice because they dont know anything else. Next, a person learns why something is actually a best practice. Which, eventually is a way to also learn whdn something is no longer the best practice. They learn when to break the best practice, specifically which situations it is not best. Not being able to rollback or view file history are major handicaps. It is like not being able to dribble a basketball with your left hand. It is a best practice to be an ambidextrous dribbler. CS is young, some best practices are opinion, others are tools that you should know about in order to achieve basic competency.
- Aspie96 2y ago> utterly unnecessary Is your alternative another versioning software or just a massive pile of folders?
- h2odragon 2y agoarchived releases, so "folders" i guess i dont really ever have a need to go back over the previous versions tho. don't revisit old mistakes, make fresh new ones!
- cranberryturkey 2y agoI've worked with hundreds of CS grads, the worst programmer I ever came across (as far as readibility of his code) had a master's degree in CS from stanford.
- throwxyz 2y ago[flagged]
- jesselawson 2y agoSimilar experience here, too. Virtually every time I have worked with, trained, or reported to someone with a CS degree from Stanford or Harvard, they have approached their work with a narrow mind and little empathy for others. This has been true in the military, public sector, and the private sector. I don’t know what it is about these places. I read something a while back that did color my understanding of folks somewhat, and that was that there are a lot of people who come into the technology field for the money, not necessarily because of their lifelong interest in tinkering with computers. That to me is nuts, but I guess it’s to be expected. Maybe the sample size of my experience with these folks is overrepresented with people who are in it for the money and not curiosity and creativity. I don’t know.
- miraculixx 2y agoSome people have been told "you are better than anyone else" for their whole life. So that's their base line. Guess what
- zeroonetwothree 2y agoI would look more at their undergrad, a masters doesn’t really mean much. It’s a short program and mostly focused on more advanced topics, not standard coding skills. (Full disclosure: I have a masters)
- 9659 2y agoIt could be they are working at a level higher than you understand. Not being snarky, but the elite schools are significantly advanced. Imagine learning algorithms from Knuth (yes, I know he hasn't taught undergraduates in 50 years). Looking at the results after being taught by Dr. Smith at Generic State University, you might be unable to recognize the genius.
- alexmolas 2y agoThis is why it's called Computer Science, and not Software Engineering.
- sureglymop 2y agoIn 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 2y agoIt 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.
- sureglymop 2y agoThere is some truth in that but mostly I would disagree. A lot of what I mentioned are ideas/concepts that usually came from one or more "guru-types". They may have been programmers, managers, or other. They're not necessarily wrong but the issue I have is that, in science what should be taught is to question everything and see if it's actually correct and verifiably so. With a lot of these concepts this is seemingly never done. It also comes from a specific period where everything happens to be quite tightly bound to Java (UML, Clean Code etc. especially). That doesn't mean that I can't learn something from it. But it is almost a little hypocritical when you are taught the importance of abstracting and generalizing but then the tools given themselves are not even general enough to apply to anything besides enterprise Java.
- Uehreka 2y agoSo 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.
- blobcode 2y agoThis is one of those things that MIT’s missing semester course aims to help with (https://missing.csail.mit.edu/ 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 2y agoComputer 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.
- mos_6502 2y agoI 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 https://ctis.me/s/git
- zeroonetwothree 2y agoCS 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.
- ruicraveiro 2y agoIndeed, 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.
- knighthack 2y agoGit 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.
- qludes 2y agoEven 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?
- vetrom 2y agoWay back in my matriculation, I saw the same behavior but written in terms of CVS, even. As some other posters have written, CS, as it is purely taught, doesn't often touch on the realities of software engineering and delivery. IMO, it should. An education without any relation to practical skills just makes it that much harder to leverage what you learn.
- serf 2y agowho 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.
- Dylan16807 2y 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.
- noahtallen 2y agoIt’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 2y agoWhat 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.
- 2y ago
- pixelmonkey 2y agoI think every CS undergrad (or self-taught programmer) should run through the Harvard "CS50x" course, and supplement it with the MIT "Missing Semester" course. This way you're guaranteed to have a bit of C, clang, make, Python, git, UNIX shell command, and GitHub understanding by the time you enter the industry as a programmer. I wrote a little guide to how to do this here: https://gist.github.com/amontalenti/dabeba392b8ac144c6f68bddde082979 https://gist.github.com/amontalenti/dabeba392b8ac144c6f68bdd... The guide stemmed out of the fact that I saw questions related to all this from beginner programmers, even those with CS degrees. I think one of the issues is that CS departments (including the one I went through at NYU years ago) think some of these things are sort of like "implementation details" of computing/programming, so no one course ever focuses on the topics in a cohesive way. They just sort of expect you to pick it up by osmosis. When I was an undergrad I supplemented by working on GNOME/GTK open source projects, which gave me nice exposure to UNIX tooling, version control, issue trackers, as well as compilers, C, and Python. (Funny enough, we did have a course on shell programming at NYU way back when, but it was only because the author of ksh, David Korn, was a professor!)
- deleted 2y ago[deleted]
- hprotagonist 2y agomost mathematicians and theoretical physicists don’t know what the business end of a spanner is, either. mechanical engineers have a fighting chance at knowing, and tradie apprentices assuredly do. This is less surprising simply because those disciplines and their relative abstraction hierarchies are older, more well understood, and more clearly delineated. CS is less than a century old.
- WolfeReader 2y agoSource control should be taught as a component of any "software engineering" course. Any class that teaches project management, testing, and delivery, and does NOT teach source control, is missing something of vital importance. (My university had exactly this issue.)
- Apreche 2y agoYep. 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 2y agoI 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 2y agoThe 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?
- qludes 2y agoYeah, you're right. I'm off by a few years. Early 2000s was when these Sharp personal assistants came out. And some students would have been exposed to Windows 98 or XP and sometimes IRC or ICQ but on average they didn't have any actual computing experience apart from maybe playing games or chatting. That was a bit before my time so they would have had to cope with actual UNIX-like CDE on Solaris until they figured out how to access the nicer Linux servers that had KDE. But in these days thin clients with 24" screens were actually pretty nice compared to what students actually owned. Even on Solaris with Mozilla and CDE. The actual teaching material didn't change that much though because the university essentially taught the same sh course with here's latex, here's man, here's how you install whatever you need to ~/bin since the late 1980ies. It didn't matter if a professer wanted to use C++ or Modula2 or Pascal or Java because every student got that crash course in how to actually use the faculty provided computung pools. First semester homework and midterm tests ensured that they were able to start their IDE or interpreter and knew how to compile their homework on the right architecture, how to search for documentation and how to actually use a keyboard to submit their math homework. The beauty of that approach was that it allowed the 10% or so who were really interested in learning more access to university resources while also ensuring that no math-cs double major graduates without at least a modest grasp of tools that were state of the art in Knuth's days.
- jordanpg 2y agoWhether CS grads know this or that tech is irrelevant. What matters is are they curious and how quickly they can self teach this or that tech. And besides, learning the basics of git should be an afterthought for someone being hired for a programming job!! Come on.* * Not gatekeeping here, I'm just trying to say that in the spectrum of tasks an entry-level programmer will need to get good at, git is a minor footnote. You can generally learn 99% of what you'll need to do in a short period of time, unless your team is doing exotic stuff, in which case they should stop doing that.
- btouellette 2y agoIf you are curious and able to self teach effectively I'm impressed if you get through an entire CS undergrad without picking up the basics of git
- WalterSear 2y agoWhether CS grads know how to use version control tells you how much actual CS they worked with while acquiring their degree.
- deleted 2y ago[deleted]
- mleo 2y agoEvery college student’s “free” time is different. Whether sports, work, clubs or drinking, people fill there time with what the have to do or interests them. I was lucky my work was mostly free time to further play and learn computers, OSs and software. I learned networking with PERL, Java in my free time, lots of Solaris and AIX. I didn’t spend any time on VCS, but this was back when RCS and SCCS were dominant.
- gmuslera 2y agoIt is more than just that. I used to recommend a lot the MIT's Missing Semester of your CS Education https://missing.csail.mit.edu/ https://missing.csail.mit.edu/ to people that is not familiar with some topics at work.
- WalterSear 2y agoIt's not whether they know it or not. It's whether they worked on CS sufficiently complex to need code versioning while acquiring their degree.
- AnotherGoodName 2y agoHere'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.
- deleted 2y ago[deleted]
- the_snooze 2y 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 2y 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.
- whitfieldsdad 2y agoThis 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 2y agoThe 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 2y agoI 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.
- xboxnolifes 2y agoI did not learn any git from my CS degree, so I'm not surprised at all. Hell, the source control used for the first part of my degree wasn't git, and I didn't graduate that long ago. I don't even really remember what prompted me to teach myself git, but everything I learned was from blog posts and stack overflow. CS degrees does not teach software engineering. They teach computer science. But also, do I think they should probably teach source control basics if the degree involves a significant amount of programming? Yes.
- blinded 2y agoI had teachers that wanted code assignments on cd rom. No joke, I graduated undergrad in 2014. I had 1 professor who used fossil - which was on outlier (I actually kinda like fossil still).
- TheLoafOfBread 2y agoI will rather work with somebody using Source Tree and clears his code before committing from unnecessary, irrelevant or outright wrong changes, than with somebody who knows 3 commands (git add ., git commit -m "some changes", git push) and repeats them without thinking the moment code on his side is "finished", thus committing also changes which are completely irrelevant to what such person was working on.
- time4pho 2y agoyes. so much this. many times unnecessary changes are getting pushed because people blindly run these commands. i always use SourceTree to check my changes before pushing.
- simonblack 2y ago"And the number of CS grads who don't even know basic MSDOS commands like ASSIGN is equally astounding." Such hubris in that original statement! As if Git is the be-all and end-all of all computer programs. Yes, Git is important. No, it's not the only version-control program in the Universe.
- AnishLaddha 2y agoi feel like this is being blown way out of proportion. learning git is never the bottleneck to becoming a software engineer, and it doesn't take longer than an hour to grasp the basics. CS majors should learn it just by messing around with projects, but I don't see why an otherwise great candidate couldn't learn it very quickly
- whitfieldsdad 2y agoThis is the nuance that people aren't able to understand anymore - something happened when the Internet came out, and we've never been the same. The OP was just surprised that people don't know git, and indicated that he wouldn't hire a junior engineer who didn't know git, but, there's very likely nuance to this, and I don't think that one person's personal preference necessarily needs to be discussed and debated extensively on Twitter, HackerNews, etc. In my opinion, git is a very popular tool, and lots, and lots of people use it - and it only takes 15-30 minutes to learn the basics - for this reason, I think that it is fair to be surprised that someone doesn't know it.
- noway421 2y agoCan a candidate be great if they haven't messed around with projects in a group setting?
- whitfieldsdad 2y agoObviously, yes. It's worth noting that the person who said that they'd only hire junior developers who know git isn't the President of the United States or anything, and can absolutely make their own hiring decisions. It's perfectly reasonable to make your own hiring decisions, IMO, and asking people to know git, or the fundamentals of version control seems totally fair, IMO. If people are willing to spend a few weeks solving leetcode problems, or answering mock interview questions, I feel like they could absolutely spend 15-30 minutes learning how to use git.
- hiAndrewQuinn 2y agoOn the other side of the spectrum, the standard entry point to a CS degree here in Finland is taking https://programming-23.mooc.fi/ https://programming-23.mooc.fi/ , which IIRC is entirely based around automated tests which run on your Git repo. A commit is an assignment turn-in, and you get a generous number of tries each time to get it right. But you're not getting around at least learning add, commit, and push. And yes, you do get course credit for this, although it is not 100% remote (you need to take your exams on-campus, though it can actually be any university here). I love it here.
- NautilusWave 2y agoCS has always been about Computer Science, not Computer Skills. Maybe Theo just doesn't know what it stands for.
- alper 2y agoMaybe people in CS should enjoy learning things about CS and not do the bare minimum?
- elmo_on_fire 2y agoI appreciate a CS grad that doesn't know basic Git but then has it mastered by EOD.