Google Developer Group (GDG) Lazio-Abruzzo

Propongo agli sviluppatori particolarmente spinti verso l’innovazione tecnologica, questa interessante iniziativa:

Google Developer Group (GDG) Lazio-Abruzzo – Idee e tecniche per sviluppatori interessati a tecnologie innovative

Google-Developers

Cosa significa GDG L-Ab?
gdg-labGoogle Developers Group Lazio Abruzzo. In pratica persone a Roma e dintorni che fabbricano software e si inventano applicazioni Web e Mobile (non solo Google) … e che si divertono a farlo.Gente che cerca innovazione per creare ulteriore innovazione, non solo tecnologica, ma anche sociale.I GDG sono in tutta Italia e nel Mondo, sono indipendenti e liberi ma aiutati e coordinati da
Google.

Ecco i siti di riferimento:

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2013/01/24/google-developer-group-gdg-lazio-abruzzo/.

Un pò di sapere è pericoloso: “Ars longa, vita brevis”

Da quando ho messo su questo blog articoli tecnici, mi arrivano spesso mail per informazioni sulla risoluzione di problemi di programmazione, soprattutto quelli legati all’iOS di Apple, visti alcuni processi “rognosi” in cui spesso ci si sbatte.
La mia idea è che si sta procedendo verso quella che definirei “standardizzazione” del linguaggio, che facilita la programmazione, portando anche i non esperti del settore a “cimentarsi” nello sviluppo dei software.

Quella che scrivo è una riflessione che si può applicare ai settori lavorativi più disparati, ma che qui vorrei particolareggiare per quello in cui opero, quello dello sviluppo di software appunto.

Innanzitutto, parto da una citazione famosa di Socrate: “Scio ne sapio” (“Io so di non sapere”). La citazione è rivolta (e venne rivolta) con un atteggiamento polemico contro coloro che pretendono di sapere troppo. Ma il “non” sapere è uno stato normale dell’uomo.
La presente riflessione è nata dopo aver letto una mail, e di cui qui vi riporto un estratto:

[…] So utilizzare abbastanza bene Windows 7; non sono un programmatore, ma mi interesserebbe prendere delle lezioni sull’utilizzo dello smartphone e tablet Apple (rispettivamente iPhone e iPad). Sono appassionato di questi apparecchi, ma non so utilizzarli. […]

Cosa ho pensato? La curiosità è lecita, ma non si può pretendere di imparare a programmare così da un giorno all’altro e, sicuramente, non è il caso di partire da Objective-C per farlo.

Il punto di partenza potrebbe essere quello di trovare un “linguaggio padre”, come può essere C/C++/Java per i linguaggi “tipati” o Python/PHP per quelli “non tipati”.
L’importante è iniziare a pensare alla programmazione. Non programmare.

Mi ha molto affascinato l’articolo di Peter Norvig (padre dell’intelligenza artificiale) dal titolo: “Teach Yourself Programming in Ten Years“, e di cui riporto il link all’ottima traduzione di Fabio Tessitore): Imparara a programmare in 10 anni…perchè vanno tutti di fretta?

Vi invito a leggerlo tutto di un fiato. Io da qui ho estrapolato le seguenti frasi/citazioni:

  • La conclusione è che le persone vanno molto di fretta quando devono imparare qualcosa sui computer, oppure che i computer sono qualcosa di favolosamente facile da imparare rispetto a qualsiasi altra cosa.
  • Non ci sono libri su come studiare Beethoven, la Fisica dei Quanti o perfino l’Addestramento dei Cani in pochi giorni.
  • Come disse Alexander Pope, “un po’ di sapere è pericoloso“.
  • Qual è il punto? Alan Perlis una volta disse: “Un linguaggio che non influenza il modo di pensare la programmazione, non vale la pena di essere conosciuto. È possibile che debba imparare una piccola parte del C++ (o più probabilmente, qualcosa del tipo JavaScript o Flash) perché hai bisogno di interfacciarti con qualcosa di esistente per portare a termine un compito specifico. Ma allora non stai imparando a programmare; stai imparando a completare quel compito”.
  • Alcuni ricercatori (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) hanno dimostrato che sono necessari circa dieci anni per sviluppare esperienza in una gran varietà di campi, inclusi il gioco degli scacchi, la composizione musicale, la telegrafia, la pittura, il suonare il pianoforte, il nuoto, il tennis, le ricerche in neuropsicologia e in topologia.
  • La chiave è la pratica intenzionale: non semplicemente farlo ancora e ancora, ma impegnarsi in un compito appena oltre le proprie abilità, provare, analizzare il proprio rendimento mentre e dopo l’esecuzione e correggere gli errori. Quindi ripetere. E ripetere ancora. (Vedi l’articolo “Lo sgobbone batte l’intelligente“)
  • Samuel Johnson (1709-1784) pensava ci volesse anche di più: “L’eccellenza in un campo qualsiasi può essere raggiunta solo attraverso il lavoro di una vita; non si può acquistare ad un prezzo inferiore“. E Chaucer (1340-1400) aggiunse La vita è così breve, l’arte così lunga da imparare. Ippocrate (c. 400 AC) è noto per la massima “Ars longa, vita brevis“, che è parte della citazione più lunga “Ars longa, vita brevis, occasio praeceps, experimentum periculosum, iudicium difficile, che in Italiano suona come” –  [La vita è breve, l’arte è lunga, l’occasione è fugace, l’esperienza ingannevole, il giudizio difficile]. Sebbene in Latino, “ars” può significare sia arte che mestiere, nell’originale Greco la parola “techne” significa solo abilità, non arte.
  • Lavora su progetti insieme ad altri programmatori. Sii il miglior programmatore in alcuni progetti; sii il peggiore in altri. Quando sarai il migliore potrai testare le tue abilità di guidare un progetto e ispirare gli altri con la tua visione. Quando sarai il peggiore imparerai cosa fanno i maestri, e cosa non piace fare loro (perché lo faranno fare a te).
  • Perlis dice che i migliori hanno un talento che prescinde dall’allenamento. Ma da dove viene questo talento? È innato? O viene sviluppato con la diligenza? Auguste Gusteau (lo chef di Ratatouille) dice: “Tutti possono cucinare, ma solo gli impavidi possono essere grandi.” Penso sia volontà di dedicare una larga parte della propria vita alla pratica. Ma forse “impavidi” è un termine per sintetizzare questo concetto. Oppure, come dice Anton Ego, il critico di Gusteau: “Non tutti possono diventare grandi artisti, ma un grande artista può venir fuori da ovunque“.

