This semester, I had the opportunity to take a class that strongly resembled real-life work as a software developer. Having a whole course centered around a single customer and project taught me many different things. At first, I was both excited and nervous-excited to apply my skills in a practical setting, and nervous about the challenges of group work and client communication. As the semester progressed, I learned invaluable lessons about teamwork, professional standards, and problem-solving.
Maintaining coding standards was an important aspect of our project. When 8 different people are set to work on one project, without rules, the code would look all different, and ideas started by one might not be properly finished by another. We agreed on conventions for code style, documentation, and commit messages to ensure consistency. At first, it was difficult to remember all the rules, and we occasionally had to refactor code to meet our standards. Code reviews became an essential part of our workflow, allowing us to catch errors and learn from each other. This process not only improved the quality of our code but also helped us develop a shared sense of responsibility for the project. Something interesting, taking the older curriculum before they changed it was helpful, but getting to learn about new tools like Next.js and Vercel was hard at first, but having group mates who took the newer Software Engineering class was very helpful.
In this class, there was a lot of problem-solving. Having the experience to work with an actual client to shape their ideas and desires into actual working software is a great experience. It requires additional thinking from what maybe you or I want. You have to ask questions like, “Does this align with the company’s vision?”, “Is this what the client is expecting?”. Not every time will you hit the nail on the head, but keeping the client in mind when coding and designing is especially important. There were many times and aspects that we may have neglected in designing this application for our client. A good example is our client noticed a lack of color and tons of whitespace all on the page. With my group, we realized that in focusing on functionality, we neglected the overall look and aesthetics of the application, something that is an important factor when dealing with a client. Applying user experience is very important when you have to question what kind of people with what skills will be using this software.
But without hardships, there cannot be learning. One of the hardest parts in this class was communication within my group. In my previous group project, all the members were people I considered friends, so I didn’t feel ashamed when I couldn’t get a feature to work or needed collaboration with an aspect of the project. It can feel maybe scary to ask for help from different people, but if there is anything I learned is to not be afraid to ask for help. If your groupmates have similar goals and desires for the project to succeed, then they will gladly assist and help. Scheduling around group members’ schedules proved to have some difficulties as well. Managing 8 people’s schedules outside of the task proved to be a challenge.
Overall, the problem-solving aspect of the course was the most rewarding. Each obstacle-whether technical or interpersonal-was an opportunity to grow. We brainstormed solutions together, divided tasks so everyone had a chance to make commits, and supported each other through setbacks. By the end of the semester, while not a completely fleshed-out product, the experiences I learned throughout the semester have been very important. I am grateful for the experience and the lessons I will carry with me into my future career.