Team roles¶
Learning objectives
- Understand there are different roles in a team
- Signal our interest in a role
For teachers
Prior:
- How to divide up the labor in a project?
- How does the ultimate team look like?
- What roles does a team have?
Lesson plans:
gantt
title Lesson plan pair programming 1
dateFormat X
axisFormat %s
Introduction : intro, 0, 5s
Theory 1: theory_1, after intro, 5s
Exercise 1: crit, exercise_1, after theory_1, 15s
Feedback 1: feedback_1, after exercise_1, 5s
Theory 2: theory_2, after feedback_1, 5s
Exercise 2: crit, exercise_2, after theory_2, 10s
Exercise 2 after the break: crit, after exercise_2, 5s
There are multiple team roles and people can have multiple roles.
Here are some roles we informally use in this project:
Product owner¶
A product owner determines what the software needs to do. In the industry, this is typically a (representative of a) customer. In this course, the product owner is an imaginary professor that want to write a simulation to be used in writing a research paper.
The product owner is the person that needs to be made happy. He/she cares about correctness, but not about the actual implementation.
In this project, everyone is a bit of a project owner: we have no time to follow all procedures strictly.
Requirements engineer¶
- refines the requirements document
In this project, everyone is a bit of a requirements engineer: we have no time to follow all procedures strictly.
Issue manager¶
An issue manager:
- checks issues for duplicates
- closes issues when no longer needed, 'have gone stale'
- creates issues when needed
- checks that all team members are assigned to an issue
Software architect¶
A software architect:
- decides upon the architecture of the software
Data manager¶
A data manager:
- decides upon the format of the data
Lead developer¶
A lead developer:
- makes the requirements document come true
- end responsible for the whole team
- likely to discuss progress with the product owner
Experience-based roles¶
Newbie developer¶
Team members that just started. They need to be taught the workflow by junior developers.
Junior developer¶
A junior developers:
- fixes the tests written by mediors
- teaches the workflow to newbies
Medior developer¶
A medior developer:
- creates issues that contain a test
- does code reviews
Senior developer¶
A senior developer:
- see the bigger picture of the code and the team
- works on more complex issues, such as improving the architecture of the code or improving the continuous integration tools
Exercises¶
Exercise 1: signal your experience¶
We all have different skill levels. In a normal setting, we would have had time to find out everyone's skill level. In this course, however, we take a ruthless shortcut. We do so, so that the more experienced developers are likelier to get tasks that suit their level.
Do so by modifying the README file in the course project, assign yourself a skill level, by adding your name in the right row of the table with experience levels.
When unsure, pick 'junior'.
Exercise 2: signal a role you want to practice¶
There are many roles in a team and you may fulfill multiple.
If you are interested in being any of these below, let the teachers know and you'll be assigned the role if (still) vacant.
- Issue manager
- Product owner
- Requirements engineer
- Software architect
- Data manager
- Lead developer
Do so by modifying the README file in the course project, by adding your name in the right row of the table with roles.
When unsure, do not fill in your name and be 'just' a developer :-)