Suggerire miglioramenti agli esercizi

Cosa considerare prima di suggerire miglioramenti agli esercizi


Allora, hai trovato qualcosa che vorresti migliorare in un esercizio. Prima di tutto, grazie perché ti importa e per aver trovato il tempo di dircelo! 💙

Quando si modifica un esercizio, ci sono alcune cose da considerare, e sono leggermente diverse per gli esercizi di apprendimento (quelli che insegnano gli argomenti del sillabo) e per gli esercizi di pratica (tutti gli altri). Vediamo queste differenze qui sotto.

Però, prima di tutto ci sono un paio di cose generiche da considerare.

Modificare un esercizio ha delle conseguenze

Ci sono parecchie conseguenze nel modificare un esercizio:

  1. Aggiungere nuovi test può rompere le soluzioni esistenti. Questo ha la conseguenza di rendere obsoleto il lavoro di migliaia di persone, il che è frustrante per loro se i test aggiuntivi non mettono in luce nessun bug già presente.
  2. Dobbiamo ritestare il lavoro di tutti, il che comporta un costo sia ambientale sia economico.
  3. Uno o più manutentori devono dedicare del tempo a revisionare le modifiche, il che significa che durante quel tempo non possono fare altri miglioramenti alla traccia.

Per tutte queste ragioni, stiamo attenti a modificare gli esercizi solo quando c'è un beneficio forte ed identificabile.

Evitare la tendenza all'entropia

L'obiettivo delle suite di test degli esercizi non è essere esaustive su tutti i casi possibili. I nostri esercizi non sono software di produzione, e non sono nemmeno progettati per imitare casi d'uso del mondo reale. Sono pensati per essere problemini giocattolo che ti aiutano a raggiungere la padronanza di un linguaggio di programmazione. Evitiamo quindi di proposito di cercare di coprire ogni caso limite, di imporre molta validazione dell'input o altre questioni simili del mondo reale. Se il miglioramento che suggerisci serve ad intercettare un caso limite o a verificare la validazione dell'input, è improbabile che venga accettato, a meno che non porti una differenza sostanziale all'esercizio.

Esercizi di apprendimento

Gli esercizi di apprendimento sono progettati con un solo obiettivo: insegnare i concetti. Tutte le modifiche a un esercizio vengono considerate innanzitutto in base a se migliorano l'insegnamento dei concetti.

Gli esercizi di apprendimento (in particolare) non sono progettati per essere esaustivi nei loro test. Spesso possono anche essere un po' artificiosi o oscuri, per evitare di usare concetti che uno studente non ha ancora imparato, o per non sopraffare uno studente.

Se la modifica che suggerisci potrebbe distrarre dall'apprendimento del concetto, probabilmente verrà rifiutata. Se la modifica rende l'apprendimento più facile, sarà presa in seria considerazione. Se sta nel mezzo, potrebbe essere accettata, ma è improbabile che venga prioritizzata.

Esercizi di pratica

La cosa principale da capire sugli esercizi di pratica è che quasi tutti vivono in un repository centrale (noto come «Problem Specifications»). Modificare un esercizio ha quindi effetti a catena su tutte le tracce. Questo significa che una buona modifica è ancora più potente, perché aiuterà tutti i linguaggi. Ma aumenta anche l'onere della modifica: più manutentori che lavorano su tracce diverse devono essere d'accordo perché venga accettata, e poi i manutentori di ogni linguaggio devono portare le modifiche a valle nelle loro tracce.

Le modifiche agli esercizi possono anche far sì che i concetti a cui sono collegati nei sillabi diventino più confusi, o che gli esercizi richiedano funzionalità aggiuntive per essere risolti, il che cambia il punto in cui si sbloccano. Anche questo va considerato tra le tracce prima che le modifiche vengano accettate.

Anche se abbiamo meccanismi perché solo alcune tracce abbiano determinati casi di test, tendiamo a scoraggiarli, perché questa biforcazione può creare confusione sia ai manutentori sia agli studenti. Quindi, quando proponi modifiche agli esercizi di pratica, considera il quadro più ampio tra le tracce.

Come far accettare le modifiche che suggerisci

Anche se ci sono molte ragioni per cui non accettiamo i suggerimenti, molto spesso le persone propongono ottime idee che invece accettiamo!

Siamo anche quasi sempre aperti a modifiche nella formulazione che aggiungono chiarezza, soprattutto negli esercizi di apprendimento.

Per dare ai tuoi suggerimenti le migliori possibilità di essere approvati, scrivili mostrando di aver considerato quanto segue:

  • Il miglioramento tangibile che questa modifica apporta (idealmente con esempi di codice di ciò che la tua modifica abilita o impedisce).
  • L'impatto sulle soluzioni esistenti e perché questo ne vale la pena.
  • Eventuali modifiche ai concetti insegnati o usati.
  • Una comprensione del motivo per cui le cose potrebbero essere come sono. (Leggi il nostro post su la staccionata di Chesterton.)

E ricorda di esprimere le opinioni come opinioni ed i fatti come fatti. Questo tende a portare alle conversazioni più produttive.

Grazie ancora per aver trovato il tempo di fare un suggerimento e per aver letto questo documento!