2 messaggi dal 20 ottobre 2008
Calma ragazzi... un bel respiro... :)
Caro Andrea,
no, l'obiettività non la considero uno scherzo! Certo che lavoro per Microsoft, ma la mia obiettività credo di averla dimostrata con tutto quello che ho fatto prima, facendo progetti, provando ad insegnare quello che imparavo, parlando alle conferenze e quant'altro. Se tu mi conoscessi meglio sapresti quanto io (e gli altri Evangelist) siamo critici con tutto quello che non ci convince, in prodotti e tecnologie Microsoft e non-MS, e tirandolo fuori pubblicamente come sempre ho fatto negli eventi e negli incontri con clienti e partner.
Certo una parte del nostro lavoro è il marketing, ma guarda che fare marketing, vero, non è così disprezzabile come sembra trasparire dalle tue parole, visto che il termine significa portare sul mercato un prodotto o una tecnologie, posizionandola correttamente e facendo comprendere ai potenziali interessati i vantaggi ed eventualmente gli svantaggi di un determinato approccio.
Il perchè abbia citato il tuo post dando una mia valutazione (secondo me non offensiva nei tuoi confronti ma critica sui contenuti) è presto detto: mancano completamente le informazioni necessarie a valutarne l'attendibilià! Come è stato scritto il codice NHibernate? E come quello con EF? Qual'è il codice SQL generato? Quali i costi di esecuzione delle due query? Dove stanno le differenze? Solo così è possibile valutare realisticamente dei risultati, altrimenti sono solo parole al vento.
Un neofita che legga quel post si troverà davanti le seguenti affermazioni:
"Nhibernate, dall'alto dei suoi anni di sviluppo, batte entrambe le tecnologie Microsoft anche se di poco"
"L'Entity Framework ne ha da strada da fare sul suo diretto e storico rivale..."

Farà due più due e il messaggio sarà: NHibernate è "migliore" di Entity Framework quindi vado con quello... e a dire il vero, la sensazione nel leggere quel post era che chi l'ha scritto voleva proprio passare questo messaggio, indipendentemente da tutti i distinguo di cui sopra.
Attenzione che io non ho mai detto che le cose non stiano così!
Non lo faccio mai: non lo faccio per SQL Server vs Oracle, per .NET vs Java, per PHP vs ASP.NET e così via, semplicemente perchè la mia esperienza mi dice che non esiste un "migliore", esistono scenari diversi, vantaggi e svantaggi per ogni approccio e motivazioni che dovrebbero essere valutate e soppesate prima di prendere delle decisioni in una direzione.

Nel mio post non ho mai detto che se quell'elenco di casi di successo è vuoto è perchè non ce ne sono veramente!!
Ma se chiunque legge oggigiorno uno dei blog che si trovano su questa o altre comunità (spesso di MVP o altre persone influenti) sembra che:
- Non si possa scrivere una applicazione senza usare NHibernate
- Non si possa scrivere una applicazione efficace, manutenibile, scalabile, ecc. senza usare DDD, TDD, POCO, Lazy Loading, PI, ecc.
- Usare il Dataset è il diavolo, sia per le performance che per il "design" complessivo delle applicazioni
- Che EF v1 non permette di progettare applicazioni sensate perchè non supporta POCO, perchè il designer non va bene (e non usatelo, però poi "è tanto comodo"...), perchè il Lazy (che brutta parola, meglio "on demand") Loading non c'è, ecc. ecc.

Sapete che cosa: cavolate! Si possono scrivere ottime o pessime applicazioni usando tutti questi approcci, ma quello che mi sembra stia succedendo, per rispondere anche a m.casati, è che tutto questo non c'entra molto con il proporre una "architettura sensata" al cliente quanto con il voler essere o sembrare a tutti i costi "a la page". Nessuno vuole far passare l'idea che si possa scrivere tutto usando il drag&drop, ci mancherebbe, ma che ci siano strumenti diversi che possono risolvere problemi di natura diversa, e che abbiano diritto di esistere, questo si.

Sensazionalismo sul mio blog? Mah, non lo so, giudicate voi.

