Monday, May 29, 2006 

Unraveling complexity

Past week, I've spent 3 days discussing the design of a small framework for high-availability, scalable banking applications (CBI 2 and the like, for those involved in this kind of stuff). Curiously enough, given the predominance of Java in many banks, here the reference platform was Windows 2003 Server, and the chosen language was C#. In the end, the right mixture of cluster-aware applications, multi-hosted transactional services, a little dose of OOD and some AOP disguised :-) as .NET attributes did the job.
During a break, the lead developer said that talking with me turned a complex problem into something simple. This is, indeed, one of the main contributions of experience: you learn to ask the right questions, see (and seize :-) any opportunity for simplification, add some perspective and bring some order into the chaos. Oddly enough, simplicity is not valued highly enough in many companies; for a nice anecdote, see the essay "Brilliance" in Tom De Marco, "Why Does Software Cost so Much" (a nice book to have, by the way).
I would have more to say on complexity, including Fred Brooks concept of essential and accidental complexity, and why I think we can change the complexity equation in many projects, but that will be for another day...
Comments:
Questa cosa mi riporta al 1985 quando ho cominciato a lavorare e preso in carico un CAD bidimensionale. Mi fu chiesto di sviluppare una funzione per il calcolo dell'area di una poligonale chiusa. Non vi dico i giorni persi per scomporre l'area in triangoli con le difficoltà in caso di convessità. Del resto ero alle prime esperienze di analisi e programmazione... Pochi mesi più tardi ho applicato Gauss e l'algoritmo è diventato più semplice.

Il famoso "diverso punto d'osservazione" del problema.
 
Post a Comment

<< Home