Leetcode è una buona misura per testare le abilità di codifica?
Gli sviluppatori che si attengono esclusivamente a Leetcode rischiano di costruire un atteggiamento di visione a tunnel.
 
Una comunità attiva e coinvolgente, Leetcode include una gamma di linguaggi di programmazione e strutture di dati. Con il tempo, la comunità degli sviluppatori ha adottato Leetcode come standard non ufficiale per testare le capacità di codifica. In teoria, Leetcode è una piattaforma completa e innocua . I programmatori che sono alla disperata ricerca di interviste con le aziende tecnologiche hanno ceduto alla “grinta di Leetcode”. Diversi forum online su Reddit hanno ribadito l’idea che dedicare tutto il loro tempo a sudare sui problemi di Leetcode sarebbe la loro strada da superare nei round di interviste tecniche in aziende Big Tech come Google, Apple o Facebook. L’importanza fondamentale data a Leetcode è diventata un’ossessione tra i programmatori. Negli ultimi anni, un numero crescente di persone in cerca di lavoro tra gli sviluppatori si è lamentato dell’ormai insensata routine di Leetcode. I programmatori hanno lunghe discussioni sui forum di messaggi di Y Combinator sull’aver trascorso anni a praticare il codice solo utilizzando Leetcode senza alcun risultato. 

 

I bravi ingegneri hanno qualità come un’etica del lavoro meticolosa, scrivere codice pulito e leggibile, attenersi rigorosamente alle loro scadenze e dedicare gran parte del loro tempo alla progettazione prima di scrivere qualsiasi codice. Molti programmatori di solito si preparano prima impostando una linter nel loro codice prima di scrivere qualsiasi codice. Lint è uno strumento che controlla automaticamente il codice sorgente per eventuali errori di programmazione o stilistici.

L’uso di Leetcode si estende solo al round tecnico. Gli esercizi di Leetcode, le cui risposte implicano trucchi matematici e soluzioni oscure, sono pochi. Le aziende si stanno muovendo verso test che hanno applicazioni più pratiche piuttosto che soluzioni memorizzabili. I round di interviste tecniche ora si stanno orientando maggiormente verso i test di programmazione in coppia su piattaforme come Coderpad . La programmazione accoppiata è più adatta considerando che è un’opportunità per l’organizzazione di testare le capacità comunicative, il lavoro di squadra e le qualità di leadership del programmatore. I test di correzione dei bug che sono più rilevanti per le aziende o la risoluzione di situazioni ipotetiche in cui l’intervistato deve spiegare come progetterebbero un’API REST o un’API che si adatta allo stile architettonico REST sono più adatti.


Una delle principali argomentazioni avanzate contro Leetcode è che il reclutamento è un processo molto più complesso e incorpora molto più delle abilità di codifica. Le competenze trasversali hanno acquisito molta più importanza nel settore tecnologico. I candidati devono avere buone capacità di comunicazione per trasmettere chiaramente le loro idee e aspettative. 

Gli stessi sviluppatori ora hanno iniziato a sottolineare i passi falsi che le aziende fanno durante le interviste ai programmatori. Molti di loro hanno chiarito che Leetcode è semplicemente diventato il metodo più diffuso per capire se vale la pena intervistare un candidato. Serve solo come prova attitudinale di base. Gli sviluppatori che si attengono esclusivamente a Leetcode rischiano di costruire un atteggiamento di visione a tunnel. 


Nessuna applicazione pratica
Gli sviluppatori esperti suggeriscono inoltre ai candidati di adottare altre alternative per affinare le proprie abilità, oltre a enigmi creati artificialmente come Leetcode. Gli sviluppatori devono creare progetti di passione come un sito Web o un’app che li aiuti a superare l’intero processo di sviluppo. La forza e l’unicità di un curriculum si misurano anche dai progetti e dai tirocini che il candidato ha intrapreso. I progetti personali sono un modo molto migliore per mostrare creatività e capacità di risoluzione dei problemi. I tirocini sono valutati di più a causa di quanto sono più vicini alla programmazione del mondo reale. I programmatori hanno anche suggerito di passare all’utilizzo di altre risorse sottovalutate come le sfide di HackAttic rispetto a Leetcode. 

HackAttic è un’alternativa sottovalutata a Leetcode
I programmatori hanno discusso sul fatto che Leetcode è utile per loro per abituarsi inizialmente alle strutture dei dati e agli algoritmi e può persino migliorare le capacità di risoluzione dei problemi del richiedente. Ma anche allora, non racchiude completamente l’attitudine alla programmazione di un richiedente. Questo è simile al modo in cui i SAT sono il test standardizzato per gli esami di ammissione all’università negli Stati Uniti che alla fine indica solo quanto bene lo studente si è comportato ai SAT e non sono quasi indicativi della loro intelligenza complessiva. 

Ottimizzazione prematura del codice 
Gli sviluppatori hanno anche discusso di come Leetcode tenda spesso a spingerli a ottimizzare il loro codice prematuramente. Ciò può potenzialmente portare a una “paralisi dell’analisi” in cui i problemi che avrebbero potuto essere risolti vengono ottimizzati immediatamente. Durante la risoluzione dei problemi all’interno delle organizzazioni, le soluzioni di forza bruta sono più che sufficienti. L’approccio della forza bruta alla codifica consiste nell’esaminare tutte le possibili soluzioni prima di fissare una soluzione specifica a un problema. Al contrario, potrebbe sembrare più interessante ridurre il noioso processo semplicemente eliminando la maggior parte delle soluzioni utilizzando algoritmi intelligenti. Tuttavia, gli sviluppatori con esperienza suggeriscono che l’attenzione sullo spostamento della logica da “O(N) a O(log n)” per l’ottimizzazione non è molto realistica. In realtà, le soluzioni di forza bruta sono quelle che intaccano le prestazioni di un algoritmo. Soluzioni comeConversione ZigZag e Unisci k elenchi ordinati sono esempi migliori di questo tipo di problema. 

È necessario il giusto approccio
Oltre a prendere in considerazione questi fattori per avere un sano senso di dipendenza dalla piattaforma, i programmatori spesso falliscono le interviste nonostante si siano esercitati a utilizzare Leetcode per molto tempo. Si consiglia di non filtrare i problemi per argomento perché è necessario che i candidati si abituino a tutti i tipi di problemi. Attenersi a un singolo tipo di problema come la manipolazione delle stringhe o gli algoritmi di ordinamento significherà che il programmatore sta semplificando il test da solo. 

Gli sviluppatori non dovrebbero inoltre considerare Leetcode come un concorso per vantarsi di quanto sia più veloce la loro soluzione, poiché queste percentuali non sono un fattore applicabile. Un approccio diverso allo stesso problema avrà un ritmo diverso e mostrerà una metrica diversa. 

Di ihal