Chi mi conosce sa come la penso ma a volte vale la pena ripeterlo, magari adeguando il proprio pensiero a qualche anno di distanza. Questo post nasce dalla legittima domanda di "Uno qualunque" al mio post sui newsgroup.
La domanda, che va letta per intero, la riassumo in breve con un "chi ve lo fa fare?" parlando degli sforzi profusi a dare feedback ai prodotti come Visual Studio, tecnologie come il framework, C#, etc.
La risposta, per chi ha voglia di leggerla, può essere solo nella versione lunga. Sorry. Oh lettore, sei ancora in tempo a chiudere il browser se la prospettiva non ti alletta :)
Lo spirito di Community
La mia carriera informatica parte da amatore con uno ZX81, sul PC con il DOS 1.0 e passo dopo passo sono arrivato al Framework 4.0 senza essermi perso nulla di quello che sta in mezzo. Ho passato anni nella veste di developer geloso delle proprie scoperte, condivise solo con il carissimo amico Stefano (da solo sarei impazzito prima), con notti davanti prima a debugger Quaid Analyzer, poi con CodeView a risolvere enigmi in assembler. Dopo pochi anni il vuoto. Le tecnologie cambiano e la tanto preziosa scoperta finisce nel cestino. Io li chiamo scherzosamente gli anni del "buio" perché nel mio studio non facevo entrare la luce.
Questo si è ripetuto diverse volte finché ho cominciato a frequentare le community (newsgroup e UGIdotNET) e ribaltando totalmente il mio pensiero. Ho continuato a studiare le tecnologie come facevo prima ma invece di tenermi l'appunto per me, ho cominciato a condividere tutto con le altre persone.
Per mia personale deformazione, è difficile che faccia domande su una tecnologia senza prima averla sezionata in tutte le sue parti, motivo per cui il mio ruolo nelle comnunity è sempre stato quello di rispondere a ciò che ricordavo. Nonostante questo ho trovato un valore inestimabile anche nel rispondere perché mi ha dato modo di vedere a certi problemi con una prospettiva diversa. Questo mi è stato di grande aiuto anche sul lavoro.
L'onda delle nuove tecnologie.
Se guardando tecnologie come Java e .net non si ragiona in termini di evoluzione del software, spiacenti ma non sapete costa state usando. In molte aziende in cui tengo corsi alcune persone vedono l'arrivo del Framework.NET come una decisione presa dalle alte sfere e nulla di più. ("mi trovavo tanto bene con il mio C++/VB6/quellochevuoi").
Senza fare la storia delle tecnologie di sviluppo in versione "Bignami", bisogna domandarsi perché sono nate le tecnologie e i linguaggi che si sono succeduti negli anni.
L'avvento di C++ e OOP è stato un "paletto" fondamentale e oggi chi conosce OOP ha ben presente gli enormi vantaggi rispetto alla programmazione procedurale.
C++ ha gravi difetti "by design" come l'assenza di uno standard nel formato binario (non c'è mai nessuna garanzia che sorgenti compilati da versioni diverse di compilatore siano compatibili) e questo ha consolidato la posizione del linguaggio "C" che non è sostituibile.
Sempre in C++ non ci sono metadati che dicano se un buffer sia passato in ingresso, in uscita o in+out, tantomeno ho la dimensione del buffer (cosa che localmente ad un processo fa poca differenza ma tra processi/macchine diverse è fondamentale).
Per colmare queste lacune la commissione DCE ha creato il linguaggio IDL che, per farla breve, ha aggiunto i metadati a C/C++ raggiungendo la tanto desiderata compatibilità binaria con COM in casa Microsoft e Corba sui sistemi *nix. Le specifiche sono molto simili tra loro perché i problemi da cui si è partiti sono esattamente gli stessi.
Corba ha fallito perché mancava l'imperatore che imponesse uno standard a cui dovevano sottostare tutti. In casa Microsoft COM ha funzionato e ancora oggi è dentro Windows e dietro le quinte del Framework.NET.
Però COM era complessa, prona agli errori e mancava ancora di altri metadatati che sono stati inseriti nella "V2" di COM chiamata Framework.NET. Tecnologie come Reflection (attributi etc.), CodeDom, linguaggi dichiarativi, Linq, e tanti altri sono possibili solo grazie all'infrastruttura nata per colmare le lacune delle tecnologie precedenti.
Ok, la carrellata è molto superficiale e con tantissimi punti di discussione ma credo che di almeno l'idea di quello che chiamo "l'onda delle nuove tecnologie".
Quando le hai viste tutte, ti piace far parte di quello che sarà la prossima versione e che le tue idee possano influire in qualche modo sulle tecnologie che verranno. La mia filosofia è sullo stile "attimo fuggente" e nella mia vita spero di vederne quante più possibile. So benissimo che solo aziende "mostro" del calibro di Microsoft, IBM, Oracle, Google, etc. hanno la forza di introdurre una tecnologia nuova ma soprattutto di promuoverne l'adozione. Quindi non ho pretese nel mio piccolo di mettere su il progettino fantastico sulla carta ma che non avrebbe nessuna speranza di essere realizzato e diffuso. Non sono l'unico a pensarla così, pensiamo al signor Don Box che per realizzre i suoi sogni delle comunicazioni distribuite è andato in Microsoft a progettare WCF, lasciando la sua azienda.
E finalmente arrivo alla risposta di "Uno qualunque" che è articolata su più punti:
- Mi piace far parte dell'onda, da sempre studio le nuove tecnologie per mio piacere personale, se queste hanno qualcosa di mio non ne posso essere che orgoglioso.
- Essere parte delle community è fondamantale per cavalcare l'onda. Il brainstorming con altri developer e con i team di sviluppo è un fantastico trampolino per le proprie idee.
- Le persone dei tanti team di sviluppo che ho conosciuto sono aperte alla discussione, il brainstorming con loro è sempre stato molto positivo anche per mia cultura personale. Nella mia vita ho imparato che il confronto con altre persone è sempre positivo anche se ciascuno resta su posizioni diverse.
- Microsoft per le cose che ho fatto mi riconosce, previa valutazione anno dopo anno, l'award MVP di cui vado molto fiero e che è un modo per Microsoft di ringraziarci. Tra i benefit dell'award ci sono: abbonamento MSDN e Technet annuale, partecipazione a tantissimi meeting con i team di sviluppo (via internet), partecipazione ad eventi tra cui il più importante è il Summit MVP nel campus di Redmond, accesso a risorse quali i sorgenti di Windows (e altro ancora, ma ovviamente non denaro).
- L'award MVP ci ha sempre lasciato la totale indipendenza nel parlare delle cose buone e non buone, a nostra discrezione e con cognizione di causa. Questo è uno dei valori più alti di questo premio che mi lascia la totale libertà di critica. Un esempio è quando ho trasmesso di persona a Soma (VP Dev Div) i miei apprezzamenti per il lavoro su VS2010 ma anche il mio disappunto per il problema sugli MSDN Forums.
In conclusione, "Uno Qualunque, se condividi le mie passioni puoi capirmi. Se invece sei tra quei dev che alle 17:00 guardano l'orologio con la testa già a casa allora non puoi capirmi. Intendiamoci io non disprezzo quelle persone, semplicemente non le capisco, ma lo dico da persona fortunata perché lavora con quello che gli piace fare.
Tutto questo risponde anche alle domande di chi mi chiede come diventare MVP. Non sono la persona più adatta a rispondere (il boss a cui chiedere ha casa qui) ma ritengo che i presupposti siano proprio la "fame" di tecnologie e la voglia di confrontarsi con gli altri. Queste sono cose però che si riescono a fare solo se piacciono, altrimenti è masochismo allo stato puro.