Questa potrebbe essere un'occasione in cui può esserci una distinzione semanticamente significativa tra "programmatore" e "ingegnere del software". In questo contesto, in particolare, vediamo che hai una conoscenza di diversi linguaggi di programmazione e tecnologie correlate e che puoi usarli per produrre i risultati desiderati. Questa è una buona definizione operativa di "programmatore di computer".
Mi considero un ingegnere del software. Nella maggior parte degli aspetti quotidiani del mio lavoro, probabilmente faccio le stesse cose che fai tu. Uso il linguaggio del computer e le tecnologie correlate per produrre il risultato desiderato. Tuttavia, ho una comprensione delle strutture dei dati e degli algoritmi e considero tale conoscenza come un fondamento fondamentale della mia capacità di fare molto di più.
Spesso, anche se non sempre, il mio lavoro consiste nel trovare una soluzione a problemi complessi per i quali non esistono soluzioni ovvie, niente che sia direttamente affrontato dalle caratteristiche del framework che sto usando o dalle capacità del linguaggio che sto lavorando con. In questo, ho bisogno di analizzare il problema e escogitare una soluzione e occasionalmente questo processo va nel regno dell'architettura su larga scala.
Mentre è necessaria un'eccellente comprensione di questi problemi più profondi per fare quel tipo di lavoro, non è sufficiente . In altre parole, il solo fatto di sapere come funziona una tabella hash o perché un tipo di heap di solito ha buone caratteristiche prestazionali non è sufficiente per essere un architetto di sistemi o un ingegnere senior. È il punto di partenza logico e da lì puoi iniziare a scavare più a fondo e viaggiare più ampiamente e acquisire l'esperienza necessaria anche per affrontare i problemi più grandi.
Suppongo che per rispondere alla tua domanda, dovresti chiederti: "Cosa voglio essere? Dove andrò con la mia carriera?" Se sei soddisfatto di continuare a fare quello che stai facendo, allora potresti semplicemente voler imparare abbastanza strutture di dati e algoritmi per superare le domande di colloquio in gran parte arbitrarie che devi affrontare.
Se vuoi crescere nella tua carriera e hai la passione per ciò che è essenziale, dovresti abbracciare questi argomenti il più strettamente possibile. Se hai del tempo per lavorarci, una mente aperta e un vero entusiasmo, troverai cose meravigliose ed eccitanti. Non dimenticherò mai il giorno in cui ho capito per la prima volta Quicksort. La sensazione di eccitazione e scoperta ha aperto la strada a gran parte del resto della mia vita, e non potrei esserne più grato. Ora, non riesco a immaginare di fare qualsiasi cosa oltre a lavorare come ingegnere del software.
Buona fortuna con qualunque cosa tu scelga.