Tutto questo purtroppo ha un impatto reale su tanta gente nel mercato. Qualche settimana fa sono stato da un partner che mi ha detto "abbiamo deciso di usare NHibernate perchè abbiamo fatto delle prove e va più forte di ADO.NET, ce lo ha confermato anche un MVP di Microsoft....", ma vi rendete conto dell'assurdo? Queste persone non hanno neanche lontanamente gli skill per valutare quello che stanno facendo e andranno a schiantarsi contro un muro.

Per concludere, certamente ognuno può fare e scrivere quello che gli pare, ci mancherebbe, mi piacerebbe solo che le persone evitassero il "pensiero unico" e magari si ponessero qualche domanda in più prima di allinearsi alla corrente del momento e alimentarla contribuendo a creare ancora più confusione in chi magari legge e non ha gli strumenti per poter giudicare da solo.

Detto questo, mi scuso per i toni usati e prometto di migliorare il mio "blog stantio" e di farlo diventare un pò più utile :)

Ciao, Silvano.
scoriani ha scritto:
per rispondere anche a m.casati, è che tutto questo non c'entra molto con il proporre una "architettura sensata" al cliente quanto con il voler essere o sembrare a tutti i costi "a la page".

Concordo solo in parte: è vero che è molto di moda parlare di architetture, TDD, POCO, ORM e chi più ne ha più ne metta; parlarne per moda, perché "fa figo" o, peggio, cercare di vendere tutto questo ad ogni costo, è indubbiamente sbagliato ed assurdo. Ma un uso sbagliato degli strumenti è tanto quello di usare un bombardiere per uccidere una zanzara, quanto quello di affrontare un branco di leoni inferociti con la paletta per le mosche. Con la differenza che nel primo caso abbiamo sprecato inutilmente delle risorse mentre nel secondo caso rischiamo di farci veramente male!
Tra l'altro la mia esperienza personale dice che se lasci un progetto zanzara a sedimentare per qualche anno tende a diventare uno... pterodattilo mentre di giganti che diventano nani ne ho visti ben pochi.
Nessuno vuole far passare l'idea che si possa scrivere tutto usando il drag&drop

Questo forse oggi, ma ti assicuro che qualche anno fa era quello che emergeva dalle vostre presentazioni di Visual Studio & Co.
Non sto criticando nè il prodotto (ottimo) nè il modo di venderlo (non ho le competenze per farlo) ma l'idea che sì è fatta trasparire della tecnologia. In tutta onestà mi ha dato parecchio fastidio quel voler far sembrare la curva di apprendimento di .NET bassissima ("guardate, non è molto diverso da Visual Basic: anche qui trasciniamo un po' di controlli sul form e il gioco è fatto") quando si stava parlando di un framework che, già dalla prima versione, era (forse) più completo e potente di J2EE!
Se questo ha permesso la diffusione massicci di .NET (e la vendita di un po' di licenze!) ha anche causato un proliferare di progetti "fuffa" e di sviluppatori mediocri che minano la professionalità e la credibilità del settore.
Il tutto ovviamente imho.

Matteo Casati
GURU4.net
3.121 messaggi dal 29 ottobre 2001
Contributi | Blog
scoriani ha scritto:
Il perchè abbia citato il tuo post dando una mia valutazione (secondo me non offensiva nei tuoi confronti ma critica sui contenuti) è presto detto: mancano completamente le informazioni necessarie a valutarne l'attendibilià! Come è stato scritto il codice NHibernate? E come quello con EF? Qual'è il codice SQL generato?

Incomprensione o no, io ho letto nel tuo blog un attacco personale. La critica a ciò che scrivo - corretto o no - mi sta bene, ma non quelli su di me da una persona esterna che non mi conosce nemmeno, e pubblicamente.

Inoltre ritengo quella critica ingiustificata - come ho scritto nella mia risposta pubblica - perché bastava leggere più attentamente quel mio blog, e i riferimenti ad una lunga serie precedente dove ho sviluppato una discussione con i miei test riguardanti l'EF, e avresti trovato codice per Linq, l'EF e, in quel blog in questione, anche per Nhibernate, con la chiara dicitura del perché di quel test e della sua valenza:

In un blog di qualche tempo fa avevo messo a confronto le prestazioni tra Linq e l'Entity Framework in scrittura (e lettura). Anche in questo caso moltissime persone (una) mi hanno chiesto come si comportasse Nhibernate nel confronto.

Innanzitutto, prima di sentenziare verità assolute che non possiedo, premetto che NON sono affatto un esperto di Nhibernate: con esso ho solo giocato in piccole applicazioni di test per testare le prestazioni di questo famoso e ottimo ORM.


Per evitare ogni dubbio, ho inserito TUTTO il codice di configurazione di Nhibernate e, lo ripeto, del codice di test in modo che, eventuali anomalie, mi sarebbero state subite segnalate da chi mastica questa tecnologia in modo più approfondito.

Puoi esaminare quanto ho scritto in questi mesi e vedrai che non ho mai paventato minimamente sul DOVERE utilizzare una o questa tecnologia per l'accesso ai dati. Io ho scritto dei miei test d'uso con comparazioni e altro, e non troverai mai una frase del tipo "l'Entity Framework, Linq o Nhibernate risolve ogni problema d'accesso ai dati, buttatevi a capofitto su di essa e scordatevi il resto...".

Inoltre hai sbagliato persona perché non troverai mai scritto da me uno di questi punti:

- Non si possa scrivere una applicazione senza usare NHibernate
- Non si possa scrivere una applicazione efficace, manutenibile, scalabile, ecc. senza usare DDD, TDD, POCO, Lazy Loading, PI, ecc.
- Usare il Dataset è il diavolo, sia per le performance che per il "design" complessivo delle applicazioni
- Che EF v1 non permette di progettare applicazioni sensate perchè non supporta POCO, perchè il designer non va bene (e non usatelo, però poi "è tanto comodo"...), perchè il Lazy (che brutta parola, meglio "on demand") Loading non c'è, ecc. ecc.


Non sono un malati di architettura

Detto questo, mi scuso per i toni usati e prometto di migliorare il mio "blog stantio" e di farlo diventare un pò più utile :)


