Perché non ci sono più tanti programmatori?

[Voti: 132    Media Voto: 4/5]

Ghost Code III

Questo articolo è la traduzione della risposta data da Brian Feldman alla domanda Why don’t more people work as programmers? apparsa su Quora e ripresa dal seguente articolo su Forbes.

Diventare un buon programmatore è incredibilmente difficile e non accade rapidamente.

Non possiamo aspettarci di piantare alcuni alberi e ottenere la crescita di sequoie di 2000 anni in una notte, indipendentemente dalla richiesta per esse.

I tratti della personalità

  • In sostanza bisogna essere degli autodidatti per imparare la programmazione. Ci vogliono anni di pratica per imparare tutto il necessario per andare oltre un semplice livello base dove puoi scrivere piccoli programmi che funzionano. Nessuno è mai diventato un grande programmatore semplicemente seguendo corsi o leggendo libri. Ci vogliono ore di pratica. E contrariamente alle credenze popolari, i programmi dell’università non insegnano a programmare. I programmi dell’università insegnano la teoria.

  • Come programmatore, hai bisogno di avere una tenacia quasi illimitata per poter continuare a provare a risolvere problemi, correggere e sviluppare cose. C’è bisogno di una persona speciale per perseverare così tanto, specialmente quando spesso sembra che non si stia facendo alcun progresso. Questo è più o meno un tratto della personalità e non avere questo livello di perseveranza è sufficiente per spegnere la maggioranza delle persone che non lo possono avere dalla professione.

  • Devi essere eccezionale in matematica e nella risoluzione di problemi. La programmazione ha un sacco di problem solving.

  • Devi avere un memoria eccellente a breve e a lungo termine, in modo che tu possa manipolare più cose nella tua testa contemporaneamente e ricordare quello che hai scritto un mese fa.

  • Devi avere una vasta comprensione di come le cose interagiscano tra loro e come progettare una buona architettura. Se cambio questa piccola cosa qui, cosa potrei rompere da qualche altra parte?

  • Devi avere un’incredibile attenzione ai dettagli. Vicino non è sufficiente nella programmazione. Dimentichi un punto e virgola? Il programma non compilerà! Sbagli il nome di una funzione? Il programma potrebbe fare qualcosa di completamente differente da quello che avevi previsto.

  • Non avere questi tratti della personalità è sufficiente per escludere la maggior parte delle persone.

La materia conta

  • Devi avere una profonda comprensione delle strutture dati e delle classi e devi sapere quando e come usarle.

  • Devi avere familiarità con librerie che sono già state sviluppate in modo che tu non debba reinventare la ruota.

  • Devi avere familiarità con un sacco di algoritmi base e avanzati, di nuovo, in modo che tu non debba reinventare la ruota.

  • Spesso devi conoscere i limiti dell’hardware su cui sta lavorando in modo da poter fare cose come gestire la memoria correttamente ed evitare di consumarla tutta, o utilizzarla opportunamente in modo da eliminare lo spreco di dati nei trasferimenti all’interno del processore e velocizzare così l’esecuzione.

  • Quindi sai programmare. Grande! Ma sai nulla della struttura dei pacchetti, di TCP/IP, HTML, CSS, progettazione di interfacce utente o database? I programmi non girano isolati.

  • Ci sono tonnellate di roba che devi sapere e che continua a cambiare! Non è qualcosa in cui puoi essere veramente grande a meno che non sia il tuo obbiettivo principale. Non puoi essere un “programmatore della domenica”.

Ambiente di lavoro

  • Hai bisogno di avere lunghi periodi di tempo ininterrotto in modo da non perdere la concentrazione quando stai programmando o imparando a programmare. Molti ambienti di lavoro lottano per offrire questo. Il telefono squilla? Grande, serviranno 15 minuti per recuperare il filo logico.

  • Spesso devi prendere delle decisioni al volo su compromessi. Certo, potresti scrivere un programma che possa gestire ogni singolo caso, ma quanto spesso qualcuno inserirà davvero “zero” come input? Inoltre, siamo in ritardo ed è più importante avere qualcosa di funzionante adesso.

  • Sopra a tutto ciò, il linguaggio di programmazione che pensavi sarebbe stato la prossima grande cosa si è rivelato una moda passeggera e nessuno lo sta più usando 5 anni più tardi. Adesso sei sul prossimo linguaggio fico che potrebbe non essere utilizzato prima dei prossimi 5 anni. Devi costantemente rimanere aggiornato.

