Ovvero: tutto quello che vorresti sapere PRIMA di iniziare una carriera nel mondo dello sviluppo Software e capire se è fatta per te.
- Pensiero Logico
- Capacità di lavorare in autonomia
- Capacità di Analisi e problem solving
- Capacità relazionali
- Capacità di ricerca delle soluzioni
- Spirito di adattamento
- Abitudine a "navigare a vista"
- Non avere paura di sbagliare
- Non sentirsi mai "arrivati"
- Apertura Mentale
- Estremamente creativo
- Impari ogni giorno
- Ogni situazione è formazione
- Non è per forza necessaria una laurea (ma fa comodo)
- Non sono necessarie grandi competenze matematiche (solo in determinati ambiti)
- Si può lavorare agevolmente da remoto
- E' una crescita continua
- Si sperimentano tecnologie nuove
- Si può crescere professionalmente ed ambire a posizioni importanti
- C'è sempre richiesta
- Non serve una certificazione
- Vivrai costantemente con la sindrome dell'impostore
- Richiede una formazione continua
- Non si stacca mai mentalmente
- Non sarai mai contento di te stesso e del codice che hai scritto ieri
- Ci si misura continuamente con problemi ignoti
- Si fa una vita prevalentemente sedentaria
- Può essere alienante
- Non formarsi equivale a fare un normale lavoro d'ufficio
- Senza una guida ci si perde molto facilmente
- Al giorno 0 non si ha chiaro di quanto sia vasto questo mondo
- Manca il tempo di imparare in modo approfondito
- Ci si rende conto tardi che ci sono tante cose da imparare
- Non si fa mai una sola cosa
- Non si lavora tendenzialmente mai sulle cose per cui abbiamo studiato all'inizio
- Senza cambi di ambiente, potrebbe risultare noioso
- Git
- Kanban Boards
- Text Editors o IDE
- Bash
Indubbiamente la caratteristica regina. Attraverso il pensiero logico lo sviluppatore risolve tutti i problemi che gli si pongono davanti. Approcciarsi ad un problema applicando una logica, risolvendolo prima attraverso un ragionamento, aiutandosi con diagrammi o pseudo-codice, senza nemmeno scrivere una riga di codice, è la caratteristica che permette agli sviluppatori di riuscire a risolvere situazioni molto complesse, ed avere chiaro come partire da un punto A e raggiungere un punto B.
Al punto precedente si collega la capacità di analizzare e risolvere problemi. Raramente lo sviluppatore si trova davanti a situazioni semplici e di immediata risoluzione. Il più delle volte è necessario partire da un problema, scomporlo in piccoli pezzi, effettuandone quindi un'analisi accurata nei minimi dettagli. Da qui, attraverso la logica, si potrà arrivare più facilmente alla soluzione di ogni singola attività.
Sia che lo sviluppatore lavori in team, remoti o on-site, o che lavori in modo indipendente, lo sviluppatore deve avere un buon grado di lavorare in modo autonomo, senza richiedere continuamente l'intervento di terze persone per proseguire nel proprio lavoro. Persone che devono essere seguite, che hanno bisogno di costante supporto e sostegno, e che non progrediscono senza interventi esterni, a tendere risultano diventare un problema per gli ambienti in cui lavorano.
Uno dei luoghi comuni riguardo i developer è che siano persone solitarie e chiuse. Al di là degli aspetti caratteriali, è necessario che qualunque developer sia in grado di comunicare nel miglior modo possibile per poter rendere il proprio lavoro, e quello degli altri, più fluido. Uno sviluppatore che non è in grado di spiegare una soluzione ad un problema, o come il proprio codice funziona, o che, peggio ancora, non si rende disponibile ad altri membri del team, diventa un elemento critico che rischia di minare la buona riuscita dei progetti.
Non è richiesto che uno sviluppatore conosca tutto a memoria: Google, Github e Stackoverflow sono i nostri migliori amici. Ma attenzione, è molto facile cadere nel tranello di applicare soluzioni sbagliate, o peggio ancora a caso senza capirne bene il funzionamento. Questo vuol dire sapere padroneggiare il nostro lavoro, sapere esattamente di cosa abbiamo bisogno, e di conseguenza fare le ricerche giuste.
Questo è un punto ricorrente sotto varie forme. Adattarsi a situazioni diverse è sicuramente una caratteristica chiave per diventare buoni sviluppatori. Le sfide ed i contesti sono sempre diversi, sapersi adattare velocemente a realtà e situazioni nuove permette di rimanere sempre produttivi.
Legato allo spirito di adattamento, molto di frequente lo sviluppatore deve addentrarsi in ambiti di cui non ha particolare conoscenza, deve misurarsi con situazioni mai viste prima, in cui tutte le skills menzionate diventano importanti per non sentirsi persi.
Quello che scriviamo non sono altro che bit. Possiamo sempre correggere e tornare indietro. I migliori sviluppatori sono coloro che hanno sperimentato tanto, e sbagliato tanto. Dagli errori, e dal confronto, nascono le competenze in questo settore. Non è solo conoscenza, ma è moltissimo esperienza.
Il momento in cui un developer pensa di conoscere bene una cosa, è il momento in cui deve rimettersi a studiare. Non esiste un punto in cui si può dire di conoscere tutto quello che serve. Quello che sappiamo oggi, domani potrebbe non servire più. Smettere di imparare è il miglior modo per rimanere lontani dal presente.
La tecnologia avanza ad una velocità tale per cui ogni giorno esistono soluzioni nuove ad un problema che avevamo in precedenza. Evitare di provare qualcosa solo per la paura dell'ignoto equivale a non voler migliorare se stessi. Questo non vuol dire correre dietro a qualsiasi novità o moda, ma vuol dire agire consapevolmente nell'ottica di un miglioramento continuo.
Scrivere codice è una delle attività più creative, più di quanto si possa immaginare. Attraverso il software si possono risolvere problemi concreti, in modi sempre diversi, nonostante dall'esterno sia difficilmente percepito il valore di ciò che viene fatto. Il bello della programmazione è inventarsi un modo per risolvere problemi della vita quotidiana.
Ogni giorno costituisce una nuova sfida da raggiungere. Un nuovo requisito, un nuovo obiettivo da raggiungere. Ogni giorno è adatto per imparare un modo diverso di risolvere un problema e migliorarsi.
Questo aspetto sconvolge molte persone. Tantissimi hanno paura di sbagliare, di fare le cose non nel modo in cui vada fatto. In realtà, sbagliando si migliora, perchè permette di imparare da ciò che abbiamo fatto male in precedenza, apportando i giusti correttivi. Abbracciando l'errore riusciamo ad imparare più velocemente.
Uno dei più grossi luoghi comuni di questo ambito. Dal di fuori, potrebbe sembrare che per fare un lavoro di concetto, in cui si affrontano molte situazioni tecniche, si possa fare solo se laureati. Oppure perchè nelle offerte lavorative la presenza della laurea viene richiesta spesso. Nella realtà dei fatti, sopratutto in ambito Web, non è praticamente mai necessaria. In alcuni ambiti ben precisi, la laurea permette di ottenere conoscenze accessorie (come quelle Matematiche, lo vedremo in seguito) e forma mentis, ma di fatto per la stra-grande maggioranza dei casi, si può tranquillamente lavorare senza laurea. Ciò che più conta è la capacità di approcciarsi ai problemi, risolverli in modo logico e di conseguenza attraverso la programmazione.
Gli ambiti in cui è sicuramente utile (ma non necessaria) avere una Laurea sono:
- Data Science
- Computer Vision
- Machine Learning / Intelligenza Artificiale
- Game Development
- Gestione Server / Reti
Un altro enorme luogo comune. La Matematica non è (quasi) mai necessaria. Possiamo identificare gli ambiti in cui la Matematica è necessaria in questo elenco:
- Data Science (Algebra Lineare, Probabilità e Statistica)
- Machine Learning
- Intelligenza Artificiale
- Game Development (trigonometria)
- Programmazione a basso livello
Durante la pandemia del 2020, il mestiere del Developer è stato quello che meno di tutti ha risentito della situazione. Coloro che già facevano questo mestiere erano già abituate a comunicare e lavorare online. Per loro non è stato un problema farlo da un altro luogo. Questo apre possibilità per tutti, anche per chi vive al di fuori delle grandi città o metropoli, di lavorare agevolmente.
- E' una crescita continua
- Si sperimentano tecnologie nuove
- Si può crescere professionalmente ed ambire a posizioni importanti
- C'è sempre richiesta
- Non serve una certificazione