10 ms·
> The other thing I encountered for the first time at IBM was version control (CVS, unfortunately). Looking back, I find it a bit surprising that not only did I
by gravypod 10y ago
> The other thing I encountered for the first time at IBM was version control (CVS, unfortunately). Looking back, I find it a bit surprising that not only did I never use version control in any of my classes, but I’d never met any other students who were using version control. My IBM internship was between undergrad and grad school, so I managed to get a B.S. degree without ever using or seeing anyone use version control.
I love this bit. This is extremely true even today. Most students at my university, and all of my university's classes, do not use or understand the benefits of a VCS systems. This is crazy on a different level. I hate to say this but it is in fact 2016 and it should not be a question that git or something should be used on every project no matter how small.
- baldfat 10y agoAlso all the time we hear projects lost months / years of code due to a lost laptop. Version control gives you VERSION CONTROL and a backup.
- ng12 10y agoI disagree, except maybe in a class specifically focused on real-world software engineering. Teaching somebody to use git takes an afternoon, teaching somebody to understand programming and computation takes years.
- Nursie 10y agoDevelopment process and software engineering should be part of any good course. At my university we had basic, ffirst year courses covering some practical coding, shell programming and various other sorts of usefuk stuff. I didn't appreciate why version control was so important until later, but at least I knew what it was. Now I consider a department with either no real vcs strategy, or an outdated, cumbersome one to be a huge red flag.
- Joof 10y agoHow would people merge code in a large codebase? Copy / Paste?
- palunon 10y agoI've seen disk shares and databases saying who is editing what (updated manually) or file ownership
- Nursie 10y agoshudder One place I worked used source control, kinda. They had an old system, sccs, and they used to pull together patchsets into zip files, name the zip after the (unique) bug number it addressed and put the zip into the vcs. Here was then a lotus notes database that recorded what the fix was for, what version it applied to, other pre-requisite fixes before this patch... So painful. The graduate software engineers they took on actually developed fear and nervousness of vcs and tried to avoid it as much as possible. That was back in about 2002...
- jk563 10y agoThis is exactly the kind of class I believe should be available to everyone studying software engineering (or similar). Version control is just one of many technologies and skills that most people I know didn't see until after University.
- deleted 10y ago[deleted]
- empath75 10y agoIf it takes an afternoon, no reason not to start early.
- gravypod 10y agoGit is not a skill, it is a habit. Anyone in computer science should have developed this habit. This is for many reasons. Version control is not only about controlling versions. - It's not about saving files, it's about understanding group work flows. Every text project should be in a git repo. If it's code or not it doesn't matter. You can see what things were written for, who wrote them, and even more. - It's a method to catch cheating. If someone submits one commit called "Working" or something and has no history of the code/project it's likely they are cheating. - It's decentralized backups and and offline workflow (for git) - It's a method to collect and aggregate work. Setup a gitlabs/gitbucket for the class and make every student keep their projects up there. The teacher has a centralized and nice looking place to find the code and it doesn't make the students zip up or require them to do anything. Their work is shared by nature. - It exposes you to what you are going to be using every day for the rest of your life as a CS major.
- ng12 10y agoIt's not a question of how useful VCS is. It's a question about what the role of universities is. In the US/Canada college degrees are generally not directly training you for a career -- that's what internships are for. My position is that this is the right approach. I will have a lifetime to perfect my git skills, but I only had four years to learn about programming language semantics from a recognized expert in the field.
- wolf550e 10y agoHopefully your CS degree made you write code and submit code for evaluation. Asking you to write code and not teaching you how to use version control is wasting your time fixing problems with your code that are easily solved when you have version control. Being taught how to use version control leaves you more time to learn about programming language semantics. Also, a university that gives CS degrees to people who cannot actually work as programmers is doing a disservice to their graduates, even if the university intends for everyone to continue with post graduate studies and go into academia. At the very least, your doctoral advisor will need you to write some code for them, and you better be able to do it.
- 10y ago
- morgante 10y agoExactly. Just stick it into CS 101 (give it an afternoon), and then treat it like a prerequisite. Require that all students use VCS for projects in all other courses. It's really not hard. Even for most of my non-CS classes I maintained a git repo just for notes. Even if you set aside the benefit of learning and building a useful real-world skill, mandating git usage will likely save almost every student from a disaster at some point during their studies.
- ZeroGravitas 10y agoSome of those years of teaching might be less stressful and more productive if the student had appropriate tools and skills. Version control can act like a safety net that lets you try things and explore with more reassurance that you won't utterly trash your progress so far.
- rasjani 10y agoYou can give few neat basic commands of basic git usage but many people just nope out after git add -A . and never learn how to actually use it. It's god awful to actually realize that your peers are not capable or willing to do more.
- agumonkey 10y agoSimilarly my jaw dropped when people in 5th years were amazed at Eclipse's debugger. They never used one before.
- gravypod 10y agoI'm a TA at my university. We teach python in the intro course and from what I can tell my boss is similarly displeased with this reality. We are currently trying to replace IDLE with some other IDE in our curriculum. I've pestered my boss to require PyCharm or a similar IDE but he says it is likely too complicated for beginner programmers. While I respect their opinion I feel that pushing people into a difficult environment immediately will better their develop their confidence for future situations like this. It's all to often that I encounter fellow students who are "afraid" to attempt to use tools, algorithms, language features, etc because they haven't been trained in their usage. As someone who taught myself to program that's pure crazy talk.
- initram 10y agoThis is so true and so awful. I ran into the same thing. I had used a debugger and couldn't believe people had resistance to it when it was suggested by our TA. They were like, "Nah, I'll just 'printf' everything." And then the debugger they tried to get us to use was the god-awful command line version of gdb. I seriously think that turned several people off from ever using a debugger again because it was so bad.
- efaref 10y agoIt was certainly true when I was at university. I encountered CVS through a friend (which was sadly the best free VCS at the time), but pretty much nobody else used VCS. A few students worked out themselves that they needed something like that, and ended up with the chaotic system of renaming their files with a version number at the end. It's sad that git (or equivalents) doesn't feature more prominently these day. It's as important a tool as compilers, debuggers and editors (although I don't remember being taught how to use them properly, either).
- wvenable 10y ago> It's sad that git (or equivalents) doesn't feature more prominently these day. I think it does. I was taught version control in University (CVS era but we used SourceUnsafe) but only for one class. These days all new grads I've interviewed have Github profiles and are required to use Github for all projects (especially group projects).
- efaref 10y agoWell that's encouraging.
- Kluny 10y agoI am a graduate of a diploma program at a small Canadian community college. Version control was a core part of our curriculum. Woot.
- AdmiralAsshat 10y agoI remember taking a few C++ classes in high school. It would have helped if our teacher had spent even a few minutes explaining what version control is. Their instructions never went beyond "You should make sure you save your work periodically." That brilliant piece of advice immediately yielded the following problems for us: 1) Sometimes after compiling under VisualStudio we would return to look at our source code and see that it had been replaced with Assembly. Teacher's response? "I guess you'll have to write it again." 2) Saving periodically to a single file is about as useful as not saving at all when you have borked your program somehow. Now you get to spend the next few hours commenting out random lines and inserting `cout<<"Here"` lines into the code to see how far along it got. We in the class eventually decided that the "safest" way to do it was to continually save the files under new names in order to create a poor man's VCS. But that in itself was difficult to remember after more than a few days of working on it, as you'd have to remember which version you wanted to work on: assignment.cpp, Copy of assignment.cpp, assignment.bkup.cpp, assignment(Last version that worked).cpp, etc. I would be appalled these days if CS classes don't spend at least a single lecture discussing how to use Git.
- 0xcafecensored 10y agoI disagree. VCS use in an early stage of a project can lead to less elegant and coherent systems, because you treat everything as a series of patches from day 1. The greatest works of humanity were written without a VCS (novels, operas). Using a VCS is only mandatory for multi-person projects.
- swsieber 10y agoI'd say then - don't consciously worry about it. But it'd be great to set something up that auto-commits your code every X minutes or X character changes.
- retro64 10y agoThe greatest works of humanity were written without a VCS (novels, operas). Using a VCS is only mandatory for multi-person projects. Code is different. There are many times that I have been developing and I do something to my code that causes mystery behavior, and I don't catch it until perhaps days later. Being able to walk backward in time and see when the problem first occurred is invaluable. I used to really like using Visual Source Safe. It was so easy to set up and integrated directly with Visual Studio, there was no excuse not to have a VCS. Too bad it had a reputation for garbling itself (something I never had happen as a single dev).
- hdctambien 10y agoWhen you are teaching students how to code everything they do causes mystery behavior to them.
- jschwartzi 10y agoThis is true, but being able to ask the computer what changed is much more powerful than trying to remember what you did last night and how that's different from the version you had yesterday morning.
- hdctambien 10y ago
- henrik_w 10y agoLots of things surprised me when I first started working as a developer after university, including version control. For me, he biggest surprises were: - programming is a team effort - writing (non-code) is important - software is never done - few clever algorithms used in day-to-day work - the complexity comes from aggregation of many simple things, not one complicated thing https://henrikwarne.com/2012/08/22/top-5-surprises-when-starting-out-as-a-software-developer/ https://henrikwarne.com/2012/08/22/top-5-surprises-when-star...
- gravypod 10y agoWhat I've never seen shown well in a class is how to maintain software, well, over time. That's something that nothing has tackled. I've got a few ideas for how a class like that should be run, but no way to implement them. It's also important to teach students how not to prematurely optimize, how to find places to optimize, how to use abstraction, and a lot of other things that just are kind of shown and glossed over.
- douche 10y agoIs there really a way to teach this other than through the school of hard knocks? I'm really don't know, I feel like I've just gotten better at it as time goes on and experience accrues.
- amelius 10y ago> It's also important to teach students how not to prematurely optimize Except if you need a certain level of performance. It would be silly to write a million lines of code to find out that you could never reach the level of performance that was actually required. But in general you are right. I'd like to add that perhaps the most difficult aspect of software engineering is a situation in which specs change all the time. This happens a lot during prototyping, and afterwards, when a prototype has been promoted to a product.
- khedoros 10y agoIf you need to maintain a certain level of performance, and the system has early indications that you won't be able to reach that by continuing with the current implementation, then that's hardly "premature" optimization. When people use that phrase, they're usually talking about the nit-picking, obfuscation-inducing stuff that'll get you a 3% increase in speed, that you'd generally do at the end of the development cycle.
- mathattack 10y agoSame thing with me. I graduated without ever seeing version control. Then again, I recall a professor responding to "How do you debug?" with "I don't need to debug. I mathematically prove me code first, and then just write it once."
- gravypod 10y agoI find that to be a worse problem with CS: the blind coupling with mathematics in academia.
- faster 10y agoIn 1985 I bought PVCS for my personal projects. It was the second software package I paid for; BRIEF (editor) was the first. One of my CS profs bought a copy of PVCS shortly after I showed him my workflow, and everyone else thought I was crazy for spending money on something so useless.
- austinl 10y agoThings are slowly changing, but it's still heavily dependent on the university. I graduated in 2015, and we're now offering freshmen a "tooling class", which introduces students to some popular workflows. The curriculum is changing pretty frequently, but git is covered in-depth, along with keeping code on GitHub, pull-requests, etc. Other VCS like svn are discussed briefly. The class also goes over popular IDEs and editors (vim, emacs, sublime...) The class isn't led by a professor, but by a group of older students that have encountered these things in internships. Maybe that's what makes the difference?
- mettamage 10y agoDon't you learn these kind of things from other students? That's how I learned it. They didn't help me. It was more like: I'm using Git for my side project. After that I did as well.
- cagataygurturk 10y agoWhat you say is like you are surprised because there were no smartphones 15 years ago. For me it is also unbelievable working without source control system but just 10-15 years ago nobody but large companies cared about it. Time changes and flies...
- Nursie 10y ago16 years ago I was at a SME doing it badly, but it was definitely on the map. Source control in various forms has been around for quite a while.
- usea 10y agoMy university has several required CS classes where students must use some VCS (an SVN server is provided), as part of their grade. They're nominally software engineering classes, but really they're about finishing a project in a group setting, usually with a client that is not part of the class. But my school is also less science-oriented than many.
- hdctambien 10y agoI'd wager that most of the students you went to school with didn't self teach themselves programming before they went to University and probably didn't have a Computer Science class in high school. It is difficult to understand the usefulness of a VCS when the longest project you have worked on amounted to 5 lines of code and you can't produce a fizzbuzz program, let alone understand the difference between a class and an object. If you were self taught, or have been away from the newbies for too long, you don't always remember what it was like when everything was new. Wrapping your head around how to construct a program that does what you want it to do (or even figuring out what you want a program to do in the first place) is a difficult hurdle to jump. The more extra hurdles you throw in front of them (git, debuggers, and even the compile step) make it harder. The earlier you require those hurdles to be jumped, the earlier you will filter out students. I believe most people can wrap their head around computational thinking and computer science and I would hate to lose them because of the tools. You don't need a VCS to understand classes & objects. You don't need a VCS to understand Big-O, you don't need a VCS to understand Trees or Graphs or Maps or Stacks or Queues. You don't need a VCS to understand Computer Science. And once you know what a Tree is... then I can explain to you how git works.
- justinlardinois 10y agoI once chatted with a professor whose class I had already taken, and he told me that for the current iteration of the class they were using git as a submission system for programming assignments. Apparently more than half of the students failed the first assignment because they couldn't figure out git basics.
- gravypod 10y agoWas it not taught in class? If it's not taught in class it's unfair to the students.
- csorrell 10y agoPersonally, I think it would be a more valuable learning experience for the students if git basics were intentionally not taught in a class but still required. As a professional developer, you're going to have to figure out how to do whatever it is you don't already know how to do all the time. For those that haven't already cultivated this skill, university should be a place that pushes you to learn that lesson.
- justinlardinois 10y agoI believe it was taught in class. I could be wrong though, it's not like I ever looked at the lecture slides or anything.
- shermanyo 10y agoHe's just lucky his team used CVS, and not CMVC... :S I swear I used to have a flowchart I'd blindly follow, and god help me if there was a conflict record :/
- ChoHag 10y agoThat's because we hire computer scientists when what we want is developers. Addendum: The end result of this confusing mixture of market forces is a fleet of workers unskilled at either.