Experience and Development Paradigms

My previous experience with open-source software and developmental goals for this course

While my first impulse is to say I have no prior experience with open source software, further reflection reminds me that I have been exposed to open-source software almost since my introduction to computer science. Two years ago, I was started learning Python, an open-source high level programming language. “High-level” means that Python was made to make programming easier for developers. Python has a number of pre-made capabilities that programmers use to create their own tools. High-level languages can be thought of as ingredients you buy in a store; instead of growing flour and harvesting eggs yourself, these jobs are already done for you, and all you have to do is whip them up into a cake. The difference between cooking ingredients and Python, however, lies in the fact that Python, as an open-source software, is free, and you must make the recipe of any Python cake free as well so others can create it as well. Beyond my experience with Python, I also spent the summer of 2016 working on a Ruby on Rails database system. Ruby is another high-level programming language and counts as an open-source software under its 2-clause license, which allows redistribution and modification provided that the license and copyright disclaimers are included. Despite this experience, I have not yet had the change to collaborate on an open-source project remotely with a team I do not personally know. I am eager with anticipation for the opportunity this course presents to familiarize myself with the open-source environment and to contribute to a current project.

It is important to consider where my strengths lie so that I can accurately pursue a project where, in addition to gaining valuable experience and knowledge, I can actually produce something of use and leave the project in better shape than when I found it. I believe a valuable skill I can bring to my team is my love for the design process. I enjoy considering the different possible routes and love drawing out visualizations of possible design plans. These visualizations further serve as documentation of the process and implementation. A related skill is my lack of aversion to documentation and record-keeping. While I certainly enjoy programming more than I enjoy documentation, I am a great believer in recording information and developments so that curiosities can be satisfied by whomever cares enough to pursue them.

This semester, one of my primary goals is to develop my familiarity with development principles and their application. In particular, I think I would like to engage in studying and trying the Scrum development framework, although I am open to trying another that my team shows more interest in. I believe standardization is particularly important in programming, given the complicated nature of independently implemented parts having to work together cohesively. If everyone operates on the same page, there is increased accountability and predictability in the design and implementation process. I believe many frustrations can be avoided if a team decides on a workflow model and sticks to agreed upon principles. I hope my team will be as interested in engaging in a workflow framework as I am, and, if they are not, that I can convey my interest in such a way as to inspire their curiosity to explore different paradigms and select one that will be valuable to our development process.