On The Importance of Version Control

At one point in my first few months at IBM (about 4 years ago) a few other new hires and I were tasked by a seller with taking hundreds of forms submitted via email and formatting them into an excel spreadsheet. Four of us spent the better part of an afternoon mindlessly copying and pasting before I told everyone to stop.

I didn’t know how to program at the time, but I knew there was a better way. Over that weekend I looked up a ton of java and somehow hacked together a program that would read through a text file, look for particular headers in the emails, and insert them into an excel spreadsheet. It saved us countless hours of work and all was well.
 
Then the from that produced the emails changed and my program didn’t work anymore. :(

I went to change it and had no idea what any of my own code meant. With lots of struggling and luck I got it working again… and then the form started changing a lot. :’(

Now on any given day we would get a few hundred emails that may or may not have any number of fields. I spent another weekend wrestling will this logic puzzle before putting in some (very clever) logic to determine what was a field and what was an entry in that field. Finally all was well again and this time nothing could go wrong.

And then someone realized that maybe part of our sales cycle shouldn’t depend on a hacked together java program written by someone with no coding background.

So a professional developer was brought in and they asked me to send him my code so he could clean it up….

Not only did I have to figure out where everything was saved but then I had to figure out what the latest copy was (my files had really unhelpful names like “text-to-csv-final-final-for-real” or “text-to-csv-SLEDGEHAMMERv2”). Even then I still had no idea what any of the code did. The developer couldn’t figure it out either and when we sat down together and still couldn’t make heads or tails out of it he just decided to write a program from scratch .
 
Later, as a product manager, I would use GitHub a lot to create, prioritize, and assign stories and epics. It was instrumental in keeping everyone on a large distributed team on the same page about who was doing what when and how long it would probably take them to finish (hooray for sizing and velocity tracking!).

I never touched any of the actual code and certainly never “forked”, “cloned”, or “pushed” anything. But I have a huge appreciation for what a pivotal role it must have played in our developers ability to avoid all the pitfalls I hit writing my first java program. And now I’m intensely excited to learn how to really use Github to create awesome projects with a group!

The next challenge will be writing meaningful commit messages…

Image from: https://xkcd.com/1296/