...
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. | ||||
Code quality | Using tools for automatic formatting and simple refactoring. | Use tools for defining coding style and formatting code accordingly, have basic refactoring skills and run code quality checking tools locally or as part of CI. | Code analysis like null analysis and code metrics. Introduction of static and dynamic code analysis methods and tools | Verification of safety and mission critical systems Introduction of model checking and formal methods Verification of code for scietific research | ||||
(Regression) testing | Running pre-made tests on their code and understanding the fundamental idea of testing code behavior. | Writing and running their own unit tests (not necessarily TDD). | Writing integration tests according to the test pyramid; using mocking frameworks. | Regression testing Model-based testing | ||||
Continuous integration | Using tools for automising the process of building, testing, and deploying software. | 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. | Kansan-like management | |||||
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. | |||||
Agile Methods | Knowing about Scrum etc. | Experience with some tools/meetings | SCRUM Master | E.g. Scrum Master |
Similar approaches found online:
Programmer Competency Matrix - https://sijinjoseph.com/programmer-competency-matrix/
Staged introduction (proficiency mapped to semester)
Activity/Semester | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
Code management | ||||||||
Code quality |
(Regression) testing | ||||||||
Continuous integration | ||||||||
Issue tracking | ||||||||
Code review |
Agile Methods |
Bachelor in Programming (Games|Apps)
...