Working collaboratively can be difficult. My first time working with another person on the same code base was in CS340 and we designed a CRUD web application. Having essentially zero experience working with git doing branching and merging and having no sense of project management system made the process very cumbersome. I learned a lot through some of the failures during that project as each failure helped inform me how to be a better worker in a shared code base.
Though I have learned a lot, I feel like working on the same project as others always presents its challenges no matter how prepared you might be. Our current capstone group has a lot of things going for it in terms of setting the team up for success. We have team norms, use a project management system, and regularly have a sort of stand up where we talk things out. However, we almost always still run into an issue where we have to have additional meetings and talk things out. A lot of times it is hard for us to foresee problems that might arise, or we didn’t clarify a design decision as we should have. Sometimes you don’t realize there is something you are working on that interacts with a teammate’s assignment and you need to talk about the best way to have the two parts interact. For example, I was building out a function to view an individual job in our job tracker application. However, my teammate was working on the contact portion for each job. Once I started to build the front end of the view job page, I realized I needed to talk to him to figure out what info to pass to his route when a user goes from a job to the job’s contacts. We had to meet and go over that design decision outside of our normal stand-up meetings.
Professionally things are much smoother. Well, I am a junior engineer at work, so I don’t have to make too much of the bigger design decisions. However, having a scrum master and senior engineers on my team makes things run pretty smooth. Additionally, I feel the stories I work on are very well divided. That is each story requires work in a specific area within the code base with clear acceptance criteria. So, I don’t run into intersecting work with other members of my team. I do however have to reach out to other teams whose applications interact with the one I work on. There is constant communication between teams regarding configuration and message format changes. So, it does seem inevitable that working on a team on a shared code base requires, well teamwork. Also, lots of communication.
So, having realized how much communication and collaboration software development is really going to take, I have made it my focus to improve in my communication abilities. Both in this class for my team project but also at work in my job.
Until next time,
Nathan Ramos