I was pretty excited to hear that we are going to learn about and work with GitHub, ESLint, and IntelliJ IDEA IDE. When I took my first couple ICS classes, we were just taught basic coding concepts. In later ICS classes, I started writing more complex code with function blocks. I always understood programs were rarely written by one individual, but I always wondered how collaborative coding could be productive.
I had my first and only experience with collaborative coding in my Intro to Programming Python class. We were assigned a group project to build a text based adventure game. There were three of us in our group. It wasn’t a smooth experience. Basically, we created a story line where the player would have choices within the game and depending on what choices the player made the story would change. Our game was about a student trying to get from Waianae to school at UH Manoa. The goal of the game was to get to school on time. We decided each of us would write our own section of the game. We first agreed upon what global variables we would use throughout the game. Then we started to individually write functions with Notepad++. We each coded about five function blocks to start, and we cut and pasted them all together into a small program. At the beginning, it seemed like our project was going to be fairly easy. We each finished around twenty five function blocks a piece fairly quickly. When merged them together, that is when it became frustrating pretty quickly. The function blocks would work when we tested them within our own functions, but when we combined our function blocks together, the individual functions didn’t work correctly when one person’s function went to another person’s function. We did not know about IDEs or websites like GitHub at the time. We spent the majority of the time painstakingly proof reading and debugging. We send many emails back and forth with our fixes. Anytime we made changes, we would send each other an email. We often got confused quickly about which file had the most up to date changes since each of us were making numerous edits. There were many times when we fixed one function to have another function break. It got to a point where we decided it was better to just meet up in person and finish the debugging together on one computer. Each of us had their own coding “style” which made debugging even more difficult. I could easily tell who wrote which function just by the code style. The overall code also did not look uniform or professional at all.
Looking back, if we had resources like GitHub, ESLint, and IntelliJ IDEA IDE, I am certain we would have avoided a lot of headache, and we would have spent more time making the game better instead of fixing errors. Although we finally finished the group project and got an “A”, this project was pretty frustrating and left a bad taste in my mouth about collaborative coding. Since then, I have worked with IDEs like Eclipse and Visual Studio, but this was the only group project where I participated. Learning about coding standards and GitHub has changed how I feel about group projects. That is why I am excited about learning about ESLint and GitHub. I’m now looking forward to programming with others with these new tools. I didn’t even know coding standards like ESLint even existed. Coding standards is powerful tool when working in a group. All this reminds me of a quote I read from Donald Knuth, “Programs are meant to be read by humans and only incidentally for computer to execute.”