La notizia dell'abbandono di Ray Ozzie e ancor di più il fatto che non ci sarà un successore come Chief Software Architect, a mio avviso non può che aumentare l'entropia nel mondo Microsoft, entropia che è sempre stata poco gradita agli sviluppatori, da sempre in cerca di qualcosa di stabile, affidabile e duraturo.
La developer division, da sempre il fiore all'occhiello di Microsoft, ha dato grosse soddisfazioni agli sviluppatori, attirati non solo da ineguagliabili strumenti di sviluppo con Visual Studio in testa, ma anche da un ecosistema di tecnologie che rendono molto piacevole la developer-experience.
Di mio aggiungo che in tutto questo, la parte che mi ha sempre colpito di più è la capacità di architettare soluzioni con molta lungimiranza sui progetti strategici. Per fare un esempio, il Framework ha fatto pochissimi errori dalla sua nascita e la progettazione iniziale ha dimostrato di essere molto solida per le evoluzioni successive.
Poi arrivano le wave di opensource, cloud, iPhone e iPad giusto per fare alcuni esempi. Vedendo la reazione del mercato, Microsoft si è fatta attirare da "promesse" di fantastici marketshare.
E qui a mio avviso nasce un problema: non tanto per il fatto di dover affrontare nuove sfide e nuovi mercati, ma per come vengono affrontati. Microsoft sa fare le cose in un certo modo e invece di farlo, si butta al cieco inseguimento dei concorrenti che si fanno insidiosi.
La mia impressione è che non ci sia una vera strategia, si sente cioè la mancanza di un vero chief software architect che, stile matrix, nel bene e nel male, decide la direzione da seguire. Con Bill Gates le cose erano decisamente differenti perciò non soprende il fatto di non vedere reazioni per l'uscita di Ray Ozzie.
Purtroppo la mancanza di una guida si fa sentire un po' a tutti i livelli. Le tecnologie di per sé sono molto pregevoli e innovative ma manca un'armonizzazione.
Per esempio in asp.net non è ancora stata risolta la divergenza tra i progetti di tipo website e web applications, con conseguente confusione e mancanza di uniformità nei settings. Sempre in asp.net l'uscita di Razor, criticabile ma buona per molti newbie, aumenta il grado di confusione. I package vengono fatti con WebMatrix ma se tentiamo di usare le Helper-Libraries di Webmatrix in un progetto asp.net webform, scopriamo che non è possibile. Ovviamente il tutto senza documentazione ma solo lasciato ai blog e a twitter. D'altro canto è innegabile che la piattaforma asp.net di per sé sia sempre più potente di versione in versione.
Un altro esempio è Windows Identity Foundation, architettato con molta cura ed eccellente soluzione sia per environment LAN, WAN e Azure. Peccato che gli esempi e la documentazione siano inutilizzabili o criptici, lasciando a pochi la speranza di essere usati in modo accettabile. Confesso di aver speso parecchio tempo prima di realizzare un esempio completo con WS-Federation + WS-Trust funzionante sia per asp.net che per WCF in un contesto reale.
Potremmo poi parlare di WWS, Windows Web Services, i web services per il mondo nativo. Sono una tecnologia fantastica perché risolvono immensi problemi di interoperabilità tra codice nativo e mondo managed, usando gli standard WS-*. Ancora una volta peccato che dopo il loro esordio ci sia il silenzio totale.
Anche il mondo WPF rischia di entrare poco nel cuore degli sviluppatori senza che venga data una guida più precisa su come impostare un progetto di una certa dimensione. Il paradigma Document-View model usato nelle vecchie MFC di C++ non era certo perfetto ma ha costituito un fondamentale punto di partenza per centinaia di migliaia di progetti.
La soluzione architetturale in WPF è certamente MVVM, ma, fin tanto che questo non verrà integrato in Visual Studio, non sarà mai preso sul serio. So benissimo che non può esistere una soluzione universale basata su MVVM, ma è necessario che il "boilerplate" sia già dentro il Framework e nei wizard di Visual Studio, altrimenti l'adoption non potrà mai essere quella desiderata.
Potrei andare avanti con WCF e la difficoltà delle configurazioni oppure con Entity Framework che pur essendo molto promettente sta arrivando con estremo ritardo.
Per la cloud sono perplesso non tanto dalla lucidità del progetto che ritengo molto buono, ma per l'eccesso di focus. Voglio dire che non si possono spostare tutte le applicazioni dall'oggi al domani sulla cloud, investire ben tre keynote della PDC sull'argomento Azure, dopo aver passato 10 anni a convincere quelle stesse persone a usare il Framework. Fa anche specie vedere Don Box per ben tre keynote parlare di Azure invece dei progetti su cui si è dedicato.
Migrare nella cloud implica cambiamenti radicali, cambiamenti nel modo di conteggiare i costi, riconsiderare l'affidabilità degli internet provider (in Italia è un tasto iper-dolente), investire su una architettura totalmente differente. In molti casi questo non può che portare a enormi benefici ma non è tutto bianco o tutto nero, è necessario continuare a parlare anche del resto.
È di oggi la notizia che la confusione nella vision è arrivata fino al prodotto più promettente, Silverlight, dove lo stesso Muglia (il VP della Server&Tools division) dichiara che "our strategy has shifted" e continua dicendo che Silverlight è la strategia per WP7 mentre Html5 sarà quella per il web.
http://www.zdnet.com/blog/microsoft/microsoft-our-strategy-with-silverlight-has-shifted/7834
Lo stesso giorno a PDC viene detto anche che la prossima versione di WPF permetterà l'hosting di Silverlight.
Il mondo dei tablet, su cui Ballmer vuole puntare entro fine anno, non è da meno. Asus ha presentato in primavera lo stupendo device "eeePC" che porta Win7 a bordo ed è per questo il perfetto killer dei device basati su Android ed iOS; è altrettanto vero che Win7 full rischia di essere troppo pesante per un tablet e, infatti, la versione più piccola del device di Asus si basa su Android. Le perplessità su Windows usato sui tablet è chiaramente espressa qui: http://www.pcworld.com/businesscenter/article/206978/why_a_windows_tablet_is_still_a_bad_idea.html?tk=hp_new
Dal punto di vista tecnico - non me ne voglia il caro amico Valter – ritengo che Windows CE/embedded abbiano sempre meno senso per device destinati al mercato utente dove la disponibilità di applicazioni è fondamentale. Ma MinWin non è ancora realtà, non almeno come sarebbe necessario su device come il tablet.
MinWin ovviamente non basta, c'è l'evidente necessità di riscrivere una shell (explorer.exe) che è stata notevolmente migliorata in Windows 7 ma la cui età (è nata con Windows 95) si fa decisamente sentire. La shell è molto complessa, l'unico libro sull'argomento è quello di Dino, e la sua customizzazione per i device di oggi è decisamente troppo ardua.
Oggi come oggi un telefono come WP7, che porta a bordo una CPU da 1GHz, è tranquillamente in grado di far girare una versione full di Windows, ma il ritaglio ed una shell differente sono d'obbligo per avere una user-experience decente.
Nella guerra dei cellulari, l'inseguimento al nuovo mercato del glamour tecnologico aperto dall'innovativo iPhone, secondo me non doveva vincolare tutte le altre scelte. La rivisitazione grafica era dovuta, ma da un device di casa Microsoft ci si aspettava un "di più" tecnologico che a mio parere manca, anche se solo comparandolo con il suo predecessore WM6. In passato (guardiamo ad esempio ai grossi cambiamenti come l'inizio dell'era Windows) Microsoft era riuscita a soddisfare la voglia di novità del consumatore minimizzando le breaking changes.
Con WP7 invece ha totalmente tagliato i ponti con il passato, abbandonando il proprio mercato dei device industriali e i vecchi clienti WM6. Detto questo, ci vorrà ancora qualche anno per capire se gli end-end-user ne decreteranno il successo o l'insuccesso, non certo il sottoscritto.
L'impressione è che nel tentativo di andare dietro alla concorrenza, stiano perdendo quanto è loro più congeniale. Non manca innovazione, non mancano persone e team brillanti (Microsoft è sempre stata un'azienda innovativa e Microsoft Research ne è probabilmente la testimonianza più chiara); manca invece una vision che porti i prodotti e le tecnologie fino in fondo, il cui messaggio su quali scegliere e come usarle sia chiaro.
Voglio ribadire che le capacità ci sono. Il neonato team del parallelismo, per fare uno dei tanti possibili esempi, sta facendo un lavoro che non ha precedenti e con il prossimo C# 5.0 il paradigma della programmazione asincrona potrebbe realmente essere alla portata di tutti.
Io sono un tifoso delle tecnologie, e quelle di casa Microsoft mi hanno dato tantissime soddisfazioni. Dal punto di vista tecnologico il mio entusiasmo è immutato: continuo a studiare tutte le novità e a dare montagne di feedback anche per i più piccoli dettagli (il che è normale visto che mi danno del pignolo ). Mi dispiace solo vedere che questa confusione rischia di rendere vane o inutilizzate tante tecnologie valide e promettenti.