Skip to content

HTS Bioinf - Training for ELLA core developers

Scope

This procedure covers the training content for the role of core developer for ELLA.

This role implies expertise that will need to be built up over a period of time. The evaluation of whether this is achieved is done individually for each candidate by the current team of developers. In this light, it is useful to have a list of topics that need to be covered. The typical time required for such training can range from 6 months to one year.

Terminology

Core developer: Developer who can review new code and decide whether to accept it into the ELLA's codebase.

Merge request: Request to integrate a piece of code into the main codebase. This code is subject to review by a core developer as well as feature review by the project manager.


A core developer must be proficient in the following topics.

Databases

  • Data model: Basic overview of the data model underlying ELLA.
  • Migration: Knowledge of the background for and the concept of database migration as well as what is and is not required for a new database migration.
  • Postgres: Basic knowledge of how to read/patch/write a database from a Postgres shell (psql).

Backend/API

  • SQLAlchemy: Acquaintance with SQLAlchemy and typical caveats thereof.
  • API: Basic overview of the API setup, including (but not limited to) Flask, Flask-RESTful and Marshmallow.
  • Tests: Basic overview of how unit, API and database integration tests are set up and run.
  • Users: Basic overview over the user model, including password and token management, with particular regard to security.

CLI/admin

  • CLI: Acquaintance with and overview of the CLI setup.
  • Admin: Basic overview of the different administrative tasks involved with ELLA.

Frontend

  • React: Acquaintance with React and overview of the frontend architecture
  • Redux/Redux-toolkit: Acquaintance with user and developer setup for Redux/Redux-toolkit as well as overview of how the data are stored in the frontend
  • Tests: Basic overview of how unit and integration tests (jest) as well as behaviour-driven development (BDD, behaving) tests are set up.

General development

  • Introduction to Gitlab and how we manage tasks and versioning
  • Merge requests - the process flow for merging new functionality into the codebase
  • Introduction to CI-tests and our setup
  • Access to relevant Gitlab projects