cit.: Le inconprensioni sono così strane, sarebbe meglio evitarle sempre...

Ciao, Silvano.

Ciao
2 messaggi dal 20 ottobre 2008
Ho iniziato a lavorare su .NET Framework a Luglio 2000, e l'ho fatto con l'unico approccio che ritenevo possibile: SDK, Notepad, Anakrino (eh si, Reflector non c'era ancora...) e tanta pazienza. Non ero in MS allora, e tenevo workshop e consulenza per vari clienti, MS incluso, e ogni volta che mi facevano la domanda "ma quanto tempo ci vuole per rendere produttiva una mia persona?" rispondevo ovviamente "dipende dalla persone, ma produttiva (non guru) prima di 6 mesi scordatevelo". Non mi sembra una curva di apprendimento bassissima :)
Certo, qualcuno che si è dilettatto con il Drag&Drop in passato c'è anche stato (compreso il mio amico carissimo, Spiderman :)) ma bisogna anche tenere conto, e questo l'ho imparato visitando centinaia di clienti, che purtroppo il mondo dello sviluppo sw è dannatamente complicato e che una realtà come MS deve parlare a tanti profili diversi! Sarebbe bello se fossero tutto sviluppatori di applicazioni Enterprise per le grandi aziende... in realtà il mondo è fatto da persone che hanno fatto una discreta fortuna con applicazioni scritte in Access, Excel e VBA, che sono mediamente mono-utente e dove un pò di drag&drop può anche essere giustificato. Che facciamo? Li togliamo tutti di mezzo? Qualche anno fa avrei risposto diversamente :) ma oggi dico che il bello del mondo .NET è che permette approcci diversi, cosa che con il mondo VB/VBA non semnpre era possibile.

"Se questo ha permesso la diffusione massicci di .NET (e la vendita di un po' di licenze!) ha anche causato un proliferare di progetti "fuffa" e di sviluppatori mediocri che minano la professionalità e la credibilità del settore."

Purtroppo, credo che il proliferare di progetti "fuffa" e di sviluppatori mediocri abbia poco a che fare con .NET, il drag&drop e quant'altro, è un fenomeno che, tra l'altro, è trasversale alle tecnologie. Vorrei farti vedere certo codice Java o RPG o COBOL usato in progetti anche molto importanti...

Detto questo, Andrea, spero che le incomprensioni siano veramente finite :) e sono disponibilissimo a dare una mano nel caso tu voglia approfondire l'argomento nella comparazione tra le varie tecnologie. Il mio indirizzo di posta è silvano.coriani@microsoft.com e possiamo sentirci quando vuoi.

Ciao
Silvano

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.