The Beginning of the Beginning

"What did you learn at school today?"

January 17th, 2015 : 4 minutes

I'm 26 years old and back in school, only this time, it's because I really want to be here and it's not really school. Week #1 at Dev Bootcamp feels like lots of baby steps and I appreciate that. I've spent a lot of time thinking about motivation, time management, and productivity and as a result, learning a ton about what motivates me, how I manage my time when I have absolutely no schedule, and what it takes for me to be and ultimately *feel* productive.

What else did I (re-)learn this week? I really, REALLY love taking notes and reflecting on what I've just learned. And now it's mandatory? Woo-ha. Let's go.

VERSION CONTROL: What is it and what are the benefits?

Version control systems are used to track, organize, and manage projects. Whether it is writing a book or a software development project, you need to be able to keep track of what changes you've made and when you made it. Version control also allows you to go back in time to look at an earlier version if your more recent versions are going in the wrong direction.

Version control is even more crucial when there are multiple people working on the same project together (aka you + lots of friends). Keeping track of all of the changes that are being made, when they made them, and *who* made them makes having numerous collaborators possible. I like it imagine everyone in my family cooking Thanksgiving dinner together. If my dad puts heavy cream in the mashed potatoes, now my sister who is lactose intolerant can't eat it. Wouldn't it be great if we could just go back to a previous version of the mashed potatoes (minus the dairy) and just use that? VWell, version control is kind of like that.

GIT: What is it and how does it help me keep track of all my work?

Git is a word used in Britain to describe an unpleasant person. Jk--my joke stinks.

Git is something you install onto your local computer to help you track changes (yup, it's a version control system). You might be writing a manuscript, photoshopping an image, or building a web app, but you will work on it over and over, and will want to track the many versions and edits you make. Imagine that you are writing a book. You've written 10 chapters and you are now deciding to re-write something in Chapter #6. When you want to "save" this change, git will make note that only Chapter #6 is different from the previous version and keep all of the other chapters the same. And git does all of this on your local computer so you don't need any other computer or anyone else to do this.

GITHUB: Why should I use this to store my code?

Oh, because it's prettier this way and now you can share it with other people! Github was built on top of git. It is the nice, pretty looking website that allows multiple people (with git on their computers) to collaborate on a project together. I just realized...Github for cooking Thanksgiving dinner would basically mean each person in your family can cook their Thanksgiving contribution from anywhere in the world, at any time. (Because having 6 chefs in the same kitchen is a nightmare.) But I digress...

Github allows your team to work at different times and in different places, keeping track of the changes that are being made and giving people control over how these changes are being incorporated into the overall project. This means that you can give (push) a version that you've just completed and receive (pull) a version that your collaborator just finished up, and you don't need to be sitting in the same room using the same computer.