Negli ultimi anni c’è stata una spinta considerevole delle persone ad imparare a programmare e perseguire nell’ingegneria del software e/o nell’informatica per diventare – un ottimo – programmatore.
Sono anni che lavoro da programmatore nel campo dell’informatica.
Per cui ho avuto l’occasione di vedere ed altre volte l’opportunità di offrire il mio supporto a persone intente ad affrontare il loro processo di apprendimento del codice per poi vederli diventare ottimi programmatori di software professionali.
Sono soddisfazioni.
Recentemente mi è capito che durante una sessione di programmazione venissi osservato da un ragazzo 20 enne.
Intravedevo nel riflesso del suo sguardo, lo stesso sguardo che potevo aver avuto io alla sua età – decisi di iniziare un discorso e dopo alcune mie domande mi ha raccontato del suo interesse nell’informatica ed in particolare nella programmazione.
Vi era però un dubbio, ovvero “come faccio a diventare un programmatore?” – mi chiese.
Per questo motivo mi sono chiesto quali consigli darei al me ragazzo pronto a lavorare nel campo dell’informatica nel 2020?
Bene - caro ragazzo - ora ascolta cosa ho da dirti ...
#1 L’importante è capire quale sia il motivo che ti spinge a voler programmare.
Mi è sempre capitato di sentire programmatori dire questa classica frase “Se vuoi iniziare a programmare dovresti partire da questo linguaggio … “.
Non c’è niente di più sbagliato, perché il vero primo consiglio è che dovresti iniziare ad apprendere i linguaggi di programmazione che risultano in linea con i tuoi obiettivi.
Per cui quali sono i motivi che ti spingono ad diventare programmatore?
Esempio, se vuoi iniziare perché sei un appassionato di domotica e nella tua testa c’è solo Raspberry Pi e ti interessa creare un tuo sistema di monitoraggio ad uso domestico – io – mi rivolgerei verso il rinato Python.
Se invece, vorresti creare una tua piattaforma che offra dei servizi e che sia raggiungibile da ogni dispositivo connesso ad internet (bhé) ovviamente inizierei a guardare PHP ed alcuni dei suoi framework più utilizzati per questi lavori progettuali. Tra quest’ultimi cercherei informazioni su Symfony, Laravel o Codeigniter.
Mi è capitato di vedere professionisti senior consigliare ai nuovi programmatori di apprendere la lingua C, perché secondo loro potranno acquisire una migliore comprensione dei più importanti concetti di informatica.
Il caso curioso è che puoi effettivamente imparare a programmare ed ottenere un lavoro nell’ingegneria del software anche senza bisogno di conoscere il linguaggio C.
#2 Fai ricerche per allineare ciò che stai imparando con i tuoi obiettivi. Sempre.
Se il tuo obiettivo è quello di svoltare la tua carriera e ottenere il tuo primo lavoro come programmatore oppure d’altra parte, se hai già un lavoro come programmazione e il tuo obiettivo è quello di ottenere una migliore comprensione su come funzionano le macchine, allora certo, forse imparare C o Assembly è una buona idea, ma tutto dipende – sempre – dai tuoi obiettivi.
In questo articolo su Stack Overflow puoi trovare altre risposte per aiutarti ad orientare e capire meglio cosa ruota attorno al mondo del software.
Questi sono i dati sul sondaggio di Stack Overflow, che ha una classificato i linguaggi di programmazione più popolari nel 2019.
I miei consigli per un primo linguaggio di programmazione sarebbero Python o Scheme. Un’altra scelta è Javascript, non perché è perfettamente ben progettato per i principianti, ma perché ci sono così tanti tutorial online per questo.
Peter Norvig
#3 Non puoi conoscere tutto e subito – anche nella programmazione.
Alcuni argomenti fondamentali dell’informatica come le strutture dei dati, l’allocazione della memoria, il funzionamento un parser, la memorizzazione nella cache, gli indici del database ed alcuni paradigmi sul codice sono nozioni molto importanti nel campo dell’informatica.
Ma non sono così rilevanti per iniziare a sviluppare software, siccome alcuni di questi contano meno di quanto tu possa immaginare – inizialmente.
E’ importante conoscere più argomenti possibili, ma ancora è più importante è riconoscere quali siano i concetti che più possano essere utili al nostro personale sviluppo nel campo dell’informatica.
Esempio che voglio apprendere di più sulla progettazione e sviluppo web è opportuno informarmi prima sulle nozioni basilari come quale pattern architetturale utilizzare piuttosto che studiare come migliorare le prestazioni del nostro server web in cui ospitiamo il nostro progetto.
#4 Per diventare programmatore ci sono tante porte ed infiniti portoni.
L’ingegneria del software ha una componente umana essenziale.
La manutenzione del software, ad esempio, è la capacità delle persone di comprendere, trovare e riparare i difetti in un sistema software.
Essa può essere influenzata da alcune nozioni formali d’informatica. Principalmente però – coinvolge in modo cruciale gli umani e la loro capacità di cogliere il significato e l’intenzione del codice sorgente.
Questo è il motivo per cui ci sono molti ingegneri e sviluppatori di software che si sono concentrati sulla risoluzione di un problema con una serie di strumenti, anche quando non avevano un background formativo universitario e ora svolgono lavori da programmatore presso importanti aziende.
Sebastian McKenzie, ad esempio, ha creato Babel senza avere un’istruzione formale in argomenti come grammatiche, parser o progettazione del linguaggio di programmazione.
Informatica e ingegneria del software vanno di pari passo, ma non è necessario comprendere centinaia di argomenti avanzati per ottenere un lavoro da programmatore – apprenderai comunque di più sul lavoro.
Tuttavia, avere una buona comprensione dei seguenti argomenti può aiutare nel proprio percorso d’apprendimento:
- Strutture / algoritmi di dati di base
- Controllo Git o altri software per il controllo versione
- Comandi Terminal / UNIX
- Come funzionano un database e gli indici, nomenclatura ed architettura
- Concetti MVC (back-end vs. front-end)
Attenzione però – non lasciarti sopraffare dai concetti avanzati dell’informatica. È più importante creare software e imparare costantemente e sfidare te stesso durante lo sviluppo.
#5 Dai valore alle tue competenze. Solo tu puoi farlo.
Ci sono innumerevoli articoli su internet su quanto siano fastidiosi, nocivi ed imperfetti i colloqui di lavoro nel campo dell’informatica.
Anche se devo – personalmente – ammettere che in questi ultimi due anni sono nettamente migliorati nelle procedure di selezione e di reclutamento.
L’importante è che, poiché le interviste tecniche sono un argomento importante all’interno del processo di reclutamento e poiché le aziende le fanno in modo diverso una alle altre, è ben necessario capire fin dall’inizio che se alcune aziende ci rifiutano non significa che non siamo tagliati per per quel ruolo.
Ci sono innumerevoli esempi di programmatori che vengono respinti da alcune delle migliori aziende e poi trovano lavoro da qualche altra parte o addirittura fondano la propria azienda.
Per cui – la soluzione migliore è imparare a valorizzare e saper mostrare le nostre top-5 migliori competenze.
Spesso capita di essere i primi a non valorizzare i nostri progressi e quindi perdiamo una grande occasione per misurare il nostro livello di competenza.
Come dice sempre una grande persona da cui ho appreso molto.
If you can’t measure it you can’t manage it.
Peter V.
Per questo impara a conoscerti attraverso auto-valutazioni e/o comprendere i feedback dai tuoi clienti e colleghi.
Misurati i progressi ed in base ai tuoi obiettivi muoviti di conseguenza – andando a migliorare o colmare alcune conoscenze che tu stesso ritieni necessario.
Continua a praticare e ad imparare e alla fine arriverai dove vuoi essere.
Questo porta a quello che forse è il migliore consiglio che potrei dare al me ragazzo ed a tutti i prossimi programmatori – e non.
#6 Osservare senza giudicare.
Questo è più un consiglio da fratello maggiore – lo confesso.
Impara ad osservare ciò che è – semplicemente quello che sta accadendo – senza aggiungere altro, senza stabilire se è giusto o sbagliato, se è bello o brutto.
Anche quando capita a te o sei tu l’oggetto di un evento. Sarà difficile, sarà una sfida.
Questo non ti porterà ad essere distaccato, ma semplicemente osservare le cose per quello che sono, senza giudicarle.
Il giudizio divide e distacca dal progresso – inteso sia livello personale che comunitario.
“Divide et impera” – lo sapevano bene i regnanti del passato: per regnare sul popolo lo dovevano dividere.
Alimentare il senso di divisione applicando la dualità figli di un atteggiamento giudicante aumenta la separazione tra gli individui, così – non più uniti – sarà più facile sottometterli!
Ora nessuno vuole e può sottometterti ci mancherebbe.
Il mio intento è solo consigliarti di cercare di non giudicare, ma di stare ad osservare per capire come sono e quali sono le dinamiche o relazioni all’interno del tuo ambiente lavorati (oppure anche in altre relazioni esterne) questo ti permetterà di acquisire un nuovo tipo di conoscenza.
La più alta forma di intelligenza umana è la capacità di osservare senza giudicare.
J.Krishnamurti