Up until this past week, all my projects have been solo.
The idea of working with others is exciting and intimidating.
Last weekend was my first taste of coding with a partner. All things considered, I think it went really well, but it did open up a whole new reality in regards to work flow.
When programming with a team you have to take into account the factors that apply to really any discipline: differing ideas, strengths and skill-set, personality. These are factors that are important and challenging to maneuver effectively, but the true, new challenge for me has been learning the tools and technology needed to work together on a complex problem, in the same document, over the internet.
Thankfully, there are tools to help!
Git is a version control software that I have been learning to use throughout this program.
Git allows you to save the code you are writing so you do not lose your work. Unlike other software I have used in the past, Git keeps all of the committed or saved versions for continued access. The most recent version does not save over the previous ones.
Git lowers my anxiety level when jumping into a new aspect of my project. I know that I can always access a former version if need be.
This has been my experience with Git so far.
Git, however, offers even more in the context of programming as a team.
Git allows you to divide working sections of a project into branches. The main branch, well named, refers to the main branch the project lives on. Additional branches can be created off the main branch to create added, isolated work space. Branches allow for new features to be built and refined without impacting the main branch's code.
Once the purpose for the branch is realized, the code can be merged back into the main branch. Branching allows for multiple individuals to work on a project without interacting with another person’s code, and for new features to be created without breaking what currently exists.
Now, conflicts can arise when trying to merge two branches together. Any difference between the two branches have to be reconciled. Even something as small as deleting a blank line.
Connecting a line between working with others on a challenging, progressive project and thru-hiking is not a hard thing for me to visualize.
On all of my thru-hikes, I’ve always had at least one partner, my wife.
We make a great team and are usually on the same page. We can break camp without saying a word and resupply at a gas station like professionals, but like in any relationship, conflicts arise when our conflicting ideas about our hike or life in general try to merge together.
When I think of our partnership on the trail, I remember our joys and suffering. We’ve carried each other's gear, followed the other while they’ve limped along for miles and miles, and yelled for joy at reaching a goal. We’ve had all the things: high-highs and low-lows.
In this bootcamp, working on a team has benefited me in two obvious ways.
If I do not understand how my partner did something - I get the opportunity to have them explain it to me.
If I did something that my partner does not understand - I can prove to myself that I truly comprehend the principle by trying to help teach them.
I am excited to begin my capstone project for this course. Some things will go smoothly and, at times, I’m sure conflicts will arise. I’m eager and ready to take on this challenge and merge our team's ideas and skills to return a great end product for our client.