Perché LeetCode è così importante per un ingegnere del software? Perché le università non ci insegnano a risolvere i problemi di LeetCode?

Stai facendo un errore nella tua prima domanda.

LeetCode non è davvero importante per un ingegnere del software in alcun modo. Quasi tutti gli ingegneri del software non affrontano mai domande simili a LeetCode nel loro lavoro quotidiano. Non stai ottenendo un aumento di stipendio o una promozione per la tua capacità di risolvere questi puzzle.

Si può dire che LeetCode è importante per le persone che cercano un lavoro in questo campo. Neolaureati, disoccupati e così via. Questo è anche un po' esagerato, dal momento che LeetCode non è l'unico sito che si può utilizzare per sviluppare competenze relative alla risoluzione di tali compiti, e non tutte le aziende fanno questo tipo di domande durante i colloqui.

Perché le università non insegnano a risolvere questi problemi? Da un lato - lo fanno. Durante gli anni universitari si dovrebbero imparare algoritmi, strutture di dati ecc. e si dovrebbe avere una comprensione dei concetti di base di CS. Avendo queste conoscenze, per quelle domande di colloquio che sono "buone" e non richiedono che tu conosca alcuni trucchi molto specifici che sono difficili da inventare da soli - dovresti effettivamente essere in grado di risolverle da solo, o almeno di trovare diverse idee sub-ottimali per dimostrare che il tuo cervello è capace di qualcosa. Ricordo come stavo discutendo un problema con un altro ragazzo a Google durante il mio stage, e quando ha avuto una bella idea gli ho detto: "Sì, ha senso, questo lo conosco dalla programmazione competitiva... Ma pensavo che tu non avessi mai fatto programmazione competitiva, quindi come l'hai avuto?". La sua risposta è stata: Non si tratta di programmazione competitiva, si tratta di usare il buon senso.

D'altra parte - all'università probabilmente non ci si può aspettare un corso focalizzato specificamente sull'affrontare tali compiti. Onestamente, non so nemmeno quale sia lo scopo principale dell'istruzione universitaria - ma presumo che cerchino di insegnarti le cose necessarie per essere un buon ingegnere del software, piuttosto che prepararti a cercare lavoro. Ora controlla l'inizio della mia risposta - non hai bisogno di LeetCode come ingegnere del software... Quindi ha senso insegnarti qualcos'altro invece, giusto?