# Come lavorare sulle sfide della codifica
Il nostro obiettivo è quello di sviluppare un'esperienza di apprendimento interattiva divertente e chiara.
Progettare le sfide di codifica interattiva è difficile. Sarebbe molto più facile scrivere una spiegazione lunga o creare un video tutorial, e c'è un posto per quelli su Medium e YouTube. Tuttavia, per il nostro curriculum di base, ci atteniamo a ciò che funziona meglio per la maggior parte delle persone - un'esperienza completamente interattiva, come il videogioco.
Vogliamo che i camper raggiungano uno stato di flusso. Vogliamo che costruiscano slancio e sfondino attraverso il nostro curriculum con il minor numero di intoppi possibile. Vogliamo che entrino nei progetti con fiducia e che si espongano ampiamente ai concetti di programmazione.
La creazione di queste sfide richiede un'immensa creatività e attenzione ai dettagli. C'è un sacco di aiuto disponibile. Avrai il supporto di un intero team di collaboratori a cui puoi rimbalzare le idee e demo le tue sfide. Rimani attivo nella [sala contributori](https://gitter.im/freecodecamp/contributors) e fai molte domande.
Con il vostro aiuto possiamo progettare un curriculum di programmazione interattivo che aiuterà milioni di persone a imparare a programmare per gli anni a venire.
Il contenuto di ogni sfida viene memorizzato nel proprio file markdown. Questo file markdown viene successivamente convertito in HTML utilizzando i nostri strumenti per creare pagine web interattive.
Puoi trovare tutti i contenuti curriculari di freeCodeCamp.org nella directory [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
## Imposta lo strumento per il curriculum
Prima di lavorare sul curriculum, è necessario impostare alcuni strumenti per aiutarti a testare le modifiche. È possibile utilizzare qualsiasi opzione dal sotto:
- È possibile [impostare freeCodeCamp localmente](how-to-setup-freecodecamp-locally.md). Questo è **altamente raccomandato** per contributi regolari/ripetuti. Questa configurazione ti permette di lavorare e testare le modifiche.
- Usa Gitpod, un ambiente dev online gratuito. Facendo clic sul pulsante qui sotto si avvierà un ambiente dev ready-to-code per freeCodeCamp nel tuo browser. Ci vogliono solo pochi minuti.
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
- Modificare i file sull'interfaccia di GitHub facendo clic sull'icona della matita per il file corrispondente. Mentre questo è il modo più veloce, è **non raccomandato**, perché non sei in grado di testare le modifiche su GitHub. Se i nostri manutentori concludono che le modifiche apportate devono essere testate localmente, è necessario seguire i metodi sopra invece di nuovo.
## Template Sfida
Di seguito è riportato un modello di come i file markdown sfida assomigliano attualmente. Per vedere il modello semplificato che adotteremo vedi [sotto](#upcoming-challenge-template).
````md
---
id: Identificatore unico (alfanumerico, MongoDB_id)
title: Challenge Title
challengeType: 0
videoUrl: 'url of video spiegation'
---
## Descrizione
` tag. Ad esempio, nomi di tag HTML o nomi di proprietà CSS
- La prima istanza di una parola chiave quando è in fase di definizione, o parole chiave generali (cioè "object" o "immutabile") vanno in `` tag
- I riferimenti alle parti di codice (cioè funzione, metodo o nomi di variabili) dovrebbero essere inseriti in tag ``. Vedi esempio sotto:
- Usa parseInt per convertire la variabile realNumber in un numero intero.
- I blocchi di codice multi-riga **devono essere preceduti da una riga vuota**. La riga successiva deve iniziare con tre backticks seguiti immediatamente da una delle [lingue supportate](https://prismjs.com/#supported-languages). Per completare il blocco di codice, è necessario avviare una nuova riga che ha solo tre backticks e **un'altra riga vuota**. **Nota:** Se hai intenzione di utilizzare un codice di esempio in YAML, usa `yaml` invece di `yml` per la lingua a destra dei backtick.
Vedi esempio sotto:
````md
Di seguito è riportato un esempio di codice:
```{language}
[IL TUO CODICE QUI]
````
````
- Ulteriori informazioni nella forma di una nota dovrebbero essere formattate `Nota: Riposo del testo della nota... - Se sono necessarie più note, quindi elenca tutte le note in frasi separate usando il formato `Note: Testo prima nota. Seconda nota testo.`.
- Usa virgolette doppie se del caso
## Test di scrittura
Le sfide dovrebbero avere il numero minimo di test necessari per verificare che un camper capisca un concetto.
Il nostro obiettivo è quello di comunicare il singolo punto che la sfida sta cercando di insegnare, e di verificare che hanno capito quel punto.
I test di sfida possono fare uso delle librerie di asserzione Node.js e Chai.js. Inoltre, se necessario, è possibile accedere al codice generato dall'utente nella variabile `code`.
## Formattazione del seed code
Ecco le linee guida specifiche per la formattazione del seed code:
- Usa due spazi per indentare
- Le istruzioni JavaScript terminano con un punto e virgola
- Usa le virgolette doppie dove applicabile
- I commenti fatti dovrebbero avere uno spazio tra i caratteri del commento e il commento essi stessi
`// Correggi questa riga`
## Suggerimenti e soluzioni
Ogni sfida ha un pulsante `Ottieni un Hint`, così un utente può accedere a qualsiasi suggerimento/soluzione creata per la sfida. Gli argomenti del curriculum hints/solutions si trovano sul [nostro forum](https://forum.freecodecamp.org/c/guide) nella categoria `Guide`.
Se trovi un problema con l'argomento suggerimenti/soluzioni di una sfida esistente, puoi fare suggerimenti nella [categoria contributori](https://forum.freecodecamp.org/c/contributors) sul forum. I moderatori e gli utenti con livello di fiducia 3 esamineranno i commenti e decideranno se includere o meno le modifiche nell'argomento suggerimento/soluzioni corrispondenti.
### Aggiungere nuovi suggerimenti/soluzioni Sfida Argomenti
Adottare i seguenti passi quando si aggiunge un nuovo argomento relativo ai suggerimenti/alle soluzioni.
1. Inizia seguendo gli stessi passaggi per creare un nuovo argomento, ma rivedi il successivo per creare il titolo.
2. Il titolo dell'argomento dovrebbe iniziare con la `freeCodeCamp Challenge Guide: ` concatenata con il titolo effettivo della sfida del curriculum. Ad esempio, se la sfida è chiamata "`Chunky Monkey`", il titolo dell'argomento sarebbe "`freeCodeCamp Challenge Guide: Chunky Monkey`".
3. `camperbot` dovrebbe essere il proprietario di questi argomenti/post, quindi dovrai richiedere a un amministratore di cambiare la proprietà del post principale in `camperbot`.
4. Una volta creato il nuovo argomento, viene creato un ID topic del forum. Si trova alla fine dell'URL dell'argomento del forum. Questo id deve essere aggiunto alla parte frontale del file di sfida del curriculum tramite il normale processo di pull request per il pulsante `Get a Hint` per collegarsi all'argomento.
### Linee guida per il contenuto di suggerimenti e soluzioni
Quando si propone una soluzione per un argomento relativo alla sfida dei programmi di studio, deve essere aggiunto il codice completo. Questo include tutto il codice di seed originale più eventuali modifiche necessarie per superare tutti i test di sfida. Il seguente modello dovrebbe essere usato quando si creano nuovi suggerimenti/soluzioni argomenti:
````md
# Sfida Nome va qui
---
## Problema Spiegazione
Questo riassume ciò che deve essere fatto senza semplicemente riformulare la descrizione della sfida e/o le istruzioni. Questa è una sezione opzionale
#### Link rilevanti
- [Link Text](link_url_goes_here)
- [Link Text](link_url_goes_here)
---
## Suggerimenti
### Suggerimenti 1
Suggerimento va qui
### Suggerimento 2
Suggerimento va qui
---
## Soluzioni
Soluzione 1 (Clicca per Mostrare/Nascondi)
````js
function myFunc() {
console. og('Ciao Mondo!');
}
````
#### Spiegazione Del Codice
- La spiegazione del codice va qui
- La spiegazione del codice va qui
#### Collegamenti Relativi
- [Testo Collegamento](link_url_goes_here)
- [Testo Collegamento](link_url_goes_here)
Esattamente la stessa sezione dei semi
Stesso di nuovo
La domanda sarebbe andare qui (utilizzato solo per le sfide video)
Risposta 1
Risposta 2
Risposta 2
\
````
Sfide di creazione e modifica:
Tipi di Sfida - ciò che significano i valori del tipo di sfida numerica (enum).
Contribuire a FreeCodeCamp - Writing ES6 Challenge Tests - un video che segue Ethan Arrowood in quanto contribuisce alla vecchia versione del curriculum.