Two years ago, I was asked to be an alumni mentor for the software development class for my alma mater, Grinnell College. The software development class was undergoing an experimental shift in how it was taught. Previously, it was taught as a 4-credit class over one semester, and students organized into teams that worked on a project of their choosing. Students rarely had working software at the end of the semester, and there were limited opportunities to continue working on their projects. The class was split into two 2-credit classes over two semesters, complemented by a 2-credit class on software development principles and practices. For their software projects, teams of 4-6 students developed Ruby on Rails applications for local non-profit organizations. An alumni mentor was assigned to each team.
The goal was to have a Minimal Viable Product (MVP) for the non-profit organizations at the end of the academic year and provide students with a more real-world software development experience. While the students made good progress toward an MVP, most of the projects were too complex to complete within the academic year. Two of the projects have completed and launched, but the rest are still in progress.
The team I mentored worked with the Greater Poweshiek Community Foundation (GPCF) to develop a website to help organizations find people to serve as board members. Currently, people interested in serving on a board fill out a paper form, and GPCF staff enter the data into a spreadsheet. When an organization contacts GPCF looking for board members, GPCF staff manually look through their spreadsheet to see if anyone would be a good fit for the organization. The website enables organizations to connect directly with people who are interested in serving on a board. GPCF also wants the website to help organizations to find volunteers.
The students have gained valuable real-world experience through the class. The students met with their non-profit organization throughout the semester, and they learned how to communicate with clients that lack technical knowledge. Students can choose to take one or two semesters of the class, creating a mix of different experience levels on the teams. Many teams practiced pair programming, and it was a good opportunity for the more experienced students to mentor the less experienced students. In the second year of the class, the students inherited projects worked on by different teams of students. This situation happens frequently in software development, and it provided more real-world experience for students. The projects had technical debt and lacked documentation. My team spent the first part of the last semester upgrading from Rails 3 to 4 and updating documentation.
The new way of teaching software development has been successful, and the computer science faculty plan to continue using this format for the class. I’m looking forward to continuing my involvement with the software development class as a mentor for the next academic year.