Diventare programmatori sviluppando la giusta mentalità

Diventare programmatori sviluppando la giusta mentalità

Diventare programmatori negli ultimi tempi è diventata un'ambizione di molti. Le aziende ricercano in continuazione questa figura professionale, ma prima ancora di imparare a scrivere il codice però bisogna capire qual è la giusta mentalità e incominciare a pensare come un programmatore.

Stai pensando di diventare un programmatore? Stai praticando questa professione e sei alla continua ricerca di spunti per migliorare? Se la risposta ad almeno una di queste domande è sì, allora questo articolo potrebbe fare al caso tuo.

Negli ultimi tempi, diventare programmatori è senza dubbio un’aspirazione di molti. Prima di tutto perché quella del developer è una professione che al momento sembra non conoscere crisi: da un lato la domanda da parte delle aziende è in forte crescita, mentre dall’altro la mancanza di talenti fa sì che i salari raggiungano livelli molto interessanti. Il mestiere del programmatore però non apre solo le porte ad una carriera redditizia in azienda, ma può offrire un ventaglio di differenti possibilità: una persona dallo spiccato spirito imprenditoriale ad esempio avrà la possibilità di trasformare le proprie idee in realtà in totale autonomia e questo è un vantaggio da non sottovalutare.

D’altra parte però, la quantità di impegno richiesto a chi si sta avvicinando o a chi già svolge questo lavoro non è certamente da sottovalutare, soprattutto perché si tratta di una professione che impone aggiornamento e studio costanti. La tecnologia e i linguaggi di programmazione si evolvono ad una velocità impressionante, di conseguenza stare al passo con i cambiamenti tecnologici e di mercato è fondamentale se si vuole sopravvivere professionalmente in questo ambito.

