la maggior parte delle grandi aziende tecnologiche come Microsoft si concentra principalmente sulle strutture di dati. Sembra che le strutture di dati siano l'unica cosa che si aspettano da un laureato.
No, c'è di più. Ad esempio, ci aspettiamo anche che tu sia uno studente veloce che può apprendere nuovi framework, API o persino linguaggi di programmazione in breve tempo. Questa è una barra minima nuda. Qualcuno che impiega molto tempo per apprendere un nuovo framework, API o lingua non sarà uno sviluppatore di successo nella maggior parte dei team di Microsoft.
E naturalmente ci sono molti altri aspetti su cui ci concentriamo nelle interviste oltre alla semplice conoscenza delle strutture di dati. Capacità di gestire specifiche ambigue, ad esempio, o capacità di riconoscere schemi di codifica che producono codice insicuro, o una dozzina di altre cose. Ma la capacità di comprendere le strutture di dati è certamente molto grande.
In particolare, le interviste sono distorte per testare la conoscenza delle strutture dati per i neolaureati. I neolaureati, la maggior parte dei quali non hanno molta esperienza nel mondo reale, non dovrebbero essere bravi nello stesso genere di cose in cui qualcuno con quindici anni di esperienza nel settore sarebbe bravo.
Devo confessare che non ero così forte nelle strutture di dati
È bello che tu lo sappia di te stesso. Se non sei in grado o non sei disposto a cambiarlo, allora la mia raccomandazione è di non candidarti per un lavoro che richiede una struttura con strutture dati.
vi è questa prospettiva generale secondo cui un buon programmatore è necessariamente uno con una buona conoscenza delle strutture di dati.
È tautologico che un buon programmatore sia un programmatore che è bravo a costruire il tipo di programmi che devono essere costruiti. Molti programmatori lavorano su attività che non richiedono una conoscenza approfondita delle strutture di dati. Alcuni di loro lavorano su attività che richiedono una profonda conoscenza della progettazione dell'interfaccia utente, ad esempio. O normalizzazione del database. O qualunque cosa. Quelle persone possono ancora essere "buoni programmatori" nei loro domini.
perché tutta questa enfasi sulle strutture dati?
Faccio domande di intervista sulle strutture di dati perché nel mio team gli sviluppatori progettano, implementano e manipolano strutture di dati complessi tutto il giorno ogni giorno. Ieri abbiamo avuto quattro ore di incontri in cui una mezza dozzina di sviluppatori ha discusso i pro e i contro dell'aggiunta di un singolo campo booleano a un particolare nodo ad albero. Probabilmente nel mio team non ci sono abilità più importanti della capacità di comprendere le strutture di dati a un livello profondo. Sarebbe sciocco non porre domande al colloquio al riguardo, poiché è quello che facciamo.
La conoscenza delle strutture dati non influisce davvero sulla carriera di programmatore?
Beh, sicuramente ti impedirà di trovare lavoro nella mia squadra. Ma come ho detto prima, la programmazione è un campo enorme . Esistono molti tipi di programmazione per computer che non richiedono la conoscenza delle strutture dati.
la conoscenza in questa materia è davvero una base sufficiente per differenziare un programmatore buono e uno cattivo?
No. Ma è quasi sempre sufficiente rilevare gli sviluppatori che difficilmente avranno successo in Microsoft. Dal momento che questo è ciò che mi interessa principalmente rilevare, la conoscenza delle strutture di dati è uno dei fattori per cui testare nelle interviste.