Competitive Programming for fun and self-improvement
Marco Arena, C++ Specialist di Scuderia Ferrari e leader dell’Italian C++ Community, ha parlato del competitive programming come opportunità per allenare le proprie skill da programmatore. Esistono diversi siti di competitive programming, ad esempio Codewars, CodinGame, HackerRank.
Il principio di funzionamento è abbastanza simile: il sito mette a disposizione un insieme di esercizi di programmazione dai kata più semplici a problemi complessi. Gli utenti hanno la possibilità di mettere alla prova le proprie capacità di programmazione risolvendo questi problemi in un linguaggio a scelta.
Partendo da questo spunto, Marco ha proposto alcuni problemi non eccessivamente complicati, ed ha spiegato come anche il problema più semplice possa essere affrontato da diversi punti di vista in un’ottica di miglioramento continuo.
Se i siti di competitive programming in senso stretto richiedono solo di risolvere un problema il più rapidamente possibile, questo può essere solo il punto di partenza.
Non appena viene risolto un esercizio, possiamo fare una breve retrospettiva e valutare altri possibili vincoli (“e se evitassi di usare if/else?”).
Oppure effettuare modifiche, implementazioni alternative (“come verrebbe con uno stream invece di un array?”), e la possibilità di introdurre pattern (“questo si potrebbe fare con una fold”).
Per chi si volesse mettere alla prova, su HackerRank trovate i problemi proposti insieme ai suoi spunti per estensioni.
Abituarsi a dedicare del tempo ogni giorno a risolvere uno o due esercizi del genere può aiutare a diventare più pronti nel riconoscere soluzioni a problemi comuni.
Ci si abitua anche nel porsi le “giuste” domande sul codice che stiamo scrivendo – senza contare che spesso questi esercizi vengono proposti anche nei colloqui di lavoro (soprattutto all’estero). Partendo da quest’idea, Marco ha iniziato ad organizzare incontri periodici di Coding Gym per divertirsi imparando e mettendosi alla prova insieme.