Non c’è altro da aggiungere penso. Occorre aver la coscienza di non sapere le cose, per studiarle, provarle e confrontarsi con gli altri, migliorandosi continuamente. Comunque, il segreto per sopportare lo sforzo è quello di fare le cose con passione.

 

Vita da programmatore (da “Il MessaGGiero”)

(Tratto da “Il MessaGGiero”: http://www.messaggiero.it/weblog/pivot/entry.php?id=7 )

La definizione per il termine “Programmatore” su Wikipedia http://it.wikipedia.org/wiki/Programmatore riporta testualmente:
Il programmatore (o coder) è il professionista che scrive dei programmi software in un determinato linguaggio di programmazione“.

Non so voi ma io leggendo questa definizione mi sento più un chip elettronico che una persona in carne ed ossa.

La mia definizione di programmatore è molto diversa da quella ufficiale, ossia:

Il programmatore è chi, pensando di far soldi come professionista dei computer, si ritrova a fare la fame per il profitto di qualcun altro“.

Molta gente del settore, si sente offesa se chiamata semplicemente “programmatore“, appellandosi al fatto che esistono varie qualifiche.

La lista delle qualifiche è la seguente:

1 – Programmatore junior:
Il povero disgraziato che inizia quest’ infame carriera ignaro del proprio destino.

2 – Programmatore senior:
Il povero diavolo che ormai si è resoconto della fesseria che ha fatto ma non può tornare indietro.

3 – Analista Programmatore:
Il povero diavolo al punto 2 che dopo aver chiesto un aumento all’azienda, invece dei soldi, gli rifila la qualifica.

4 – Analista:
Il povero diavolo al punto 3 che dopo aver chiesto nuovamente all’azienda un aumento gli avanza la qualifica congratulandosi con lui, con sorrisi a 44 denti, per il salto di carriera e per le tante possibilità che il nuovo titolo gli offrirà per il suo futuro.
Il povero deluso, si renderà conto solo il giorno dopo, che continua a fare il programmatore con lo stesso stipendio di prima.

Nell’immaginario comune, si pensa al programmatore come una persona introversa, occhialuta che programma tutto nella sua vita dal software che scrive fino alla cadenza oraria per andare a fare la pipì!

Tutto questo è assolutamente errato!. La vita del programmatore è una vera avventura, volendo usare un termine informatico è una vita assolutamente “RANDOM” (casuale).

Il programmatore di per se (indipendentemente dalla qualifica) non è una vera e propria categoria unica ma bensì una macro categoria che si scinde in vari filoni.

I filoni principali sono:

1 – Programmatore impiegato in enti statali.

2 – Programmatore impiegato in enti para-statali.

3 – Programmatore per aziende software nel settore privato.

4 – Programmatore “consulente” impiegato presso un’azienda di consulenze settore privato.

5 – Programmatore “consulente” freelance settore privato a partita Iva.

Sicuramente queste 5 categorie non coprono tutti i possibili casi ma credo a mio avviso che siano almeno le più rappresentative.

Analizziamole una per una. Continua la lettura

Creative Commons License
This work by Francesco Ficetola is licensed under a Creative Commons Attribution 4.0 International License.
Based on a work at www.francescoficetola.it.
Permissions beyond the scope of this license may be available at http://www.francescoficetola.it/2012/05/15/vita-da-programmatore-da-il-messaggiero/.