On Change++ Software Development Teams
Written by Sam Welch, Developer, Junior
My name is Sam Welch, and I was a software developer on the Game of Rent team during the 2019-20 school year. Working with Change++ has been an experience that is unlike anything I’ve had in the classroom. It helped me refine a set of skills that will directly apply to any future internship or employment opportunity. With Change++, I was able to have the opportunity to work within a team, which is not the case in our Computer Science classes. As important as the individual assignments are to assess one’s learning, I think working within a group on a long-term project is something that is much more likely to transfer to industry.
New Experiences
We had used Git and GitHub before, but it was an entirely different situation to have a team of people working within the same repository. We had quite the learning curve in understanding how to avoid significant merge conflicts. At first, we just did our best to not work on the same files. However, as we tried to reorganize our project, we ended up running into many complex merge conflicts that significantly slowed us down. We were only able to start making noteworthy progress once we were able to create our own branches and handle merge conflicts on our own, making them smaller and more manageable. In prior internships, the software development teams I’ve worked on have used the AGILE software development methodology and utilized Jira as a project management tool. At the beginning of the project, I was impressed to see that Change++ had elected to use both of these in sync with one another. In hindsight, it is yet another example of a skill that will serve me well in the long term.
Learning Curve
In Computer Science classes, we are often expected to develop a very specific solution with predefined technologies, while the final product of Game of Rent and its makeup weren’t exactly set in stone. My main role came in the form of managing data storage and access, and I had to start by deciding what database to use. We were leaning towards MongoDB from the beginning, but also considered DynamoDB from AWS. We ended up deciding on MongoDB because of its common use in apps and websites and compatibility with React, which was the base for our website. In hindsight, MongoDB was the correct call for not only ease of use for apps and websites, but also its ability to handle data with no clear schema definition. Sometimes, we didn’t have fully completed employment or housing data for a certain city, making MongoDB over DynamoDB the right choice.
Something that stuck out to me throughout the project was the learning curve, which was much more substantial than in the classroom. With these kinds of projects, the learning is on you as the developer, which is a unique experience. I’ve learned that one of the more important skills in software development is knowing how and where to look. I think I can speak for my entire team in saying that finding the right tutorials and sources to help us tackle the larger-scale questions was essential.
People-Oriented Project
I’ve also now had the opportunity to work with a stakeholder who has an idea for what they want their final product to look like. Jaden, our project manager, did an excellent job of keeping us up to date on what our stakeholder was looking for and checking back in with her as we continued to make progress. We will all benefit in the long term from working with a stakeholder with a need to solve a real-world problem. Overall, having a project manager was essential in making sure that our team was all on the same page and that we had an experienced resource to go to for questions. Seeing as software development is entirely user-based, it was a tremendous experience to have such a people-oriented project from start to finish.
Summary
I know the experience I’ve had with Change++ thus far has improved me as a software developer and a problem solver. I’ve had the opportunity to work on a team to create a solution to a real-world problem with no clearly defined roadmap to get there. I was able to use a variety of different technologies throughout the process. Some of these technologies and concepts were new, and I was familiar with others but got the chance to refine my skillset in that area. I know that I now bring more to the table for any Change++ or external project. As I move into my junior year and my second year with Change++, I’m looking forward to building off of the knowledge and experience I’ve gained thus far on a new project with a different role.