Oltre a ciò ci sono gli aspetti manageriali.

I Programmatori vengono spesso trattati come operai. Le persone senza talento nella programmazione (e meno senso degli affari) sono spesso responsabili di progetti. Loro pensano che i programmatori siano ingranaggi all’interno di macchine. La verità è che i programmatori sono artigiani e per ottenere i migliori risultati da un progetto la cosa più saggia da fare sarebbe quella di chiedere a chi è esperto nella programmazione come le cose andrebbero fatte! Praticamente tutti i progetti finiscono per sforare il budget e in ritardo, obbligando i programmatori a lavorare tonnellate di ore più del necessario per consegnare un prodotto progettato e testato male. I grandi programmatori si accorgono che non vengono pagati più di quelli mediocri perché il management non sa capire la differenza e, oltre a ciò, devono fare lavoro extra per compensare il basso livello dei colleghi. E i grandi programmatori che parlano e cercano di migliorare le cose vengono spesso intimiditi dai managers i quali tentano spesso di sbarazzarsene. Questo è sufficiente per capire come mai le buone persone lascino perdere la professione, specialmente da quando ci sono un sacco di altre opportunità. Anche solo i programmatori medi, posto che siano abbastanza bravi a interagire con le persone, hanno sufficienti capacità per avere successo in molte altre professioni. La programmazione è qualcosa che può essere facilmente trasferita al di fuori, ma non all’interno.

E’ meno probabile che i bravi programmatori siano casualmente in cerca di lavoro.

E’ facie trovare programmatori. E’ difficile trovare programmatori bravi. I programmatori mediocri sono probabilmente alla costante ricerca di lavoro. I programmatori bravi, se l’azienda si accorge che sono bravi, lo sono probabilmente molto meno poiché l’azienda fa qualsiasi cosa per aggrapparsi a loro. E quando lo fanno sono esigenti su dove vogliono lavorare – il che spiegherebbe perché molte aziende si lamentano che “non ci sono bravi programmatori disponibili, tutto quello che riusciamo a trovare sono programmatori mediocri”. Come è stato detto altrove, un buon programmatore può certamente valere molte volte quello che un programmatore medio vale e un programmatore mediocre può in realtà avere un valore negativo. Ed è veramente dura (se non impossibile) per i programmatori medi e mediocri diventare dei buoni programmatori – e certamente il rischio non vale l’investimento per nessuna startup quando si suppone che sia concentrata su sviluppare qualcosa rapidamente per averlo fuori dalla porta.

Garda Informatica

Garda Informatica

Garda Informatica sviluppa software su misura nella forma di Web Application, App Ibride per iOS/Android/Windows Phone, Crawler Web, Gestionali Web o semplici Connettori per l'integrazione tra software di terze parti.
Garda Informatica

