Was du bedenken solltest, bevor du Verbesserungen für Übungen vorschlägst
Du hast also etwas gefunden, das du an einer Übung verbessern möchtest. Zuerst einmal: danke, dass dir das wichtig ist und dass du dir die Zeit genommen hast, es uns zu sagen! 💙
Bei einer Änderung an einer Übung gibt es ein paar Dinge zu bedenken, und sie unterscheiden sich leicht zwischen Lernübungen (denen, die Themen im Lehrplan vermitteln) und Praxisübungen (allen anderen). Auf diese Unterschiede gehen wir weiter unten ein.
Zuvor gibt es aber noch ein paar allgemeine Dinge zu bedenken.
Eine Änderung an einer Übung hat ziemlich viele Folgen:
Aus all diesen Gründen ändern wir Übungen nur, wenn es einen starken, klar erkennbaren Nutzen gibt.
Das Ziel der Testsuite einer Übung ist nicht, alle möglichen Fälle abzudecken. Unsere Übungen sind keine Produktionssoftware und sollen auch keine echten Anwendungsfälle nachbilden. Sie sind als bewusst einfache, kleine Probleme gedacht, die dir helfen, fließend in einer Programmiersprache zu werden. Deshalb verzichten wir bewusst darauf, jeden Randfall abzudecken, umfangreiche Eingabevalidierung zu erzwingen oder andere solche realen Anliegen zu behandeln. Wenn deine vorgeschlagene Verbesserung darin besteht, einen Randfall abzufangen oder die Eingabevalidierung zu prüfen, wird sie wahrscheinlich abgelehnt, es sei denn, sie macht einen wesentlichen Unterschied für die Übung.
Lernübungen werden mit einem einzigen Ziel entworfen: Konzepte zu vermitteln. Alle Änderungen an einer Übung werden zuallererst danach beurteilt, ob sie das Vermitteln der Konzepte verbessern.
Lernübungen sind (besonders) nicht darauf ausgelegt, in ihren Tests vollständig zu sein. Sie sind außerdem oft etwas konstruiert oder umständlich, damit keine Konzepte verwendet werden, die ein Lernender noch nicht gelernt hat, oder um einen Lernenden nicht zu überfordern.
Wenn deine vorgeschlagene Änderung vom Erlernen des Konzepts ablenken könnte, wird sie wahrscheinlich abgelehnt. Macht die Änderung das Lernen leichter, wird sie ernsthaft in Betracht gezogen. Liegt sie irgendwo dazwischen, wird sie vielleicht angenommen, aber wahrscheinlich nicht vorrangig behandelt.
Das Wichtigste, was du über Praxisübungen wissen musst: Fast alle liegen in einem zentralen Repository (bekannt als „Problem Specifications“). Eine Änderung an einer Übung hat also Auswirkungen auf alle Tracks. Das heißt, eine gute Änderung ist besonders wirkungsvoll, weil sie allen Sprachen hilft. Es erhöht aber auch den Aufwand der Änderung, denn mehrere Maintainer aus verschiedenen Tracks müssen der Änderung zustimmen, damit sie angenommen wird, und danach müssen die Maintainer jeder Sprache die Änderungen in ihre Tracks nachziehen.
Änderungen an Übungen können außerdem dazu führen, dass die Konzepte, mit denen sie in Lehrplänen verknüpft sind, unklarer werden, oder dass Übungen zusätzliche Funktionen zum Lösen brauchen, was ändert, wann sie freigeschaltet werden. Auch das muss vor der Annahme von Änderungen über alle Tracks hinweg bedacht werden.
Wir haben zwar Mechanismen, damit nur einige Tracks bestimmte Testfälle haben, aber wir raten eher davon ab, weil diese Aufspaltung sowohl Maintainer als auch Lernende verwirren kann. Wenn du also Änderungen an Praxisübungen vorschlägst, bedenke bitte das große Ganze über alle Tracks hinweg.
Es gibt zwar viele Gründe, aus denen wir Vorschläge ablehnen, aber oft haben Leute großartige Ideen, die wir durchaus annehmen!
Außerdem sind wir fast immer offen für Änderungen am Wortlaut, die für mehr Klarheit sorgen, besonders bei Lernübungen.
Damit deine Vorschläge die besten Chancen haben, angenommen zu werden, schreib bitte auf, dass du Folgendes bedacht hast:
Und denk bitte daran, Meinungen als Meinungen und Fakten als Fakten zu äußern. Das führt meist zu den produktivsten Gesprächen.
Danke noch einmal, dass du dir die Zeit genommen hast, einen Vorschlag zu machen, und dass du dieses Dokument gelesen hast!