Come Diventare Un Buon Progettista di Software

Quando si tratta di diventare bravi, o bravissimi in qualcosa non si può definire un “algoritmo” particolare. Alcuni hanno semplicemente un talento naturale altri, invece, sono semplicemente degli appassionati del settore che amano dedicarsi ad aumentare le proprie conoscenze.

Indipendentemente dalla strada già percorsa, c’è sempre tempo per migliorare. Qui, ho intenzione di illustrarvi alcune delle tecniche che mi hanno aiutato lungo la mia strada, e che mi aiuteranno ancora in futuro. Inoltre, in concreto, questi consigli si possono applicare ad ogni campo, non solo a quello relativo alla progettazione di programmi.

Una precisazione: questi sono dei consigli, dei punti grazie ai quali sono riuscito ad arrivare dove mi trovo e mediante i quali sto migliorando la mia carriera.

Bene, ora, andando con ordine…

Non smettete di imparare

Il fatto che abbiate concluso la scuola o gli studi, non implica che smettiate di imparare. Dovete continuare a tenervi aggiornati. Vengono sviluppate nuove tecnologie, vengono individuati nuovi modi di pensare e gli stessi problemi si rinnovano. Non potete sedervi sugli allori e pretendere di trovare la soluzione a nuovi problemi con vecchi sistemi. Molto spesso è necessario esplorare nuovi spazi ed esaminare i problemi da nuovi punti di vista per trovare delle soluzioni da definirsi “eccellenti”.

Per imparare ci sono molti metodi diversi:

  • Leggere

Blog, riviste, pubblicazioni professionali e giornali, libri, schemi, esperimenti, studi, qualsiasi cosa. Leggi! Non limitare l’esame delle fonti a una o due di esse. Non leggere, ad esempio, solo i blog. Cerca di “accaparrarti” un’iscrizione alle pubblicazioni Acm, o a qualche altro tipo di pubblicazione del tuo ambito professionale. Leggi anche libri aggiornati.  Sicuramente i libri di narrativa e finzione vengono maggiormente pubblicizzati e sono molto più noti; soprattutto, con l’esplosione del fenomeno blog i libri settoriali diventano sempre meno popolari. Trova qualche testo buono e aggiornato relativo al tuo campo professionale (oppure un ebook), compralo e leggi!

  • Conferenze

Segui alcune conferenze, se puoi. In genere è abbastanza costoso prendere l’aereo, andare in una diversa città, prendere una stanza in un hotel e seguire la conferenza, ma ne vale la pena. Personalmente non sono mai stato ad una conferenza riferita nello specifico al software, almeno non ancora, ma posso già affermare che è sicuramente meglio valutare le nuove tecnologie dal vivo, vedendo le diapositive, i video proposti e i relatori. Io ho guardato spesso le registrazioni degli eventi, ma sicuramente ha più senso seguirli dal vivo.

  • Seminari di aggiornamento professionale

I seminari sono creati allo scopo di consentire ai lavoratori di migliorare le proprie prestazioni e avanzare nel proprio percorso professionale. Nel mio settore gli incontri durano in genere un paio di giorni, ma esistono anche seminari che possono durare una o due settimane, e che, ovviamente, richiedono un maggior dispendio di denaro. Informati con il tuo datore di lavoro: magari potrebbe darti una mano. In fondo, per un lavoro di qualità migliore i benefici si estendono anche all’intera compagnia.

Impara dagli altri

Questa parte si può dividere in due differenti sezioni:

  • Ascolta le critiche e i consigli

Se qualcuno “strappa” o non approva il codice che avete appena creato, la soluzione proposta o qualsivoglia altro lavoro proveniente da voi, è nel vostro interesse ascoltare le sue critiche. Questo non significa che dobbiate fare tutto quello che vi viene detto, ma, in definitiva, che potrebbe essere utile ascoltare ed analizzare le critiche altrui. A volte differenti punti di vista possono portare ad una soluzione migliore: un occhio diverso può vedere problemi da voi ignorati.

  • Esamina le soluzioni previste per problemi simili

Immaginiamo che vogliate scrivere un nuovo codice sorgente. Probabilmente esiste una lunga lista di buone ragioni che vi hanno portato a tale soluzione. Tuttavia, non dimenticate di esaminare le soluzioni già esistenti ed applicate a problemi simili. Leggete, ad esempio, come se la cavano su git, mercurial e svn. Valutate come si approcciano, ed esempio, ai conflitti tra diverse parti dei programmi, quali soluzioni vengono previste e potreste riuscire a trovare voi stessi un punto di arrivo molto più velocemente. Si può imparare molto guardando ciò che è già stato fatto.