8 commenti su “Perché non ci sono più tanti programmatori?”

  1. Quello che ho sempre pensato pure io. La programmazione è uno studio che va affrontato solo con la pratica. L’università non ha mai sfornato nessun buon programmatore. Soprattutto qui in italia.

    1. Alla pratica va affiancata la conoscenza: l’università non ha mai sfornato buoni programmatori (perchè devi sudare molti anni, notti comprese, per fare esperienza pratica) , ma senza una profonda conoscenza teorica delle architetture hw e sw, degli algoritmi, delle metodologie di trattamento dei dati, dei compilatori, ecc., non hai le basi teoriche e metodologiche che ti permettono di avere un quadro d’insieme e una visione del progetto.
      Questo non è vero solo nel caso in cui devi limitarti a fare un programmino in access per la gestione della “videoteca”.
      Nella programmazione di qualità su grandi progetti teoria e pratica sono entrambe necessarie.

      1. E probabilmente molti che escono dall’Università non vogliono fare a vita i programmatori!

  2. Parole di grande saggezza. Il vecchio detto “chi più spende, meno spende” si applica anche ai programmatori: un senior esperto costa di più, ma produce programmi affidabili e solidi.
    Purtroppo molte aziende non lo capiscono e vedono solo che “costa di più”

  3. Perfettamente d’accordo sul fatto che l’università italiana non insegna a programmare. Io faccio fisica da un po’ di anni e so perfettamente che una volta che dovrò entrare nel mondo del lavoro chiunque esigerà da me che io sappia programmare. Bene, a me nessuno ha mai insegnato veramente a programmare. So abbastanza bene la sintassi di qualche linguaggio, ma se qualcuno mi chiede di scrivere un programma che faccia una serie di cose allora non c’è verso che io ci arrivi, perché mi manca totalmente l’allenamento alla logica e al ragionamento astratto, nonchè la creatività, tipici del programmatore e men che meno sono autodidatta quando si tratta di imparare delle cose che non mi interessano (tutto ciò che è legato col ragionamento astratto proprio non fa per me).
    Se io fossi l’unico in questa situazione, me ne farei una ragione. Ma qui vedo tantissima gente tra i miei compagni di corso che ha gli stessi miei problemi. Siamo tutta gente con la mente poco elastica oppure nessuno ci ha mai insegnato a programmare veramente?

    1. Gente con la mente poco elastica. Non si insegna a programmare, si nasce con l’istinto di farlo. Ho appena finito la scuola e la maggior parte dei miei compagni, pur avend quel “qualcuno che insegna a programmare” non sanno fare nulla di buono. Sono sempre stato avanti rispetto agli altri, semplicemente perché aspettare l’insegnamento di un altro in questo ambito è uguale a perder tempo. Così quando ci venivano spiegate delle cose io già le sapevo da tempo. Ho imparato quasi tutto da solo passando del tempo a fare, e ad oggi, se qualcuno mi propone di sviluppare un progetto, in meno di 10 secondi ho già in mente la struttura del codice che dovró scrivere. Quindi la risposta è semplice mente e personalità inadatte.

  4. Lavoro da molti anni nel campo della programmazione. Sono completamente d’accordo con la risposta completa ed articolata data nell’articolo. Concordo con l’incompetenza del management aziendale in generale. E’ qui che risiede il problema.

  5. Dopo un paio di anni come programmatore, ho deciso di abbandonare questo settore: non è stato particolarmente redditizio, inoltre molto spesso e volentieri le ore straordinarie non mi sono state retribuite (e succede a molti altri programmatori).
    Insomma, pochi (se non nulli) riconoscimenti (forse qualche pacca sulle spalle), nessun ente preposto a tutelare questa categoria professionale, ed un contratto che segue le stesse regole di un contratto metalmeccanico (con tutto il rispetto per il lavoro degli operai, ma è assurdo applicare le stesse tutele e gli stessi criteri di tutela anche per chi passa molte ore di fronte ad un computer… ).
    È un lavoro che richiede continuo aggiornamento e studio, ma come si accenna in questo articolo, ci si scontra con una realtà in cui chi ti propone di realizzare il progetto, responsabili o clienti, a malapena sanno masticare qualcosa di informatica.
    La salvezza, forse, è per chi si trova un analista programmatore che fa da tuo responsabile e si occupa lui di “scontrarsi” con chi non ne capisce quasi nulla di informatica…
    Ciò comunque non toglie che a tanta fatica e sacrifici non corrispondano migliori condizioni: in genere, non ho sentito un solo programmatore junior o senior, esperto o “smanettone”, che sia veramente soddisfatto della propria vita lavorativa (eccetto qualche nerd…)
    E qualcosa di simile succede anche in diversi Paesi all’estero.
    Credo che se le cose non cambieranno prima o poi, questo lavoro lo faranno sempre meno persone, crisi permettendo.

I commenti sono chiusi.