Zusätzliches Tooling implementieren


Nachdem du den Track mit den ersten 20+ Übungen und einem Test-Runner gestartet hast, sollte der Fokus darauf liegen, weiteres Track-Tooling zu implementieren.

Es gibt zwei Arten von Tooling für einen Track:

  • Produktion: liefert eine zentrale Funktion für das Lernerlebnis in dieser Programmiersprache
  • Wartung: hilft bei der Pflege des Tracks

Tooling für die Produktion

Für die Produktion gibt es (derzeit) drei Tools:

  • Test-Runner: führen die Tests einer Übung gegen den Code der Lernenden aus. (erforderlich)
  • Representer: erzeugen eine normalisierte Repräsentation einer Lösung (optional)
  • Analyzer: bewerten Einreichungen von Lernenden automatisch und liefern Kommentare im Stil eines Mentors. (optional)

Tooling für die Wartung

Um die Pflege des Tracks zu erleichtern, kannst du außerdem Folgendes bauen:

  • Test-Generatoren: erzeugen bzw. aktualisieren die Tests einer Übung und die Codeschnittstelle für Lernende automatisch. (optional)

Welches Tool solltest du implementieren?

Die Tools für die Produktion sind wichtiger als die Tools für die Wartung. An diesem Punkt solltest du einen Test-Runner implementiert haben. Falls nicht, schau in die Dokumentation zum Erstellen eines Test-Runners.

Wenn du einen Test-Runner gebaut hast, ist der Representer das nächste Tool, an dem du arbeitest. Die Ziele von Representer und Analyzer überschneiden sich teilweise, aber wir empfehlen, zuerst den Representer zu bauen, und zwar aus folgenden Gründen:

  • Representer sind normalerweise (deutlich) einfacher zu implementieren
  • Representer können den Mentoring-Aufwand weit stärker senken als Analyzer, weil sie Mentoren befähigen
  • Representer gelten für alle Übungen, während Analyzer meist auf bestimmte Übungen oder eine Teilmenge abzielen

Wie du mit dem Bau eines Representers beginnst, erfährst du im Dokument Einen Representer von Grund auf erstellen.

Nachdem du einen Representer implementiert hast, ist der Analyzer das letzte Tool, das du baust. Wie du mit dem Bau eines Analyzers beginnst, erfährst du im Dokument Einen Analyzer von Grund auf erstellen.

An diesem Punkt sollte sich der Fokus wahrscheinlich wieder darauf richten, mehr Übungen hinzuzufügen. Um neue Übungen schneller hinzuzufügen, kannst du dir überlegen, einen Test-Generator zu bauen.

Implementierung

Das Tooling für einen Track ist normalerweise (größtenteils) in der Programmiersprache des Tracks geschrieben.

Caution

Du kannst zwar andere Programmiersprachen verwenden, aber jede zusätzliche Sprache macht es schwieriger, den Track zu pflegen oder zu ihm beizutragen. Deshalb empfehlen wir, wo möglich die Programmiersprache des Tracks zu verwenden, weil das die Pflege und das Beitragen erleichtert.

Deployment

Die Tools für die Produktion werden als Docker-Container gepackt und ausgeführt. Docker-Images des Toolings werden automatisch über einen GitHub-Actions-Workflow ausgerollt.

Die Tools für die Wartung werden nicht ausgerollt.