Collaborative Programming

The course project requires teamwork, which is an essential component of large-scale software development. While it can be challenging, working in a team is necessary to prepare you for the workplace.

Initially, Agile was primarily adopted by small teams. It is widely accepted that Agile works best with teams of 7±2 members. In such small groups, the team collaborates on modeling, programming, testing, and release activities. Specialized roles are not required. Keep this in mind when dividing responsibilities.

Traditional software teams typically consist of specialized roles such as front-end and backend developers, Quality Assurance (QA) and/or test engineers, User Interface (UI) / User Experience (UX) designers, Database administrators, DevOps specialists, and more. These roles are organized in a hierarchical structure with leaders, managers, and directors. As the company grows, they may form functional divisions, with one group focusing on QA and another on DevOps.

Agile teams are designed to be cross-functional, meaning that individuals with different specializations work together towards a common goal. A cross-functional team possesses the necessary skills to transform an idea into a functional product. Additionally, Agile teams should have members who can assume multiple roles.

In an Agile team, it is not expected that each person possesses every skill required to complete the work. It is acceptable for someone to take the lead on tasks like building the database or designing the UI based on their interest, experience, or expertise. However, it is crucial for everyone to be involved in all aspects of development. This aspect of Agile development aligns with the objectives of this course. We don't want you to spend the entire term solely building a database, for example. If you choose a role because you have already taken a course on databases, you would not learn anything new in OOSE!

Team Lead: Agile teams often have a Team Lead who acts as a facilitator and guides self-organizing teams without having authority over them. This role involves project management soft skills but not technical skills. The course assistant (CA) assigned to each team serves as their "Team Lead".

It is important to maintain productive team dynamics even when the team cannot physically be in one place. Consider scheduling regular check-ins with your team, aligning them with the course's regular meeting cadence.

Slack

We will be using the course's Slack workspace to connect with you and keep you connected with your teammates. Each group will have a private channel on Slack. Make sure to set up your notifications correctly so that you receive notifications when we or your teammates reach out to you.

GitHub

We will be using GitHub to host your projects and as a platform for collaboration. It is important that you understand and use the GitHub Flow, which involves:

  • Utilizing GitHub Issues to assign tasks.
  • Creating branches for adding or updating features.
  • Using pull requests to introduce changes.
  • Merging changes.

Please refer to this link to learn more about the GitHub Flow: https://docs.github.com/en/get-started/using-github/github-flow