Applying for a Job? Better Know Your Git!
What you need to know about the popular SCM solution to get a great job.
Join the DZone community and get the full member experience.Join For Free
These days, source control management (SCM) is an absolute must-have on your resume/CV. And to be perfectly frank, it should not just be SVN or some other RCS-/CSV-based technology. While there are other fairly popular systems like Perforce, today, without a doubt, the most in-demand and relevant SCM is Git.
Argue all you want, but the vast majority of my clients who bring up the topic of source control insist on Git; otherwise, I am choosing Git on my own.
The Point of This Article
The reasons for choosing Git are myriad but are not the point of this article. Rather, I want to focus on an increasing trend I see in applicants to developer positions: The tendency to list Git as a skill but having no actual, practical experience with it, or even a working knowledge.
Now, while I understand that Git is quite a departure from the likes of SVN — one might even say it is a lot more complex and counter-intuitive, at least at first — the distributed nature of Git allows development teams to be extremely flexible and do some very powerful things. This can be a bit difficult to appreciate/understand if you're just a single developer, but all SCM technologies come into their own when working in teams. Couple that with the immutable nature of commits and it allows for some serious accountability, something the managers and higher-up appreciate.
The virtues of Git go on (and I encourage you to have a look at them). But of course unless you have actually worked at a job where Git was used, it can be difficult (but not impossible) to gain experience in using it.
What to Know
The good news is that with the increasing popularity of Git, there are resources everywhere from which to learn. Sure, using it on your own for a personal project is a great starting point, but let's face it: We're unlikely to use most of the features in Git save for the basic ones. Don't get me wrong, you still need the fundamentals, but a solid foundation requires more than just your cursory "add", "commit", "push", and "pull/fetch".
For example, while you might not be required to merge branches, you might still need to know how to create a pull request (PR) or merge request (MR). You will almost certainly need to know how to undo changes within a branch at various stages, so learning how to properly "reset" is important.
And then there are the accompanying, underlying concepts such as the "HEAD" of a branch; "fast-forwarding", and even understanding branching strategies.
For all of the reasons above and more, I emplore developers with little experience in Git to not just brush up on it but to become proficient in understanding and explaining how it can be used, especially in an interview. In fact, that alone can be enough to make or break an application: There are fewer, bigger, vampires of time than having to explain to a developer how to do something in Git, or, worse, fix something in it.
I will post some links to resources at the end of this article to aid in advancing your Git knowledge.
So, to recap, here are some areas in Git to become familiar with for your next (or even current) job:
Understand the basics: Be familiar with how to at least pull code down and commit new code.
Understand how Git actually works: Knowing how Git works under the hood as far as graphs go and how branches are tracked and merged can be vital to a quicker understanding of more advanced topics in Git.
Understand branching strategies: While not actually a part of Git technology, how your company actually sets up branches in a project will save a lot of time and headaches on everyone's part. There are several different strategies so try to focus on a few.
Understand morethan just the basics: Again, while you may not actually have to merge branches, being aware of some advanced commands can aid in your overall proficiency with Git. In addition--and more importantly--it will help being able to clean up your own messes when you make a mistake without having to go to a colleague to aid in sorting out said messes. That kind of self-reliance and dependency is invaluable.
(Many of the above sites also have advanced offerings of the Git courses/lessons. Also remember: Google is your friend, too!)
Opinions expressed by DZone contributors are their own.