Insegna

Non ricordo la fonte, ma esiste una frase che in parole spicciole dice che nessuno può realmente imparare a fare qualcosa prima di averlo insegnato ad altri. Perciò, insegnate!

Se amate fare qualcosa, perché non aiutare qualcun altro ad imparare ciò che voi sapete. Trasmettete le vostre conoscenze, in modo da consentire anche agli altri di aiutarvi a risolvere eventuali problemi. L’insegnamento si può sviluppare in diversi modi: attraverso lezioni frontali, conferenze, incontri, organizzando delle classi in siti come codelesson, occupandovi di insegnare anche a gruppi aziendali (come accade per le offerte di Github) oppure, semplicemente, create un piccolo gruppo di lavoro con il quale esaminare il vostro codice.

Qualunque sia il sistema da voi scelto, uscite e insegnate!

Ama il tuo lavoro e occupati di progetti a te cari

Questi due elementi vanno a braccetto. Ad esempio, se odiate occuparvi di fisco, non lavorate nelle Intuit. Potreste, di contro, obiettare dicendo: “non esistono delle buone aziende di software nella mia area!”

Spostatevi

Se non amate il vostro lavoro non impegnatevi ad amarlo per forza. Se non riuscite ad andare a lavoro facendovi piacere ciò che fate, potreste non avere la giusta motivazione e, un giorno, potreste ritrovarvi demotivati e depressi.

Pensate a questo: se odiavate l’architettura Mips, e non l’avreste mai utilizzata a casa, perché avete accettato di andare a lavoro e utilizzarla ogni giorno?

Fate ciò che amate e amate ciò che fate. Non ci sono scuse!

Siate coerenti

Penso che la coerenza anche nel modo di presentare se stessi, online e non, sia importante. Si possono capire molte cose dal proprio modo di vestire (Steve Jobs è il re della coerenza, per quanto riguarda il vestito) anche in merito alla propria professionalità.

Per esempio, io mi occupo di controllare che il mio avatar e la mia piccola presentazione siano uguali ovunque. In ogni sito nel quale sono iscritto potete notare che anche la mia professione è la stessa; sono sempre uno “Studente di Informatica all’Università”. Magari il luogo può essere tralasciato qualora esista un altro campo nel quale inserire la mia residenza, ma in ogni caso potrete trovare sempre tali informazioni su di me.

Siate coerenti. Questo vi aiuterà anche a ricordare chi siete.

Siate reperibili

Non mi sembra molto positivo vivere in una scatola. Se volete migliorare la vostra carriera, sarete obbligati a comunicare con molte persone del vostro campo. Procuratevi dei biglietti da visita con la vostra mail e il numero di cellulare. Utilizzate Skype per le vostre chiamate online. E perché non approfittare delle risorse di Gmail?

Dal momento in cui diverrete reperibili, sarete anche in grado di ottenere proposte per l’insegnamento (“Hey, come hai fatto a fare ciò?”), per nuovi lavori e, ovviamente, anche critiche.

Prendete parte alla comunità


Nella foto c’è Why the Lucky Stiff. E’ fantastico. Ha fatto così tanto per la comunità di Ruby che, quando è uscito dalla comunità internet, molte persone hanno smesso di fare ciò che stavano facendo per occuparsi di continuare il suo lavoro.

Se fosse rimasto solo con se stesso a casa, non sarebbe stato così apprezzato.

Se avete sviluppato un ottimo codice, mostratelo agli altri. Se avete realizzato qualcosa di fantastico nel vostro campo, fatelo notare agli altri e, magari, insegnate loro qualcosa.

Prendete parte ai forum, ai gruppi, alle chat Irc, alle discussioni Twitter. Uscite dal vostro rifugio e iniziate a parlare con gli altri. Andate alle conferenze, conoscete nuove persone e, magari, trovate qualche nuovo amico col quale andare a pranzo.

Durante il pranzo possono accadere cose singolari e interessanti.

Fate pratica col vostro codice, per divertimento!

Se non sviluppate codice a casa, per divertimento, state sbagliando. Non dite stupidaggini come “non ho tempo”. Probabilmente non lo state organizzando in maniera appropriata. Scott Hanselman ha due bambini eppure è in grado di programmare un sacco di cose e di inventarne di nuove. Se tutto ciò di cui vi occupate a livello informatico occupa solo il vostro tempo lavorativo, e non avete intenzione di occuparvene a casa guardate la sezione sopra riportata: “Ama il tuo lavoro e occupati di progetti a te cari”.

