Project Background
The EECS Community of Practice Mentor Matching site is a site where students can go to find mentorship from others within the EECS program. This site is a web based application where the student provides their interests and some demographic information, and an algorithm uses that information to match them with people who would be a good fit to be their mentor.
As the title of this post implies, prior to my team starting this project, there was another team. They completed a lot of work gathering the requirements for the site, and used those requirements to put together the first prototype. While now our team has a basis to start our project with, that leaves our team with a bit of a quandary as we now have the option to either build off of the existing solution or start from scratch. Our team had to first assess what that meant in terms of work, and whether that made the most sense for our limited timeline.
Building on Someone Else’s Work
As a full-time software engineer, I’m used to building off of the work of teams past. This includes huge projects which have at least a decade of work put into them. When building off of someone else’s work, before any work can be done, time has to be spent understanding the decisions which were made to create the current system. Not only that, but in order to make changes to the current system, you have to learn exactly what every piece does and how it interacts with the rest of the system. This can be a lot of work, however, on big projects it’s still much less work than starting over. The argument becomes even weaker when the solution is already very much in use and meeting the requirements of the users.
In our case with this project, the majority of the work that the previous team did was just gathering requirements. The prototype they created was very simple and did not do very much in terms of user experience, but it does illustrate what our mentor wants from us in terms of core functionality. Because not much work was done in terms of the actual coding of the site, we are opting to start over rather than trying to decipher what the previous team created.
Benefits Starting Over
Other than skipping the process of understanding their code, starting over also gives us the choice to define things like code linting and coding conventions. It’s much harder to define those with an existing code base as it can be an arduous process updating all the code to fit our conventions. Starting over also allows us to pick all the technologies we would like to use, and pick technologies that the current team is more comfortable with.
Overall, starting over gives our team more freedom and control over our solution.
Leave a Reply