Sviluppatori come modelli di riferimento…

Di tanto in tanto mi viene chiesto qualche consiglio su come iniziare a programmare, “partendo con il piede giusto“. Non che io sia un guru ma questo non mi impedisce certo di provare a rispondere.

Alcuni dei consigli sono emersi qua e là, nei miei post passati, ma ho notato di aver trascurato del tutto un “fattore di crescita professionale” molto importante, che mi si è rivelato utilissimo: i “modelli di riferimento“.

Modello?

È indubbio che esistano tanti modelli di programmatori quanti sono i programmatori stessi ma, come è lecito aspettarsi, non tutti sono altrettanto efficaci e, di conseguenza, non tutti meritano di essere seguiti. Così come avviene, del resto, per i modelli di sviluppo software.

Non è una semplice questione di conoscenza: un programmatore da prendere come esempio, come “modello di riferimento“, non è semplicemente qualcuno che ne sa più di noi.

È piuttosto qualcuno che ha le idee sufficientemente chiare per svolgere un determinato compito in modo ordinato, preciso e se possibile anche elegante.

Se poi la sua conoscenza è estremamente vasta ed è perfino in grado di insegnarla in modo comprensibile a terzi, tanto meglio. Tuttavia non è una condizione imprescindibile per essere un “modello valido“.

Un modello non è necessariamente (anche) un buon maestro

Esattamente: un modello non è per forza un docente, professore, … ma chiunque può esserlo o diventarlo nell’atto di svolgere qualcosa.

Ad esempio, una decina e più di anni fa, all’inizio della mia carriera universitaria, ricordo di aver visto il codice C per un progetto d’esame, scritto da un mio compagno di università che all’epoca era certamente già ben più esperto di me.

L’esercizio da svolgere non era particolarmente complicato ma lui lo aveva svolto in modo terribilmente elegante: gli spazi dove servivano, tutte le parentesi al loro posto, i commenti dove e solo se servivano, eccetera.

Era così ben scritto che riuscivo a capire al volo cosa facevano alcune funzioni della libreria C, all’epoca a me ignota in molti punti, libreria che non è mai stata celebre per la sua chiarezza e “intuitività“.

Man mano che leggevo quel codice continuavo a ripetermi:

“Wow! Questo sì che sa come si fanno le cose bene!”

Quel giorno ho imparato il concetto di “stile” nella programmazione, per giunta nella sua accezione positiva. Non un libro, non un docente chiamato ad insegnarmi a programmare, ma uno studente come me ed attraverso il suo codice ben scritto.

Quel giorno trovai un modello da seguire, a cui ispirarmi e per giunta senza che questi ne fosse a conoscenza.

Quel giorno formulai quest’altra semplice (banale?) euristica:

“Se qualcosa ti fa esclamare più di due volte ‘Wow!’ mentre la osservi, allora è fatta dannatamente bene, almeno in parte!”

Come ho avuto modo di scrivere più volte, non sono un guru e quel poco che so lo devo all’aiuto, diretto ed indiretto, di molte persone. Non potendole ringraziare una ad una – anche se lo meriterebbero – le ringrazio tutte in blocco, “ecumenicamente”.

Non esiste un modello unico ed universalmente valido di programmatore!

Sono convinto che ogni programmatore deve e può crearsi una sua “personalità programmativa“, magari costruita a partire da più modelli validi di riferimento.

In altre parole il programmatore alle prime armi può crescere professionalmente in fretta se impara ad individuare ed a seguire modelli validi, che può trovare quotidianamente e senza che debba sussistere per forza un legame esplicito tipo maestro-discepolo. Possono bastare anche le sole opere, debitamente osservate ed analizzate, come nel mio caso.

Seguire non è copiare spudoratamente, piuttosto assimilare solo le parti che si ritengono davvero buone, perfino da più persone contemporaneamente. Il risultato è appunto una “personalità programmativa” in cui si annidano le esperienze altrui.

Ricordo quando, sempre in università eoni or sono, impararai a progettare e strutturare un sito in certo modo, semplicemente osservando alcuni miei amici intenti a scriverne uno ed a discutere fra di loro sul da farsi: non scambiai nemmeno una parola sull’argomento con loro, però in qualche modo furono miei maestri e io un loro padawan.

Non esistono solo “casi di successo”

Sulla strada per diventare buoni programmatori si trova di tutto, comprese soluzioni eccellenti e in opposizione. A quel punto entrano in gioco altri fattori come ad esempio il proprio “gusto“.

Quando mi son trovato in una situazione del genere, cioè dovendo scegliere fra più opzioni contrapposte (es: due programmatori-modelli che risolvono un problema in modo diametralmente opposto e/o mutualmente esclusivo fra di loro), ho optato per quella più semplice, anche solo apparentemente: il “rasoio di Occam” rappresenta anche un’ottima euristica per scegliere.

Spesso, come è logico supporre, mi è capitato di tornare sui miei passi, ossia rivedere e scartare – a fatica – alcune mie “fissazioni”.

Una soluzione che si è rivelata buona una volta non significa che lo sarà anche in futuro. Idem per le persone.

Fidarsi ciecamente di qualcosa o qualcuno o, peggio, rifiutare a priori il resto è un sintomo di fanatismo, da rifuggire. Il mondo cambia e insieme a nuovi problemi emergono anche nuove soluzioni: rimanere ancorati, cristallizati a qualcosa o qualcuno è rischioso e quindi sconsigliabile.

Ad esempio, per tornare con i piedi per terra, detesto profondamente l’lo stile di indentazione K&R perchè ritengo che rovini l’ordine ed ostacoli la leggibilità del codice rispetto ad altri stili come l’Allman. Eppure, osservando il codice scritto da persone competenti, mi sono ricreduto. Inoltre ci sono casi in cui bisogna compattare il codice il più possibile, ad esempio pubblicando il codice su delle riviste. Ho quindi imparato a tollerarla.

Migliorare!

L’idea alla base è provare a riflettere non solo sul cosa imparare, ma anche sul come: come accrescere le proprie conoscenze, come migliorarsi, come diventare più efficienti, eccetera.

Questa è la parte inizialmente più difficile ma è anche quella che sul medio-lungo termine garantisce i risultati migliori.

Saper individuare e seguire dei modelli validi è un buon modo per favorire questa crescita personale e professionale.

Che ne pensate?

Contrassegnato da tag , , , ,

2 thoughts on “Sviluppatori come modelli di riferimento…

  1. Che devo dirti, da me solo l’indentazione K&R, e a me piace… Ciao :)

  2. jp scrive:

    @recenso: ognuno ha i suoi gusti, diciamo così… :P

    Ciao & grazie di essere passata! ^^

Lascia un Commento

Fill in your details below or click an icon to log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Log Out / Modifica )

Foto Twitter

You are commenting using your Twitter account. Log Out / Modifica )

Foto di Facebook

You are commenting using your Facebook account. Log Out / Modifica )

Connecting to %s

Follow

Get every new post delivered to your Inbox.

Join 259 other followers