Why is it important?

Coders are responsible for working together with many other branches of teams. This is quite obvious, but what is the importance of having a fluid chain of communciation between these branches?

Polish

Coders create and polish a program, but they must rely on artists, business professionals, and peoples with various other roles to create a cohesive product.

There’s a reason programs like Facebook and Instagram are so successful, and it certainly isn’t entirely due to the team that codes it.

Innovation

The teacher in the video talks about how Kensuke Tanabe, creator of “Doki Doki Panic!” (the game that went on to be reskinned and called “Super Mario Bros. 2” in the United States), created his platformer with the ability to have both vertical levels and horizontal levels, but not at the same time. After working with Nintendo president Shigeru Miyamoto on “Super Mario Bros. 3,” they managed to create a system that allowed for both vertical and horizontal levels at the same time.

“Super Mario Bros. 3” actually contains significantly less diversity of verticality/horizontality than “Super Mario Bros. 2,” so I think this is a poor example. I think a better way to see how a video game saved and innovated is by looking at Pokémon Gold and Silver on the GameBoy Color.

After a long development process, the whole Pokémon series looked to be on a tightrope as Pokémon Gold and Silver’s code was a buggy mess, and the ambitious things they wished to include in the game seemed impossible to fit on the tragically small GameBoy Color cartridges. Desperate, they turned to Hal Laboratories CEO Satoru Iwata to see if he could help them. Very quickly, he managed not only to figure out exactly the problems with Gold and Silver’s code and how to fit everything in, but he also discovered and documented how the code of Pokémon Red and Green (the previous games) could be efficiently translated for overseas audiences, another problem GameFreak was facing at the time. Through collaboration, Pokémon, the highest grossing media franchise of all time, managed to stay afloat in a high-pressure, nearly hopeless environment.

What to Remember

It is important to have people of diverse perspectives and experiences to create a solid product, and in order to prevent a development team from turning into an echo chamber.

How to Collaborate Effectively

There are many ways for coders to effectively collaborate. Here are a few.

Pair Programming

This is something we’ve done a lot in class. When pair programming, one person writes code and the other watches the lines of code to ensure that they are correct.

This helps us to catch small errors and understand that all people are fallible when coding.

Think-Pair-Share

This is the process of considering possible solutions to a prompt, discussing it with a partner to ensure its promise as a solution, and then share the discussed solution with others (the class, the table, the teacher, etc.).

This helps to ensure the quality of our solutions. A solution may work, but it may at the same time be inefficient or overly complex. Simpler is typically better.

Leave Comments in Code

This is great for collaboration but it’s also something someone should try to do whenever coding.

Using # next to a string of text to leave an instructional comment not only helps those looking at your code understand what the purpose of certain lines or functions is, but also helps remind you of your own train of thought so that coding is a less messy process.

These comments also allow you to acknowledge code or media taken from other sources.

Applying Collaboration

Collaboration can be done with sites such as repl.it or Github. These sites allow you to code together on something at the same time and share documents/programs with one another.

Asking the people around you, especially friends or family, to help test run your code is a great way to see an impartial, non-coder vision of a program.

How Have I Used Collaboration?

In my experience, I have more often used collaboration to help fix bugs (like we can see in the Pokémon Gold and Silver example) than to innovate and create a program that is truly ground-breaking.

Just this week, as my Python and Fastpages servers were giving me the same problems over and over, I spoke with around five different students to try to understand the problems I was having. At my table, at least one person had experienced one of the problems I was having, and by figuring out how they ended up solving those problems, I was able to inch closer to problems being fixed.

Reaching out to other students with more experience than me helped me to stop my Docker packages from reading as “Dead”, preventing me from creating my Fastpages server. It allowed me to see how many others experienced the problem of the flask and flask_login not being recognized as modules, and hear different perspectives and solutions to the problem.

Ultimately, going to the teacher is what finally solved my problems, but that in itself is a form of collaboration. I think this week was overall a great example of the strengths of collaboration.

Certain concepts we learned in class like for loops were difficult for me to understand, and in those cases, I often collaborated with the people around me (particularly those at my table) to help me get a grip of it.

The for-fun text-based RPG I’m making is also the product of a lot of collaboration. Though I’m solely responsible for the code, I’ve asked various people for their thoughts on the possible mechanics and story of the game and I feel that it has allowed me to come up with a truly unique product.