Questo riguarda anche ciò che avete fatto in passato. Se siete un ingegnere elettronico e suonate la chitarra, create un amplificatore. Se siete un falegname create una fantastica altalena per i vostri bambini.

A casa, lavorate su qualcosa che voi volete fare.

Completate tutto il lavoro

Questo è un consiglio da Joel Spolsky. Se avete mai visto un lavoro realizzato per la Fog Creek Software saprete che essi si concentrano su due elementi: intelligenza e completamento di  tutto ciò che c’è da fare. Se avete tali qualità non importerà a nessuno delle vostre altre caratteristiche. È come se andaste a lavorare per un falegname differente e vi dicessero “Hey, so che in genere usi martelli rossi con manici in pelle, ma qui abbiamo solo martelli blu con manici in stile badminton”. Il linguaggio è solo uno strumento, se siete intelligenti e veloci il resto verrà da sé.

Siate organizzati

Realizzate una lista delle cose da fare ed entrate nella sua filosofia, nel sistema Gtd. Io lo utilizzo ancora ma utilizzo anche l’applicazione Remember the milk per tenere traccia delle cose da fare e del momento e luogo nel quale farle. È un modo per liberare un po’ la testa dagli impegni e non doversi occupare di ricordare sempre tutto.

Eliminate il superfluo

A volte vorreste poter realizzare qualcosa ma, in alcuni casi, le cose semplicemente non funzionano. Io volevo creare un clone di Gravatar utilizzando Rails 3, quando venne diffuso la prima volta. Tuttavia, per un determinato periodo di tempo sono stato preso da altre cose. Ora, se mi mettessi a realizzare il mio progetto perderei solo tempo, considerando il tempo trascorso dall’uscita di Rails 3. Se mantenete per tanto tempo un compito nella vostra lista di cose da fare (magari era solo un pensiero casuale), non lo dovete realizzare per forza. Questo riguarda anche tutto ciò che avete iniziato ma non riuscite a terminare. Se qualcosa appare non più interessante o innovativo lasciatelo perdere e dedicatevi a qualcosa di più “fresco” e allettante.

Siate “asincroni”

Uso realmente le liste delle cose da fare e i feed Rss. Come le email, tali sistemi sono da considerarsi “asincroni”. Invii una mail, sottoscrivi un feed o scrivi una lista e non te ne preoccupi più molto. Certamente ti occuperai di controllare la mail o di leggere i feed prima di andare a dormire, ma non è necessario stare appiccicati ad un sito per controllarne gli aggiornamenti o restare per ore davanti a Skype attendendo la scritta “Andrea sta scrivendo…”. Puoi occuparti di ciò che devi fare, scrivertelo da qualche parte e ricominciare a pensare a ciò di cui ti stavi occupando prima. Questo sistema ti da la possibilità di fare per bene una cosa alla volta. Ti occuperai delle mail e dei feed più tardi.

Ci sono degli elementi applicabili anche al di fuori del campo informatico. Segnatevi questi consigli, a me hanno aiutato molto.

Procuratevi un Kindle o un iPad

Seriamente. Sono “aggeggi” straordinari. È fantastico leggere, inviare documenti e convertirli per renderli ancor più facili da leggere. La batteria dura molto in entrambi i dispositivi e si trovano una bella selezione di libri. Se passate molto tempo a leggere avete bisogno di un Kindle o di un iPad. Costano entrambi relativamente poco.

Usate Google Docs

Documenti Pdf, Ebook, manuali, tutto ciò che trovo in rete (da leggere o consultare), lo inserisco in Google Docs. È uno strumento molto utile per l’ufficio e funziona con tutti i sistemi operativi, così da non obbligarvi a pensare “oh no, ho salvato tutto sul mio Mac ed ora sono su Windows”. Funziona. I file vengono stoccati sul server di Google e possono essere ricercati, e ritrovati, con estrema facilità. Non si limita, inoltre, all’utilizzo in ufficio. Io raccolgo i file Pdf, cartelle importanti e tutto ciò che mi potrebbe servire immediatamente.

Certo, può non essere lo strumento più utile del mondo, ma vi consiglio di dargli un’occhiata.

Boom!

Questo è tutto, sono tutti I miei segreti. In realtà non sono dei veri e propri segreti; tuttavia, mi hanno aiutato molto a districarmi nel mondo informatico. Forse potranno darvi una mano.

Paolo


One thought on “Come Diventare Un Buon Progettista di Software

Leave a Reply

Your email address will not be published. Required fields are marked *