Avete mai provato la sensazione di empasse di fronte ad una cosa troppo grande per essere affrontata nella sua globalità?
Una questione che mi assilla è cercare di trovare il bandolo della matassa (Il sottotitolo del mio blog non è a caso).
Spesso dietro una problematica da affrontare si nascondono varie tipologie di sotto-problematiche ricorrenti per risolvere la quale già esistono approcci consolidati e strumenti adeguati. Se già soltanto conoscere in modo appropriato i framework di sviluppo (mi riferisco soprattutto a Java e .NET) richiede un costante e sempre più approfondito impegno di studio, avere l'ambizione di non dover "reinventare la ruota"¹ ad ogni progetto richiede un impegno a dir poco sovrumano poichè entrano in scena una serie infinita di altre competenze: dai Design Pattern agli Application Block (et similia) e oltre...
E' pur vero che mediamente affrontiamo problematiche di profilo più ampio che in passato dato che esistono persino degli utenti stravaganti che esigono di poter utilizzare applicazioni distribuite in maniera disconnessa ...
Quindi la sfida si sposta altrove, non sul piano del codice ma sul piano della capacità di "aggregare" una soluzione a partire da questi strumenti. Occorre veramente saper gestire la complessità. In questo scenario credo che gli strumenti di sviluppo hanno (ed avranno ancor di più in futuro) un ruolo essenziale. Benchè io sia un accanito sostenitore di Notepad, è impensabile non farsi aiutare da tool appositamente creati²: credo che in futuro dovremmo pensare a degli strumenti "propositivi" che sappiano analizzare le "intenzioni" dell'utente e suggerire alcuni approcci/strumenti/tecnologie (magari accedendo a delle knowledge-base³ indipendenti dalla piattaforma di sviluppo e quindi universali) arrivando addirittura a "correggere" l'utente-sviluppatore in casi estremi.
¹: è inflazionatissima ma sempre efficace.
²: Creare tool di sviluppo credo sia difficilissimo dato è una indirezione di secondo livello (è brutto ma non mi vengono parole migliori...spero se ne capisca il senso): applicazioni che prevedono ciò di cui si potrebbe aver bisogno per soddisfare le necessità di cui ancora non si conosce la natura...richiede decisamente un bello sforzo di immaginazione, esperienza, nonchè capacità ...
³: FxCop va già in questa direzione forse...