...
Examples of systems are git (supports so-called pull requests where a branch in a fork is contributed to the main project), gerrit (hosts a copy of a repo and can run CI on it before changes are merged into the main repo).
...
Proficiency levels
If we want to introduce these activities in a curriculum in a study program, we should consider a staged approach, were activities and tools are introduced gradually. Based on proficiency levels (https://hr.od.nih.gov/workingatnih/competencies/proficiencyscale.htm: Fundamental Awareness, Novice (limited experience), Intermediate (practical application), Advanced (applied theory), Expert (recognized authority)). For a bachelor program, we may expect students to reach a Intermediate level in some activities, and Novice in others, while a master program may lift the bar depending on the specialisation.Level 0:
Activity/Proficiency | Fundamental Awareness |
---|
...
Novice | Intermediate | Advanced | |
---|---|---|---|
Code management |
...
Fetching code samples and other material from a code repository prepared by others |
...
, and being aware of the flow. | Basic commands for committing, pushing and pulling, and understanding what merge conflicts are and how to handle them. | Versions, tagging and branching and merging. Forking and updating. | Deployment and releases. |
Continuous integration | Running |
...
pre-made tests on their code |
...
Level 1:
...
and understanding the fundamental idea of testing code behavior. | Writing and running their own unit tests (not necessarily TDD). Using a build system for assembling a runnable application. | Unit and integration testing, driven by build system. | CI automation using a server. | |
Issue tracking | Use issues tracking system to report bugs (to some system they are using). | Use issues to manage requirements that drive development. | ||
Code review | Going through code with others, to improve/ensure quality. | Pull requests, for contributing fixes to other system. | Using code review within own process, to close issues. |
Staged introduction
Activity/Proficiency | Fundamental Awareness | Novice | Intermediate | Advanced |
---|---|---|---|---|
Code management | 2 | 3 | 4, 5, 6 | 7, 8 |
Continuous integration | 2 | 3 | 4, 5, 6 | 7, 8 |
Issue tracking | 3 | 4 | ||
Code review | 4 | 6 | 7, 8 |