Qualche giorno fa un mio cliente mi ha chiesto la disponibilità per supportare una persona nel suo percorso di formazione relativo a .NET e poche settimane prima mi era arrivata un'altra richiesta simile.
In realtà negli ultimi due anni ho ricevuto diverse volte questa richiesta ed in un modo o nell'altro, a seconda di entrambe le disponibilità, credo e spero di essere sempre riuscito a condividere quelle nozioni apprese in questi anni grazie soprattutto ad UGIdotNET e Microsoft.
Perché lo scrivo qui?
Come praticamente è avvenuto in tutte queste occasioni stavo riscrivendo più o meno la solita mail con qualche punto (o meglio spunto) di partenza e notando uno strano smell :-), ho deciso di fare Refactoring, centralizzando sul blog.
Vorrei però premettere alcuni punti fondamentali:
- (cit.) Nascere smanettoni è naturale, campare smanettoni è diabolico.
Serve (tanta) volontà, umiltà, rispetto delle idee altrui e voglia di imparare.
Accontentarsi di vedere il gingillo girare senza preoccuparsi di approfondire o capire se e come si sarebbe potuto creare meglio non porta da nessuna parte.
- Tra il dire e il fare c'è di mezzo l'imparare! :-)
Mai testare una nozione architetturale su codice di produzione.
C'è chi utilizza un progetto reale commissionato per testare le nozioni teoriche appena apprese.
La domanda è: cosa succede se ci si dovessere rendere conto a progetto iniziato di non essere ancora in grado di applicare correttamente le nozioni apprese?
- IMHO, .NET è un fantastico strumento e le nozioni architetturali sono un altro fantastico strumento, di altro tipo. Collaborano molto bene insieme e .NET senza design (architetturale) è come vedere un film di Ollio senza Stanlio (o viceversa), per cui bisogna mettere in conto di dover necessariamente acquisire concetti su entrambe le aree (in percentuale variabile a seconda delle proprie mansioni).
Premesso ciò, il vero punto di partenza, sempre IMHO, è UGIdotNET, lo User Group Italiano degli utenti di .NET, soprattutto per gli impareggiabili workshop che organizza (tra l'altro quasi sempre gratuiti, per chi ancora non lo sapesse).
Sul sito si può trovare, in alcuni casi, anche il materiale degli eventi passati (previa registrazione, se non ricordo male), ma sono disponibili anche molti articoli e tips decisamente utili. Il wiki è in pausa di riflessione, anche se comunque IMHO non ha mai conquistato una grossa fetta di utenti, nonostante il valore dei suoi contenuti e l'impegno degli autori.
Altra ottima (e comoda) risorsa sono i webcast MSDN; sono tutti di ottimo livello, ma in particolare negli ultimi anni ne ho seguiti alcuni che sono dei "must", cercherò di elencarli e linkarli in seguito.
Per la formazione in aula (IMHO fondamentale), negli ultimi anni ho "consumato" :-) quelli tenuti da Andrea e Dino, in particolare su ASP.NET, Architettura, ecc. ed ho seguito l'ottimo mastering tenuto da Janky su NHibernate.
Infierendo sui poveri alberi, credo sia proprio vero che almeno Design Patterns e P of EAA siano da considerarsi obbligatori, se non sulla propria scrivania, almeno in ufficio, ...almeno come reference.
A questi, personalmente, aggiungerei di sicuro la nuova "creatura" della coppia di sportivi "racchettari", ma giustamente in quel libro si fanno discorsi "tosti" sull'architettura e, più che un punto di partenza per chi cerca di iniziare un percorso di formazione su .NET, potrebbe essere considerato una pietra miliare successiva.
E poi... c'è sicuramente molto, molto altro.
Argomenti? Un infinità, non riuscirei neanche ad elencarli...
Al volo mi vengono soprattutto in mente (cercando di riavvolgere la memoria):
- i concetti fondamentali relativi ad un corretto OOP (astrazione, polimorfismo, incapsulamento, ecc.),
- la separazione in layers differenti,
- il pattern Domain Model,
- il mondo dei tools per l'ORM (solo per questo punto servono MESI, per iniziare ad utilizzarli seriamente),
- il Refactoring,
- i principi e le metodologie Agili,
- le metodologie di test,
- le software factory ed affini,
- (forse soprattutto) le tantissime esperienze ed impressioni personali che ho avuto la fortuna di poter ascoltare da altri e spesso vivere in prima persona,
- molto altro ancora (feedback aperti in soccorso della memoria...)!
Insomma... tanta, troppa carne al fuoco per poter pensare ad un "Bignami" su soluzioni enterprise con .NET dalla A alla Z.
Il mio consiglio é quello di iniziare con tanta buona volonta e poca fretta. Un po' alla volta, senza fare il passo più lungo della gamba... magari evitando di ricommettere errori altrui.