Appearance
Collaborative Programming
The course project requires teamwork, an essential component of large-scale software development. Although it can be challenging, teamwork is necessary to prepare you for the workplace.
The initial adopters of Agile were typically small teams. It is widely accepted that Agile works best with teams of 7±2 members. In such small groups, the team works together on modeling, programming, testing, and release activities. No specialized roles are necessary. When dividing responsibilities, keep this in mind.
Traditionally, software teams 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 organize into functional divisions, with one group focusing on QA and another on DevOps.
Agile teams are designed to be cross-functional. This means that a group of people with different specializations work together to achieve a common goal. A cross-functional team has the necessary skills to turn an idea into a working product. Additionally, Agile teams should be composed of members who can take on multiple roles.
In an agile team, it is not expected that each person has every skill necessary to complete the work. It is acceptable for someone to take the lead on tasks such as building the database or designing the UI, based on their interest, experience, or expertise. Nevertheless, everyone must be involved in all aspects of development. This element of agile development is in line with the objectives of this course. We don't want you to spend the entire term only building a database, for example. If you chose that role because you have taken a course on databases, you would not learn anything new in OOSE!
Team Lead
Agile teams often have a Team Lead, a facilitator who can guide self-organizing teams without having authority over them. The role encompasses the soft skills of project management, but not the technical ones. The course assistant (CA) assigned to each team is their "Team Lead".
TIP
It is important to maintain productive team dynamics even when the team can't be in one place. Consider setting up regular check-ins with your team aligned with the course's regular meeting cadence.
Slack
We will be using the course's Slack workspace to connect with you and to keep you connected with your teammates. Each group will get a private channel on Slack. You must ensure the notifications are set correctly so you will be notified when we or other teammates reach out to you.
GitHub
We will be using GitHub to host your projects and as a platform for you to collaborate on. You must understand (and use) the GitHub Flow which entails:
- Using GitHub Issues to assign tasks.
- Creating branches for adding/updating features.
- Using pull requests to introduce changes.
- Merging changes
TIP
We will create GitHub repository for each team and provide more detailed information about practices you shall follow.