<commit_before>---
layout: essay
type: essay
draft: false
title: Managing More
date: 2016-09-12
labels:
  - git
  - configuration management
  - version control
---


# Real World Group Projects

Picture this, you are back in High School and you were assigned a group to do your final project of the year. This scenario will produce two types of emotions in a student; relief or distress. Most students will love the help but others will grovel at the thought of having to work with unreliable people. Today, there is Google Docs so everyone can work on one document at the same time from any computer. However, back then you would either have to go over to one of the group members house and work on it all together on one computer or e-mail different parts to one member and that member will manually input those parts into one document. 

Now try to imagine group projects for programming. There are hundreds of files for one software project so how do you manage all of them for one? 

A Software Developer must have skills called configuration management and version control. Mastering this skill requires for a programmer to be able to identify and track elements (files) in a repository (folders) so errors are clearly identified and solutions are easily found.


# Configuration Management and Version Control Technologies

## SVN vs. GIT

Programming software is the ultimate group project, so there are multiple methods to manage files in a clean and effective manner. 

<img class="ui centered big rounded image" src="../images/Git vs. Svn.png">

There is a configuration management technology called Subversion(SVN), which is very similar to Google Shared Drive, where users can share a folder with each other. For SVN, there is a center repository of files and everyone can get a copy of it and edit that copy and apply those changes to the central repository. The problem with SVN gets a little problematic when multiple developers are working on the same file, unlike Google Doc's multi-person typing technology. 

The most current popular configuration management system is Git. Git allows everyone to have their own repository and they can edit their files, then push those changes on all of the other repositories. There will not be any problems with people editing the same file. A visual representation of these technologies are below.


## Git and GitHub

 <img class= "ui small right floated rounded image" src="../images/git_logo.png">

Git is a local version control system that allows any type of project, not just for software development. Git keeps multiple versions of files, so if the newest version has an error, the previous version is retrievable. Many new programmers, like me, understand the problem of not being able to find a bug. Sometimes if I cannot find a bug I will be just restart the program from scratch. Using a version control system like Git will defintely prevent such devastating loss. Git also keeps tracks of roles, so company programmers can submit their work to their supervisors and be approved of the changes. I believe Git can make a work environment healthy and organized.

 <img class= "ui small right floated rounded image" src="../images/github.png">

While GitHub is a cloud service for git repositories. Almost, like a backup or a place to share projects publicly. GitHub works with Git; it still keeps all of the features of a company's projects. GitHub is great for students that have group projects, for freelance programmers to show their work, and for companies who decide to make their projects open source. No wonder GitHub is so popular! Personally, I think that GitHub is popular because Git introduced such a great configuration management and version control system. This system reduces stress, and produces effective productivity within a group of people.


# Finally!

Group projects can feel like actual group work. Individually, programmers can freely work on a task because they do not have worry about an implementation negatively affecting their current work. If their newer edition does not work, they can just revert their code to the previous one. This gives the option for programmers to challenge themselves and think outside of the box without fatal consequences. The individual contribution enhances the overall quality of the project. As a group, members can access all files and provide improvements. If you are a programmer, I hope I convinced you to [download Git](https://git-scm.com/downloads) or to [go to GitHub](https://github.com/) for your next group project.<commit_msg>Final Draft<commit_after>---
layout: essay
type: essay
draft: false
title: Managing More
date: 2016-09-12
labels:
  - git
  - configuration management
  - version control
---


# Real World Group Projects

Picture this, you are back in High School and you were assigned a group to do your final project of the year. This scenario will produce two types of emotions in a student; relief or distress. Most students will love the help but others will grovel at the thought of having to work with unreliable people. Today, there is Google Docs so everyone can work on one document at the same time from any computer. However, back then you would either have to go over to one of the group members house and work on it all together on one computer or e-mail different parts to one member and that member will manually input those parts into one document. 

Now try to imagine group projects for programming and software development. There are hundreds of files for one software project so how do you manage all of them? 

A Software Developer must have skills called configuration management and version control. Mastering these skills requires for a programmer to be able to identify and track elements (files) in a repository (folders) so errors are clearly identified and solutions are easily found.


# Configuration Management and Version Control Technologies

## SVN vs. GIT

Programming software is the ultimate group project, so there are multiple methods to manage files in a clean and effective manner. 

<img class="ui centered big rounded image" src="../images/Git vs. Svn.png">

There is a configuration management technology called Subversion(SVN). SVN is very similar to Google Shared Drive, where users can share a folder with anybody. For SVN, there is a center repository of files and everyone can get a copy of a file inside of it and edit that copy. However, SVN gets a little problematic when multiple developers are working on the same file, unlike Google Doc's multi-person typing technology. 

The most current popular configuration management and version control system is Git. Git allows everyone to have their own repository and they can edit their files, then push those changes on all of the other repositories. There will not be any problems with people editing the same file. Also, all versions of each file are saved, just like a history on a web browser.


## Difference between Git and GitHub

 <img class= "ui small right floated rounded image" src="../images/git_logo.png">

Git is a local software that can manage any type of project. Many new programmers, like me, understand the problem of not being able to find a bug in our program. Sometimes if I cannot find a bug, I will just restart the program from scratch. Using a version control system like Git will defintely prevent such devastating loss. Git also keeps tracks of roles, so company programmers can submit their work to their supervisors and be approved of the changes. I believe Git can make a work environment healthy and organized.

 <img class= "ui small right floated rounded image" src="../images/github.png">

While GitHub is a cloud service for git repositories. Almost like a backup or a place to share projects online publicly. GitHub works with Git; it still keeps all of the features of a company's projects. Also, GitHub is great for students that have group projects, for freelance programmers to show their work, and for companies who decide to make their projects open source. No wonder GitHub is so popular! Personally, I think that GitHub is popular because Git introduced such a great configuration management and version control system. This system reduces stress, and produces effective productivity within a group of people.


# Finally!

Group projects can feel like actual group work. Individually, programmers can freely work on a task because they do not have worry about an implementation negatively affecting their current work. If their newer edition does not work, they can just revert their code to the previous one. This gives the option for programmers to challenge themselves and think outside of the box without fatal consequences. The individual contribution enhances the overall quality of the project. As a group, members can access all files and provide improvements. A group that betters everyone is hard to develop, but with Git it is made easy. If you are a programmer, I hope I convinced you to [download Git](https://git-scm.com/downloads) or to [go to GitHub](https://github.com/) for your next group project.
{'fraction_non_alphanumeric': 0.03575345470497916, 'fraction_numerical': 0.001754770783066462, 'mean_word_length': 4.405453467694132, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 4, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 6, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5358162', 'n_tokens_mistral': 2022, 'n_tokens_neox': 1906, 'n_words': 1454}