
Throughout my life, a variety of patterns have emerged. One of the facets of my life this has happened is in academic pursuits of computer science. Programming was something that always interested me, but took me a while to particiate in. Eventually I was committed to it and am now majorig in it. During this journey, I have experienced different approaches to programming, both for the code itself and for the people writing it. In my first ever programming class, pair coding was emphasized for short coding problems out of a textbook. Learning to code while pair coding is a double edged sword, as while it exposed me to group work early on and made me comfortable discussing the code we were working on, it could also be used as a crutch for anything one partner understands and the other doesn’t. So learning and passing classes is able to happen, but isn’t entirely requried. In university, the introductory programming classes naturally were self directed and had many homework assignments to do individually, however in labs we were able to get a surplus of assistance from the TAs, and discuss our code with each other. This really fostered my learning. Later on, professors took harder stances on no collaboration between students, and that paired with an incredible decrease in TA support made learning programming isolating and even confusing for the first time in my life. So, working with others is definitely helpful for understanding.
This applies to softwate engineering as well. The design of an application is bettered by planning it with others, and discussing it thoroughly. In my current ICS class, the final project requries us to work collaboratively in groups. This is a challenge because we have been working mostly individually in the class and there is some confusion over how we should organize ourselves. However, the pattern that we have discovered is that the more communication and collaborative planning is done, the more effient and effective our work is. One challenge when programming with others is consident use of design patterns across team members. As everyone has different coding styles and experiences, we naturally deviate in how we approach problems and code for them. In our final project, we have to have a result that is consistent for it to work. This means that the creational, structural, and behavioral patterns of our code has to make sense. We are still in the process of building our final project, and are making it more functional and consistent as we go on. That is the overall pattern of our learning in this class, in our degrees, and personal lives as well.