Better Developer

Corey Prak

Practice Version Control

Version Control? Git?

If a company has code that is used to provide a service to paying customers, the management system of version control is most likely utilized. Git was originally authored by none other than the principle creator of Linux, Linus Torvalds, and it is the most ubiquitous “VC” tool out there.

If you’re applying for a job writing code and you don’t know Git, or rather, how to use an employers’ preferred version control system, it’s not hard to get started learning on your own. Alternatively, you may have the ability to learn on the job, which is how I learned.

Version Control is Life

Utilizing Git in personal projects is the best way to get practice. I think that it can improve your development and learning workflow drastically once you get the hang of how it can be used in certain situations.

Now, you may be saying something like:

“But Corey, no tutorial we ever followed about ever went into detail about it before…”

Understand that tutorials that you’ve been following to build a “todo app” or anything else simple, even more comprehensive things, does not mention Git because their aim is NOT to teach you about version control. It is to teach you that specific piece of technology.

The world of Professional Software Development uses Version Control to protect, organize, and streamline manipulation of the asset that makes them money; the code!

My Opinions on Version Control

Familiarity with a version control tool is someting you will definitely be exposed to in your career, one way or another. I recommend that effort incorporating it into your projects/tutorials early on is great, and while it may seem to hinder productivity at first, getting past the learning curve can be very rewarding.

This is my opinion, but being able to say that you’re competent with Git on a resume, from someone with a non development background, says so much more than, ‘I know how to do this thing’. It conveys competency with a tool that’s widely used and it shows that there’s a bit of an understanding of Software Development in practice.

If you’re just starting out and learning how to code or getting into the basics of HTML, CSS, Javascript, or whatever else, you should invest as much focus in those things as you can to remain consisent. However, I will still recommend that you incorporate version control as part of your routine.

Regard version control as a skill that is essential to your capabilities; as useful a tool as the languages you may learn. Try not view it as a supplement to your learning or something that is ‘second rate’. A few people I’ve worked with seem to see it this way because it isn’t as ‘direct’ of a Software Developer skill as writing code.

I had trouble starting out too. Spending hours learning the basics when I could have been programming? Of course I’d push Git to the side in favor of writing lines of code that I could take pictures of and post on social media.

We have a discord channel, reach out if you need help getting started. The community is here for ya.

I had 0 knowledge of how to use Git until I was an intern at a startup a few years ago. While I was in college/university, I did not learn fundamentals of industry grade software engineering like version control, testing, deployment, etc. I was learning about the field of Computer Science, which was pretty much the point of my degree, not necessarily being able to get paid writing code and know tools.

How cool is that? You’re getting to know a skill in “the real world” which isn’t usuallly included in expensive, higher education Computer Science courses.

I was fortunate; my team was kind enough to teach me the ropes. I created a Github account and practiced using it as much as possible when I was writing side projects or completing tutorials.

The uploads I made during my investment of time learning advertised my activity and passion and served as great portfolio material. Much, much more on this later.

I use Git every single day of my career. It is literally the only way I prefer to manipulate code, files, etc. Before, I used to copy and paste multiple files and rename them something arbitrary or weird. With Git, you can disregard the “duplicate but slightly different” files in favor of organizing code in different versions - with text summaries too for context!

Get Started!

Start utilizing Git together with your learning. It’ll give you a huge step forward in your marketability and productivity.

No more saving code files like ‘main.go.backup10’ or ‘main.go.backup1-before-line22-change’, or even copying whole directories! I did all of the above before I used Git.

Instead, you can make updates to your code in nice and compartmentalized ‘commits’ as you need to and have a history of its changes. This history also allows you to ‘rollback’ to previous versions of your code. Check out the commit log for one of my projects:

example of git log

From commits, you’ll be able to: - track all changes to code - advertise your activity (useful for employers to review passion/activity/consistency) - revert to different version of code at anytime, even if it’s just a single file

Disclaimer: You’ll find that the power of Git is vast and deep. While it can do some pretty amazing things, basic usable knowledge is good enough for industry grade competency.

Resources

Be able to create a respository and make commits. If you’re using Github, “push”/upload your project.

Check out this really cool, web based interactive learning tool for Git.

Here’s a free book by the official Git “authorities” that you can follow.

Github is a popular hosting service that is built on top of Git. In my opinion, Github is the easiest way to get started in not only learning Git, but marketing yourself as a Software Developer, building a portfolio, getting started with contributing to open source projects, etc.

Note: Microsoft recently bought Github. Also, there are alternatives to Github, just Google them and you’ll find quite a few.

Github’s Resources to learning Git includes cheat sheets, interactive tutorials, and detailed blog posts.

Git-it is an interactive tutorial to using Git in a command line setting through challenges, which is included as a resource in the above link.

There is a Github application that you can download to manipilate your projects/repositories in the same way you would when using Git from the command line. Checkout Github Desktop here

While I would prefer that Git be learned from the command line, in the end I want you to start using it in however way is going to get you to actually start.

There is an “unofficially official” resource of how code is organized and changed via git that many companies adopt, called Gitflow. I haven’t worked for a company that follows the workflow exactly, but the core of it has been great. A bit too complicated for now so don’t worry about it. Just thought I’d make a note of it now.

A Little More Advice

If you don’t have an idea or tutorial to start with, I always recommend a simple project/repository. Create one that tracks your progress, keeps your notes, a list of useful links, a journal, whatever. Just get started using Git.

You can seriously start a repository or project on anything. Check out this article I read almost 5 years ago in which a Senior Systems Engineer invited everyone to his wedding via Github

When I personally coach self taught Software Developers, achieving familiarity with Git via Github and creating a repository that can be updated simply and consistently is the core of my curriculum. Right after I help them to find out where to start.