For each iteration of the project, you must commit to a set of tasks by the end of the iteration. You may think of this as “designing your own homework assignment” for each iteration. Here is the process to follow.
At the beginning of each iteration, each team member must specify the following for each task he/she will complete:
Task Description: What work will you complete by the end of the iteration? What code or artifacts will you contribute to the project? You may also comment on the challenge/difficulty of the task if you feel that it’s inobvious and important.
How to Evaluate: How should the instructor evaluate that you completed the task at a high level of quality? What evidence should the instructor look at?
At the end of the iteration (to be included in the milestone), each team member must specify the following (alongside the first two items):
Additionally, during an iteration, unexpected but important tasks may arise. These tasks should be clearly labeled “Unplanned Tasks” in the milestone and documented using the above three items.
Here are some important criteria to take into account when specifying tasks:
Amount of Work: Each team member must take on a “reasonable” amount of work each iteration. For example, for a 3-week iteration, the work a team member takes on must be appropriate for a 3-week homework assignment.
Multiple Tasks: In order to achieve a reasonable amount of work, a given team member may need to specify multiple tasks.
Everybody Codes: For each development iteration, each and every team member must take on substantial coding tasks (although not all tasks need to involve coding).
No Shared Tasks: Do not list the same task for more than one team member. Although team members are encouraged to collaborate, the responsibility for completing a particular task must lie with one and only one team member.
Cross-Reference Design Documents You must cross-reference design documents and UI sketches to make it clear what each task involves. (That implies that you will give each design artifact a unique name to which you can refer.) Such cross-references may appear in any part of the spec (i.e., Description, How to Evaluate, etc.).
What Will Be Built?: You must describe to the best of your ability what project artifacts will be built. That means telling about things like controller classes, controller actions, model classes, view ERBs, etc.
No Learning Tasks: It is assumed that team members will need to put effort into learning new technologies during the project. However, such effort should not be specified as a task. Generally, only specify tasks that yield project artifacts.
No Communication Tasks: It is assumed that team members will put effort into team communication and coordination each iteration. These types of effort should not be counted as tasks. Generally, only specify tasks that yield project artifacts.
Evaluation Instructions: In specifying how the instructor should evaluate a task, keep the following in mind. Tasks must be verifiable. The instructor must be able to quickly and conveniently verify that a task was performed and assess how good of a job was done on it. The instructor must feel confident that no loophole or misrepresentation was exploited that would lead to an inaccurate evaluation.
Teams must use the following template. Create a Markdown file (i.e., a text file with the file extension “.md
”), and paste in the template below. Each team should submit only one file that is shared by all team members.
# Individual Assignment Specifications
- Team: xxx (Team Name)
- Iteration: xxx (Iteration Name)
## Special Roles
- Project Coordinator: xxx (Team Member Name)
- Quality Assurance Czar: xxx (Team Member Name)
- Video Demo Creators:
- xxx, 999 (Team Member Name, Number of Points; filled in at end of iteration)
- xxx, 999 (Team Member Name, Number of Points; filled in at end of iteration)
- Demo-Booth Operator: xxx (Team Member Name; filled in at end of iteration)
## Tasks: xxx (Team Member Name)
### Task 1: xxx (Task Name)
- Description: xxx (Task Description)
- How to Evaluate: xxx (Instructions)
- Outcome of Task: xxx (Description; filled in at end of iteration)