La buona notizia è che per diventare programmatori non sono necessarie doti particolari o un quoziente intellettivo fuori dal comune, tuttavia è fondamentale assumere un certo tipo di mentalità. In questo articolo cercheremo di entrare nella mente di un developer per capire come pensa e come si approccia al suo lavoro. Attraverso una serie di interviste (che abbiamo pubblicato sul blog di Developer's Hub) abbiamo coinvolto alcuni dei programmatori che collaborano o che hanno collaborato con noi negli ultimi tempi. Abbiamo parlato con loro e ascoltato le loro esperienze e le loro riflessioni. Abbiamo quindi delineato le caratteristiche, le soft skills e gli approcci che servono per diventare degli ottimi programmatori.

Spiegheremo cosa passa per la testa di uno sviluppatore e non parliamo di conoscenze tecniche (per quello ci sono dozzine di articoli sul web), ma di tutte quelle caratteristiche necessarie per arrivare ad avere la mentalità da sviluppatore e l’approccio giusto per crescere professionalmente. Per fare i programmatori bisogna adottare una certa attitudine al problem solving, all’adattamento alle situazioni di stress e avere un metodo efficace di organizzazione.

Ecco quindi come diventare programmatori sviluppando prima di tutto la giusta mentalità per svolgere questa professione.

La teoria non basta

La formazione accademica non detta necessariamente l’ascesa verso il mestiere di developer. Per diventare bravi programmatori non serve avere una laurea o aver sostenuto una gran quantità di corsi o seminari. È però importante partire da una solida base di conoscenze che possono essere ottenute come autodidatta o attraverso l’esperienza sul campo. Esistono strumenti e piattaforme online perfette per questo scopo: Codecademy ad esempio è uno strumento gratuito che ti permette di imparare le basi di programmazione per poi partire con applicazioni pratiche. Il consiglio è non abbattersi solo perché non si ha alle spalle uno studio accademico, l’esperienza si può e si deve anche fare sul campo.

Questo fatto è stato confermato da tutti i developer intervistati, che hanno detto di ritenere marginale l'ottenimento di un titolo in materia, prediligendo un approccio meno teorico e più pratico. Lo sviluppatore Claudio Cipullo, ad esempio, ci ha raccontato di come da ragazzo abbia ricevuto solo una basilare conoscenza informatica, di come abbia iniziato a lavorare in un settore completamente diverso e di essersi interessato solo dopo anni al mondo della programmazione. Non soddisfatto del proprio lavoro in ambito commerciale, iniziò da autodidatta ad approcciare i primi linguaggi di programmazione tramite collaborazioni con piccole realtà che offrivano prodotti digitali e così iniziò la sua carriera da developer. Anche il nostro secondo intervistato, Davide Brienza ha alle spalle una formazione che potremmo definire non proprio tradizionale: per lui il metodo di insegnamento e gli studi teorici non erano sufficientemente stimolanti e ha preferito di gran lunga la pratica in azienda e l’esperienza sul campo tramite persone già formate ed esperte. La cosa più importante se si vuole diventare programmatori è non farsi abbattere e avere il giusto atteggiamento nel voler risolvere i problemi e soprattutto non avere paura di chiedere aiuto. Esistono moltissime community dedicate alla programmazione e che possono essere una miniera di risorse. Il nostro developer freelance Matteo De Prezzo ci ha parlato di Laracasts e di Stack Overflow solo per nominarne alcune. Le risorse sono tante, basta saperle sfruttare.

Il giusto atteggiamento per diventare programmatori

Se la formazione accademica non è fondamentale, diverso è il discorso che riguarda il giusto atteggiamento. Sviluppare e coltivare il giusto approccio a questa professione può aiutarti ad avere successo, al di là delle conoscenze tecniche che potrai ottenere. Chiunque abbia avuto a che fare con la programmazione sa che si tratta di un lavoro di pazienza, molte volte si passano ore a cercare errori apparentemente insignificanti che tuttavia se non risolti impediscono il funzionamento dell’intera struttura di un software.

In questo caso bisogna coltivare lo zen del programmatore: mantenere la calma e sradicare il bug con ogni mezzo a disposizione. Ancora più importante è non arrendersi finché non si ha trovato la soluzione. Che si tratti di un esercizio o di un lavoro per un committente, bisogna essere sufficientemente testardi da affrontare e risolvere il problema. Come ci ha spiegato Davide Brienza, la caratteristica più importante di un developer è la testardaggine: non devi gettare la spugna su un problema, anche se questo ti richiederà ore, giorni o settimane di lavoro, anche perché nel momento in cui riesci finalmente a risolvere il problema provi un senso di grande soddisfazione.

Molti developer alle prime armi si arrendono troppo presto, non tanto perché non sanno risolvere un determinato problema, ma perché non sanno cercare la soluzione. L’allenamento alla ricerca efficace è fondamentale per uno sviluppatore: esistono moltissime community e la sola ricerca su Google può darti grandi risultati se sai come cercare. Ultimo consiglio arriva dal nostro developer Danilo Nicolardi che ci parla della passione necessaria per diventare programmatori. Secondo Danilo la caratteristica fondamentale di ogni buon developer è la voglia di imparare e la determinazione a non smettere mai di aggiornarsi. Danilo racconta come ancora oggi passi intere nottate davanti al pc a programmare e a studiare:

“Non lo faccio perché qualcuno mi obbliga, ma perché mi piace quello che faccio… è come quando dici ad un pilota di moto GP di smetterla di andare in moto perché non ha bisogno di soldi… continuerà ad andarci perché non riesce a privarsi di quella passione”

Freelance vs dipendente

Quando decidi di diventare un developer, vieni presto o tardi messo davanti ad una scelta importante che potrebbe influenzare il tuo intero percorso. La scelta dipenderà molto dal carattere e dalle aspirazioni personali: se prediligi la sicurezza economica tenderai a cercare un posto in azienda, se hai uno spirito più imprenditoriale allora ti affaccerai al mondo dei liberi professionisti. Qualunque sia la tua predisposizione, ci sono alcuni aspetti che vale la pena approfondire e che devi conoscere per fare una scelta consapevole. Se l’obiettivo è diventare uno sviluppatore in grado di destreggiarsi tra le diverse tecnologie e che sia in grado di affrontare diverse tipologie di progetto, secondo gli sviluppatori di BitBoss la scelta migliore è quella del libero professionista o, in alternativa, di iniziare a lavorare in piccole realtà aziendali.

Essere un freelance ti costringe a rimanere costantemente al passo con il mercato e a conoscere tutti i linguaggi e le tecniche di programmazione più utilizzate. Sarà tua responsabilità tenerti aggiornato e riuscire a soddisfare le aspettative dei clienti. Una vita da libero professionista conferisce una maggiore propensione alla crescita professionale perché dà l’opportunità di vedere progetti diversi e di entrare in diverse realtà. D’altra parte però ti mette anche nelle condizioni di dover studiare costantemente. Il già citato developer Giuseppe Petroso con la sua esperienza ha appurato che il lavoro da dipendente è limitante se sei una persona interessata alle novità e se ti piace rimanere sempre aggiornato. Ha poi aggiunto che il fatto di essere libero professionista lo costringe a pensare costantemente alla sua vita lavorativa:

“dovendo essere molto competitivo sul mercato, mi sento più incentivato a rimanere aggiornato ed informato sulle nuove tecnologie…”

Ma per diventare bravi programmatori non bisogna per forza essere liberi professionisti. È ovvio che non tutti abbiano una propensione per il rischio e per l’imprenditorialità: essere freelance ti espone a diverse incertezze come la mancanza di una stabilità economica e il rischio di imbarcarti in progetti troppo grandi e che non si ha la forza di gestire da soli.

Se vuoi coniugare la tua voglia di sicurezza alla tua passione per la programmazione e comunque non vuoi rischiare di adagiarti sugli allori, allora il consiglio che arriva da Davide Brienza è quello di scegliere una piccola realtà piuttosto che una grande azienda. Davide motiva la scelta dicendo che in una startup o in una piccola azienda si hanno più occasioni per farsi notare e per crescere professionalmente. Ci si trova ad essere più coinvolti all’interno di un team anche a livello decisionale e si è costretti ad un continuo aggiornamento.

Programmatori freelance: trovare nuovi clienti

Assumendo che tu abbia scelto la strada del libero professionista, dovrai cominciare a cercare metodi efficaci per mantenere costantemente attivo il flusso di clienti. Il modo migliore per trovarli, secondo i nostri intervistati, è farsi un buon nome come programmatori e sfruttare il passaparola. Tutti i nostri intervistati hanno detto di utilizzare il passaparola e le collaborazioni con altri freelance come principale strumento per allargare la propria cerchia di committenti. La collaborazione è uno step fondamentale, molti freelance vedono gli altri liberi professionisti come competitor, ma non è sempre così. Potrebbe capitare di dover affrontare lavori che inizialmente sembravano affrontabili, ma che dopo un po’ di tempo si rivelano essere troppo grandi per una sola persona, come affermano Cipullo e Nicolardi nelle loro interviste. In quest’ottica è sempre bene tenersi aperti ad ogni evenienza piuttosto che considerare tutti gli altri come concorrenti.

Il passaparola però non basta a crearsi una cerchia che possa garantire un buon afflusso di clienti ed è anche vero che un libero professionista dovrebbe allargare la propria attività oltre i confini territoriali, tanto più che in questo periodo in cui si riversa tanta importanza sullo smart working le aziende sono più propense a gettare lo sguardo lontano per trovare collaboratori. La stessa BitBoss si rivolge a sviluppatori freelance sparsi in tutta Italia e tra gli strumenti online preferiti da tutti i nostri intervistati per trovare nuovi clienti spicca su tutti LinkedIn, canale di acquisizione utilizzato da tutti i developer intervistati. Anche in questo caso poi si parla di community e forum specializzati dove si possono trovare altri programmatori e possibili nuovi clienti.

Riflessioni sul remote working

Entriamo ora in un argomento decisamente attuale: lavoro in ufficio o lavoro da casa, cos’è meglio se si vuole diventare programmatori freelance? Ovviamente le preferenze qui variano in base al carattere e agli stili di vita dei singoli, ma ci sono alcuni aspetti che mettono d’accordo i developer che abbiamo intervistato. L’idea generale è che, per quanto il remote working non sia invalidante per il lavoro di un programmatore, la presenza di un team a stretto contatto possa essere un vantaggio da non sottovalutare. In particolare se il clima tra i colleghi e collaboratori è piacevole, il recarsi in ufficio può solo portare vantaggi.

La principale pecca che è emersa del lavorare in ufficio è legato ai tempi di spostamentoVito Scarangella, project manager in BitBoss ha affermato di perdere circa 28 ore al mese nel traffico di Torino. Questo tempo perso ogni giorno toglie spazio alla formazione, che secondo alcuni sarebbe maggiore in assenza dei tempi dedicati agli spostamenti. D’altra parte alcuni hanno confermato come lavorare da casa non sia debilitante, anzi molto spesso lavorare da remoto porta a passare più ore davanti al pc e ad essere in media più produttivi.

Un fattore interessante emerge dall’intervista con Davide Brienza: per un developer junior potrebbe essere vantaggioso lavorare in ufficio, a contatto con una figura più esperta che possa dare aiuto e supporto. In remote working, per quanto il team possa essere connesso, il developer è solo. Questo non è un problema per una figura esperta, ma per uno sviluppatore in erba potrebbe essere piuttosto debilitante. In sintesi, avendo la possibilità di scegliere, se si vuole diventare programmatori e si ha voglia di cresce e imparare, è decisamente consigliato il lavoro a stretto contatto con il proprio team, sia per motivi di crescita professionale che di team building.

Fare il project manager

Quasi la totalità dei team dedicati all’implementazione di un prodotto digitale prevedono il coinvolgimento di un Project Manager tecnico, ovvero di un responsabile di progetto che possegga anche competenze tecniche, il cui compito è quello di interfacciarsi con il cliente. Anche un programmatore che lavora da solo dovrebbe avere capacità da project manager: cogliere gli input del cliente è fondamentale per interpretare le idee iniziali e trasformarle in attività azionabili sul progetto. Ma come deve essere gestito il rapporto con i committenti? 

Abbiamo posto questa domanda a Vito Scarangella, project manager tecnico di BitBoss. La prima premessa che ci ha fatto Vito è che relazionarsi nel modo corretto col cliente è determinante per quanto riguarda il successo o l’insuccesso di un progetto. Per far sì che il rapporto funzioni e che si crei fiducia reciproca, bisogna dare una visione al cliente aiutandolo ad immaginare il prodotto finale ancora prima di vederlo implementato. Il compito di un bravo project manager è proprio questo: saper trasformare le idee vaghe e confuse del cliente in obiettivi reali e concreti. Da non sottovalutare è anche il discorso legato all’organizzazione del lavoro. In questo senso, il punto di partenza è quasi sempre il primo incontro con il cliente: in questa fase la cosa più importante è stilare un elenco dei concetti chiave che caratterizzano il progetto (Vito ad esempio ci ha raccontato di riportarli su Evernote durante i brainstorming con clienti), tradurli in task su ClickUp e assegnarli ai membri del team di sviluppo con scadenze realistiche. Una volta suddivise le attività, l’attenzione si sposta sul controllo costante del processo di sviluppo e sul rispetto dei tempi prefissati. Spesso per supervisionare lo svolgimento dei compiti in modo pratico ed efficace si ricorre all’uso di tool dedicati come appunto ClickUp, decisamente funzionali se si tratta di avere una panoramica generale sui progressi del progetto.

Un ultimo aspetto da considerare riguarda la gestione dei possibili ostacoli che si possono incontrare durante lo sviluppo, che non sono soltanto legati a possibili bug nel codice o imprevisti di vario genere, ma possono derivare da problemi di comunicazione col cliente stesso. Ad esempio, come ha sottolineato Vito più volte nel corso dell’intervista, la mancanza di chiarezza durante le riunioni e l’eccessivo interventismo del cliente nel processo di sviluppo causano confusione e rallentamenti nello stabilire i requisiti e le funzionalità del progetto. In questi casi il ruolo del Project Manager diventa ancora più centrale: guidato dall’esperienza, deve essere capace di interpretare nel miglior modo possibile le informazioni che ha a disposizione per trasmettere al cliente affidabilità, cercando di fargli capire che si sta lavorando nel suo interesse e che, dal punto di vista tecnico, deve fidarsi delle decisioni del team di sviluppo. Tutto questo evidenzia come diventare programmatori implichi anche acquisire conoscenze manageriali e di gestione dei progetti.

Uno sguardo al futuro del coding

Come cambierà nei prossimi anni il mondo dello sviluppo software? Le opinioni in merito sono tante e fare delle previsioni certe risulta piuttosto complicato, data soprattutto la velocità del progresso tecnologico.

Uno dei possibili scenari emersi dalle nostre interviste prevede un’importanza sempre più impattante del ruolo del project manager: nel futuro è altamente probabile che esisteranno macchine capaci di scrivere codice in completa autonomia, quindi il ruolo chiave sarà occupato da chi saprà controllare questi meccanismi e sarà responsabile della struttura del progetto. Intrinseca a questa tesi c’è l’assunzione che alcuni ruoli verranno completamente soppiantati dalla tecnologia, come ad esempio le figure professionali che sviluppano esclusivamente con PHP, poiché ci saranno dei software che permetteranno di ottenere lo stesso risultato in molto meno tempo.

Ma allora come devono adattarsi ai cambiamenti sviluppatori e programmatori? Secondo Danilo Nicolardi, un primo passo è quello di ampliare le proprie competenze, imparando ad utilizzare nuovi linguaggi e non smettendo mai di migliorare. Questo perché se ci si fossilizza su un solo linguaggio, si è destinati ad essere soppiantati da qualcuno più bravo o dalla macchina stessa, soprattutto in funzione del fatto che l’intelligenza artificiale avrà un ruolo sempre più centrale. Vito Scarangella e Davide Brienza sono concordi con questa tesi: in futuro serviranno meno competenze per sviluppare un prodotto digitale in quanto esisteranno piattaforme che metteranno a disposizione la possibilità di sviluppare non tramite codice, ma attraverso la composizione di logiche e di componenti che generano un risultato complesso. Di conseguenza, se questi software saranno a disposizione di tutti e la scrittura del codice sarà automatizzata, allora il ruolo dello sviluppatore diventerà quello di istruire le macchina per far sì che venga generato il risultato desiderato.

Dire con certezza quale sarà il futuro di questa professione risulta ad oggi ancora troppo difficile. Tuttavia, con alte probabilità, nei prossimi anni si verificheranno dei cambiamenti importanti che impatteranno significativamente sulle tecnologie e sulle modalità del lavoro. Nonostante questo tutti gli intervistati si sono dimostrati positivi sul fatto che non ci sarà un calo della domanda e che, se si vuole diventare programmatori, sapendosi reinventare e stando al passo con le tendenze tecnologiche non si correrà il rischio di soffrire crisi occupazionali.