As you delve deeper and deeper into software development, and writing code in general, it is nearly impossible to avoid some sort of reference to GitHub. You may be able to skirt around it for a little while, but eventually you are going to ask the same question that millions of other users have for years…What is GitHub?
If you are starting to wonder about GitHub and feel that you can’t ignore it anymore, then you have come to the right place. By the end of this post you will have a firm foundational grasp on what GitHub is and why it should be part of your journey into learning to write code.
What is GitHub?
GitHub is a website. Here, I will prove it to you. Click on the link below and see for yourself.
If you are continuing to read this and you didn’t click on the link above, I would strongly urge you to do it right now. It is going to be our visual aid. If you are on a device that would make it difficult to both read this post and see the GitHub website, I will show you what the homepage looks like here:
See. I told you! It’s a website. But for the sake of learning, let’s start to dig a little deeper. If you were to read the description at the top of the home page, you are going to see a very important sentence:
From open source to business, you can host and review code, manage projects, and build software alongside 28 million developers.
Take note of this quote. It will be the basis of this blog post to help you better understand what GitHub is and how it will help you grow in your journey to learn to write code.
You Can Host Code on GitHub
OK. The first thing that GitHub claims it can do is “host code”. What exactly does that mean?
In the world of computers and the internet, the word “host” typically means that you can either store information there, or you can actually run an application there. The most common occurrence of the word “host” you will see is when you are talking about a “web host”. In that case, you are running some sort of web application (or web site) that is physically on web servers owned by the web hosting company. One of the most popular web hosting companies is Bluehost. [Full Disclosure: I am a member of the Bluehost affiliate program. If you click on the provided link and sign up for service, I receive a commission at no cost to you.]
Don’t worry about the concept of web hosts at the moment as I will cover them in detail in later posts.
So what is GitHub as it pertains to a host? Well, it can host code. Your code.
This simply means that you can take code that you have written on your computer and store it on GitHub. Why would you do this? For many reasons. Here are some of the more important ones:
Reason 1: Accessibilty
One of my favorite reasons to use GitHub is that it is accessible from anywhere you have an internet connection. This is important to me because it allows me to be able to write and view code from anywhere that I am. A typical workflow could look something like this:
I write some code at home on my laptop. I upload that code to GitHub. At any point during the day if I think of something that I want to change or update with that code, I don’t need to be at my home laptop to do it. I could download and edit that code from work, a friend’s house, or even just a different computer at home if I am feeling especially lazy. Wherever I am, as long as I have a computer and an internet connection, I can work on that code.
Reason 2: Peace of Mind
There have been far too many times in my life when I have been working on something on a computer (whether it is code related or not) and I had a hardware issue and I lost all of my work. As someone that is starting to write code and build up a collection of applications, it would be absolutely devastating if something happened to your computer and you lost everything. You would have to start all over.
By storing your code in GitHub, you are creating a backup of all of your hard work. This way, if something bad were to happen to your computer and you had to reinstall everything (or get a new computer), at least the code you have been writing is safe. So when you are finished fixing your computer, you can simply head over to GitHub and retrieve all your code to continue learning.
Reason 3: Version Control
If you are just getting started writing code, this may not be as evident to you but hear me out. The first part of the name GitHub is Git. And this is for a reason. Git is what is know as a Version Control System (VCS) that is the foundation of everything you do in GitHub. Don’t worry too much about Git just yet, we’ll get there. For now, just keep in mind the VCS part.
Using GitHub (along with Git) you can make incremental changes to your code, which is a highly recommended part of the learning to code process. These incremental changes can also be stored inside of GitHub. Not only are these changes saved, but they are also tracked as part of the lifecycle of your code. Which means that at any point in time, you can look at the current state of your code, but you can also look at all the individual changes you have made over time.
Being able to walk through all the changes to an application you have made is pretty cool. But what happens if you made a mistake along the way and want to remove it. Or, better yet, you want to go back to a certain point in your code’s lifecycle where everything was working fine? You can do these types of changes as well. In these cases you are reverting changes back to a known state.
You Can Review Code on GitHub
Hosting code on GitHub is one of my favorite features. In addition to being able to host code on GitHub, you can review code on GitHub.
In your early stages of learning to code, you should just be focusing on the basics. Find some sort of application to write, learn a bit of a programming language, and write your own application. And then rinse and repeat. This should be something that you do a few times using a language or two to really start to get a feel for what the process of writing code is like. Focus on the enjoyment factor and make something useful for yourself.
After you have written a few applications and are starting to get comfortable with a language, you really need to start making sure that you are doing things the right way.
You mean there’s A right way?
No. There really isn’t ONE right way to write code. But there are definitely ways to make sure that the logic you are writing is correct and that the code runs efficiently. These are not concerns early in the learning process (well maybe the running correctly part is), but they are important as you progress.
So how do you make sure your code is running correctly and efficiently?
Well, there are a number of ways, but when it comes to GitHub, one of the best ways is to have someone review your code. Using a feature of GitHub known as a Pull Request (PR), you can make changes to code and request that others review it before it actually becomes part of the main source code in GitHub.
During the PR process, the reviewers have the opportunity to look at your code, download it and test it if they want, and comment on it and offer suggestions. One of the absolute best ways to learn to code and to get better is through repetition and feedback. GitHub definitely has your back when it comes to the feedback part.
Feedback Is Scary
Yes, you are absolutely right. Feedback can be scary. Asking what amounts to be a total stranger to have a look at your code and then give you comments on it? I supposed I would rather have my wisdom teeth removed. But there are a couple of ways that you can ease the pain as you start to get feedback from other people.
Ask Someone You Know
One of the easiest ways to start to get over the fact that it can be hard to ask for feedback is to start by asking someone you already know. Ask a friend, a family member, a coworker or a mentor. Ask any and all of these. At least at that point you already know the person and will feel more comfortable having them give you some feedback.
What if no one else you know is in software?
Get them into it as well!
This would be a great time to bring someone else into learning to write code as well. Invite someone on this journey with you and work together with that person. Learning something new can be so much more enjoyable when you can share the journey with someone else. Think about a close friend, a family member, or someone you see or talk to on a regular basis and talk to them about learning to code WITH you!
If all else fails and you have no where else to turn to get feedback on your code as you are getting started, ask me. I’d be happy to help as much as I possibly can. I can’t guarantee that I will be able to help everyone with every code review in every different programming language. But I can try to help as much as possible. And if I can’t help, I might know something that can.
So, if you are hard up on finding someone to help you with reviewing your code and giving you some feedback, head over to the contact page and send me a message. From there we can try to work something out to help you continue to improve.
You Can Manage Projects
Manage projects? Why would I want to manage projects if I’m just getting started writing code or just working on some side projects of my own?
From a GitHub perspective, managing projects can mean different things to different people. Sometimes “projects” are large enterprise applications that are used by millions of people all over the world. Other times, “projects” can mean something as simple as the first application you ever write that you are making for yourself. “Projects” can also fall anywhere in between. The point is that the size of the “project” doesn’t really matter.
When first starting out with GitHub, I highly suggest that you start to familiarize yourself with the functionality. I will create more posts on the many aspects of GitHub later on. But for now, as far as projects are concerned, the best thing to understand is that “Issues” are your friend.
In GitHub, an issue is not necessarily a problem. An issue can be any number of things ranging from problems, to slight changes you want to make, to large functionality changes.
I like to use issues to track ideas that I have for changes that I want to make in my code.
For example, in a previous post I wrote on learning to code for beginners, I mentioned breaking up an idea for an application into small chunks. When you are writing your application, a nice place to store those chunks so they are easily accessible are in issues on GitHub. These issues have a status so you can track what you are currently working on and can be closed out when you are done. AND, when you close them they can be associated with a certain change that you just saved.
You can track which changes you made to complete an issue! How cool is that?!
For more information on issues and how to work with them in GitHub, check out the documentation page here.
You Can Collaborate
The final important part of the GitHub quote at the beginning of this post has to do with collaboration. In writing code, just like many areas of life, collaboration is key.
Often times when you are starting out learning to write code, it is an individual journey. You are learning about languages and building some applications to see just how much you might enjoy writing code. Honestly, it is a very exciting time. But, to be honest, very rarely in the “real-world” of writing code are projects started and finished by just one person. As my high school driver’s education teacher once said…”Just because you can drive a car with your knees, doesn’t mean it’s to be done.”
The point is pretty simple. Just like many things in life, the journey is much more enjoyable when it is done with someone else. Just as I mentioned in the previous section, it’s good to get feedback from other people on your code. It’s also a good idea to work with someone else.
You learn from other people and get better.
Working with others, even on simple projects, can help you get better at writing code. It gives you an opportunity to see how other people write code. You get a chance to ask others why they did something that way? You can have conversations on the best way to solve a problem. AND you get a chance to improve your communication skills. All of these are incredibly important in life AND in code.
On A Personal Note
Collaboration is probably one of my favorite parts about being a professional software developer. It gives me an opportunity to learn new things and get better at what I do. And learning new things has been a focal point in my career.
Over the years, I have interviewed with many different companies and have become quite selective in where I work. The most telling part of the interviews for me has become the in person interview.
If you have never done an in person interview for a software job, it typically goes like this.
When you get passed a phone screen or two and maybe did well on a coding exercise that the company asked you to do, they will bring you into the office for an interview. The in office interview typically takes a few hours (or up to a couple of days in some cases), and you spend your time meeting several people that work there that would ultimately become your peers. This is my favorite part of the interview because I get a chance to “interview” them.
My favorite interviews were the ones where I sat and talked about code and technology with people that were very obviously better at writing code than I was. I didn’t figure that out because they told me. I learned that through talking with them and working on a code problem of some sort.
At this point, my decision to take a job has to do with 2 criteria:
- Would I be the smartest one in the room?
- How interactive are the employees
Why do I care if I’m the smartest one in the room? I DON’T want to be. I want to learn. So I want to be surrounded by at least a couple of people that I can learn from. And the only way that I can do that is if they are good communicators and interactive with me.
And to me. That’s what defines a good place to work.
What is GitHub? It’s a website that allows you to host and review your code. You can used it to manage software projects of any size and shape. And it allows you to work together with small and large teams. This helps you to create better software and to learn different, and sometimes better, ways to write code.
There you have it. No technical jargon or mumbo-jumbo. Just a simple and, hopefully, clear explanation as to what GitHub is and how it can help you to progress into the next stages of your journey into writing code.
Before you go, please leave a comment below and let me know what kinds of projects you are using GitHub for. And, if you are so inclined, leave a link to your repo so I can see what you are working on. I love reading other people’s code and would love to help and support you in anyway that I can.
Convinced that GitHub is important? Check out my post on Getting Started With GitHub.