Un buon programmatore (ideale)

by Giuseppe Lanzi on 29 giugno 2010

Eccolo qui!

Mi è capitato di leggere un articolo di Alessandro Bottoni intitolato Come riconoscere un buon programmatore, e ho trovato qualcosa su cui riflettere. L’articolo è ispirato a sua volta da How to recognize a good programmer di Daniel Tenner, e trae qualche conclusione in più.

Entrambi sostengono che un buon programmatore può essere riconosciuto da alcuni indicatori positivi, di converso un programmatore non così in gamba può essere riconosciuto da altri indicatori negativi. Li riporto tutti copiandoli dall’articolo di Bottoni.

Indicatori positivi

  1. Hanno una evidente passione per la tecnologia.
  2. Vivono la programmazione come un hobby.
  3. Se incoraggiati, vi parleranno di un qualunque argomento tecnico fino a sfinirvi.
  4. Spesso possono vantare numerosi progetti personali (alcuni dei quali spesso sono di una certa rilevanza) che hanno sviluppato nel corso degli anni.
  5. Studiano nuove tecnologie per conto proprio.
  6. Hanno una opinione precisa riguardo a quali siano le tecnologie più adatte per questa o quella applicazione.
  7. Sono molto a disagio di fronte all’idea di lavorare con qualche tecnologia che non ritengano adatta allo scopo.
  8. Chiaramente intelligenti, possono sostenere una conversazione su una grande quantità di argomenti diversi tra loro.
  9. Hanno iniziato a programmare molto tempo prima di arrivare all’università od al lavoro.
  10. Portano avanti qualche grosso progetto personale che non appare sul curriculum.
  11. Conoscono una grande quantità di tecnologie non correlate tra loro e non è detto che questa loro conoscenza risulti dal curriculum.

Indicatori negativi

  1. Vivono la programmazione come lavoro.
  2. Non amano avventurarsi in discussioni tecniche sui prodotti e le tecnologie, come quelle che si svolgono spesso davanti alle vetrine dei negozi, nemmeno se vengono incoraggiati a farlo.
  3. Studiano nuove tecnologie grazie ai corsi aziendali.
  4. Vi dicono che sono a loro agio con qualunque tecnologia voi decidiate di usare. Per loro, tutte le tecnologie sono buone.
  5. Non sembrano particolarmente svegli.
  6. Hanno iniziato a programmare all’università.
  7. Tutta la loro esperienza di programmatori è diligentemente elencata nel curriculum.
  8. Si specializzano in una o due tecnologie (per esempio java server-side) e non hanno nessuna esperienza al di fuori di quei settori.

Come prima reazione ho pensato “è proprio vero, è davvero così”, ho anche avuto il piacere di riconoscere nei miei colleghi molti di questi cliché. Poi però ho evoluto la mia idea: tutti gli 11 indicatori positivi citati sono palesi segnali di un potenziale ottimo programmatore, ma non bastano.

Immaginiamo di avere di fronte qualcuno in cui siano presenti tutti i segni positivi di Tenner, ma che non esiti a scartare l’implementazione scelta insieme ai colleghi a favore di un’altra tecnicamente più interessante, oppure che si accanisca senza limite per ottenere la soluzione giusta in uno stile perfetto, o ancora che forte delle sue idee personali non consideri seriamente le obiezioni che i colleghi gli pongono. Non vi viene in mente nessuno? A me sì.

Agli 11 indicatori positivi aggiungerei almeno questi:

  1. attidutine al lavoro di squadra: necessaria per poter adottare i metodi scelti dal gruppo anche non condividendoli.
  2. buon senso: indispensabile per ricercare il giusto compromesso tra sforzo e risultato.

Ho saputo che ci sono aziende che dopo innumerevoli colloqui di lavoro hanno rinunciato ad assumere perché non hanno trovato nessuno che soddisfi tutti questi requisiti.

Ma per sviluppare applicazioni è proprio necessario essere smanettone, geek o nerd?

Picture: aldoaldoz

{ 4 comments… read them below or add one }

1 Alessandro Bottoni 29 giugno 2010 alle 12:16

“Agli 11 indicatori positivi aggiungerei almeno questi:

1. attidutine al lavoro di squadra: necessaria per poter adottare i metodi scelti dal gruppo anche non condividendoli.
2. buon senso: indispensabile per ricercare il giusto compromesso tra sforzo e risultato.”

Come potrei non essere d’accordo con queste integrazioni? Tuttavia, queste caratteristiche sono implicite nel profilo descritto. Come potrebbe essere privo di buon senso o incapace di lavorare in gruppo una persona che mostra i segni positivi che elenca Tennner?

“Ho saputo che ci sono aziende che dopo innumerevoli colloqui di lavoro hanno rinunciato ad assumere perché non hanno trovato nessuno che soddisfi tutti questi requisiti.”

Confermo. Succede molto più spesso di quanto si possa pensare. La ragione di fondo di questo comportamento è che in certi tipi di team NON si può inserire un programmatore qualunque. Ci vuole un “hacker” che sia più o meno dello stesso livello delle persone con cui dovrà lavorare, pena un terrificante rallentamento dei lavori dovuto alla necessità di formarlo.

“Ma per sviluppare applicazioni è proprio necessario essere smanettone, geek o nerd?”

Dipende dal tipo di applicazione. Nel caso dei videogame “best seller”, ad esempio, ci vuole decisamente un hacker.

Ciao

2 Riccardo Bianco 30 giugno 2010 alle 08:35

Domanda semplice, risposta meno semplice. Con l’esperienza ho capito che molto dipende dall’ “aria che tira” all’interno del posto di lavoro, sembra banale ma non è scontato, se la mentalità del posto di lavoro è chiusa e non da alcuna soddisfazione oltre alla paga mensile, ogni entusiasmo verrà a mancare. Reputo questo un punto cruciale, smanettoni si diventa, non si nasce.

3 Giuseppe Lanzi 5 luglio 2010 alle 14:57

Non avevo inteso quelle caratteristiche come implicite, un conto è essere bravo a scrivere codice e un altro è avere a mente il bene dell’azienda.
“Dipende dal tipo di applicazione”, sono d’accordo, ma c’è molto altro software da implementare che non dovrebbe richiedere quel livello di skill.

4 giovanni 18 novembre 2013 alle 12:03

Salve, devo realizzare un social network dedicato al mondo della musica,sono alla ricerca di programmatori.

Leave a Comment

Previous post:

Next post: