University Discourse is a web application that my team and I made for CS 307: Software Engineering. In simple words, University Discourse is RateMyProfessor but for courses and it it more focused on socializing. It is very similar to Reddit and its subreddit pages for schools where students often post questions about specific courses and share thoughts on it. However, Reddit isn’t really a platform specialized for such discussions so that is where University Discourse comes in. On our app, students can ask questions related to the course of interest, get feedback on their schedule, leave ratings on courses, and also share documents (that are allowed to share) to help each other.
CS 307 (Software Engineering) is the first course on the Software Engineering track at Purdue. The course is focused on a group project throughtout the whole semester and the students are taught the ethics, paradigms, and tools for software engineering. By the end of the semester, each team has to present its project and demo to the class.
Me and three of my friends formed a team for this course.
Although I didn’t know two of my team members in the beginning of the semester, they were very good people and we all respected each other
which is not so common in group projects.
We didn’t really go through a storming stage, but if there were any signs of disrupt, we all kinda knew it before it got bigger and tried to handle it as soon as possible.
I felt very lucky to meet this team.
We were all farely new to React. So, for the beginning weeks, we put our time to learn React and plan out the project. To make a plan, we created the following documents
- Project Charter : The objective of the project and an overview
- Product Backlog : User stories and other non-functional requirements for the project
- Product Diagram : Class diagrams for the project
- Design Document : Design outline and UI mockup for the project
These documents became the foundation of our project and it became the map that showed us the way when we got lost or faced some issues down the road of development.
With the documents ready, the development was farely quick as we all knew what to do. However, as we were not so familiar with React, we faced technical issues and since it was the first sprint of the project, a lot of the features that we had to complete were foundational to the project. Therefore, we had to put extra effort to successfully finish the first sprint. We spent a lot of time together and helped out each other.
For the first sprint, the team divided into two groups for one to handle the frontend and the other for backend. Naturally, this became a paired programming as there were two people in each group. From this experience, I realized how important communication is as the two of us had to share the exact same thought inorder to make the correct progress. To understand each other, the method of conveying one’s thought was crucial. For me, I really liked drawing out my thoughts on a whiteboard when I wanted to share something (and also probably because we were responsible for the frontend) and when I was the one listening, summarizing what my opponent has said and repeating back to them as a double checkup was extremely helpful. This method made sure that I understood what my teammate said and my teammate could be assured that I have succssfully understood her intention.
With the above tactics, communication wasn’t so difficult and I could really see the advantage of paired programming. My teammate would catch my mistake or give a better way of solving the problem and the overall quality of our project would increase. However, there were some disadvantages as well. As two people had to work on the same part, the progress was robust but slower. I think this is one of the major reasons why it felt like as if we had so little time for sprint 1.
For the second and final sprint, we all worked individually on the features that we divided in pre-sprint meeting. This really sped up the process along with a strong foundation of the project thanks to the first sprint. However, now we had to focus more on communication since we were now working individually and this is when we couldn’t have physical meetings due to COVID-19. Apps like Discord really saved us as we could just hop in to a voice channel and start a meeting right away. If we had to meet physically, we would have had to find a place to meet, transport to that location, and finally start the meeting. The voice chat application really saved us time and I personally feel like I was more productive than before.
Although the semester was rough with COVID-19, we were able to successfully complete the project in time and even do some optimization to make it mobile friendly. The presentation went nice and smooth as well. However, I still see some points that we could have done better. For example, one thing that we all missed was coding standards. We all had our own way of writing code and this really bugged me when we had to hop on someone’s code for problem solving. It was something small, but I believe a proper standard could make the project more robust and efficient. There may be more that could have been better, but I am really satisfied with the results and it has been a great experience for me work on a project as a team.