I’ve worked with some twenty-odd interns over the last few years at MERL, all of them graduate students at top electrical engineering and computer science departments from around the world. I’ve also interviewed many more job candidates for our research lab. One fact that has continually amazed me is what a tiny fraction of them have had any previous experience using version control (also called “source code management”) systems.
Version control lets you save each version of a software project as you build it up. Because you know that you can always back up to a previous working version, you are much more confident in writing new code. All professional software developers use version control on every project they work on; working without it is sometimes compared to trying to write a novel with a word-processor that doesn’t have a delete key.
If you’re getting started with version control, I recommend that you use Subversion, (also known as “svn”) which has several fundamental improvements over the older CVS system. A free book explaining the system comes with it, but I also recommend “Pragmatic Version Control Using Subversion”, by Mike Mason.
If you’re a budding programmer or a graduate student in an EECS department, think of it this way–not only will using version control help you write better software, but it will help you get a job if you ever want to go into industry. I doubt we’re the only ones who routinely ask candidates whether they’ve used version control to help assess their software development skills. [And if it crossed your mind, you can’t fake your way through this; if you say that you’ve used it, you’ll get follow-ups.]
Tags: source control management, subversion, version control
August 9, 2007 at 6:30 pm |
“One fact that has continually amazed me is what a tiny fraction of them have had any previous experience using version control ”
As an undergraduate I can tell you from experience that there are virtually no classes that expect you to use this tool. Most of the courses are theoretical, and when we do take a systems course it isn’t until (usually) senior year where we really have a use for such tools (in courses like an Operating Systems or Networks) when we are partnered up.
August 26, 2007 at 5:41 pm |
[…] in Python Using doctest Along with using version control, another absolute key to developing reliable software is to systematically test your code, as you […]