Per un buon sviluppatore Android, ho bisogno di imparare anche le strutture dati e gli algoritmi?
Mentre la conoscenza specifica dei DSA non è richiesta per nessuna programmazione di alto livello, è raccomandato avere almeno una certa comprensione di base di cosa sia un array o una Linked List e come implementarne una in Java.
Detto questo, si consiglia vivamente di seguire un corso di DSA se si può, vi spiegherà così tanto sul modo in cui funzionano i computer, sarete ipnotizzati e ben introdotti nell'arte del problem solving computazionale, che prendere qualsiasi nuovo framework o linguaggio sarà una passeggiata (solo una questione di imparare la sintassi e i vincoli dell'ambiente operativo).
Io lo riassumerei così: se non volete codificare alla cieca (o avere solo una mezza interpretazione di ciò che state effettivamente utilizzando, fate DSA. :) ).
Frameworks/nuovi linguaggi sono facili/veloci da imparare, DSA richiede un impegno un po' più approfondito. Si tratta fondamentalmente delle strutture ingegneristiche dell'IT. Spero che questo aiuti a chiarire le cose!
Tuttavia, Java fornisce la quantità di astrazione richiesta quindi NON tutti gli sviluppatori devono conoscere DSA in profondità. Tuttavia, avere la conoscenza di DSA vi darà una comprensione approfondita e più ampia di ciò che effettivamente compone un programma e come progettare codice elegante in qualsiasi ambiente.
Ogni guidatore può guidare una volta che si è abituato alle regole di guida locali, ma quanti di loro sanno davvero come funziona una macchina e/o sanno ripararne una? Ora questa è la rispettiva differenza tra conoscere un ambiente/lingua (meno DSA) e conoscere un ambiente/lingua + DSA.
tl;dr: Sì, DSA è utile da conoscere, specialmente per i colloqui di lavoro. C'è una buona ragione per cui le aziende testano questa conoscenza, perché differenzia i codificatori/programmatori/sviluppatori mediocri da quelli buoni/grandi/migliori. (Penso che questo significhi che Google [e molte altre aziende tecnologiche] hanno bisogno di chiamare i loro sviluppatori 'Ingegneri del software' hah /una classe superiore di titolo per percezione forse~)
Articoli simili
- Quali strutture di dati e algoritmi di base si dovrebbero imparare prima di iniziare la programmazione competitiva?
- Quali sono i 10 algoritmi che si devono conoscere per risolvere la maggior parte dei problemi di algoritmi?
- Come imparare ad usare le strutture di dati nello sviluppo di applicazioni Android
- Quali sono le applicazioni delle strutture di dati?