Learning to work on a team was both the most interesting and challenging part of this course. Working in a software development team requires more than just individual coding skills. It’s about collaboration, communication, and ensuring that everyone is on the same page. Even when everyone on a team is all capable of creating the project they are working on, everyone will have different approaches to each problem and different styles of coding. This is the challenge of teamwork and why it is such an essential skill. In order to tackle these challenges, I used skills I’ve in this course such as agile project management, configuration management, and design patterns. These practices have provided a framework for my group to work together effectively.
Agile project management, particularly the IDPM approach, is helpful because it breaks down the project into manageable chunks. IDPM or issue driven project management is an approach to building projects in which you break it down into tasks called issues. This allows team members to focus on specific tasks, which leads to a more organized workflow. It also motivates team members as there is a simple way to see what everyone is working on which adds a level of accountability. Issue driven project management allowed my team to effectively and relatively evenly distribute work as well as manage the priority of tasks so that we constantly made progress on our project. This practice was definitely essential in our success. That is why I believe that this is such a valuable skill as it is essential for teamwork, and it also helps with individual projects since it makes managing time, prioritizing tasks, and understanding your project much easier.
An example of a IDPM project board from my final project
Another essential and valuable software engineering skill I’ve learned is configuration management, specifically Git and GitHub, which are essential for collaboration. Git allows team members to work on different parts of the codebase simultaneously without fear of conflicting changes. Features like branching and pull requests enable code reviews, which not only ensure code quality but also promote knowledge sharing among team members. This leads to a more cohesive team dynamic, where everyone is aware of what others are working on and can provide help or feedback when needed. Git is the core of teamwork in software development, it is essential to the organization of projects and the workflow of a team.
In learning to work in a team, I’ve also learned the value of design patterns. Design patterns are essentially frameworks and practices that are understood to be the best solutions to common problems in software development. They provide a common language and framework for implementing solutions, that makes projects and other people’s work much more understandable. When everyone on the team is familiar with the same design patterns, it becomes easier to understand each other’s code and collaborate effectively. Design patterns also help in ensuring that the codebase is maintainable and scalable, as they provide tried and tested solutions to common problems. The maintainability gained from exercising design patterns is incredibly valuable since it makes projects easier to come back to after a while if you understand the core design principles of it. Design patterns also allow other people to easily understand and maintain anything that you build.
Overall, the most important umbrella skill I’ve gained is the ability to work effectively in software development teams. In learning to develop in a team I’ve had to learn and hone various other skills such as issue driven project management and version control, which have allowed me to become a more efficient, effective, and knowledgeable developer.