Articoli Manifesto Tools Links Canali Libri Contatti ?

Manifesto

SIForge.org si presenta in questa pagina: scopi, idee, interessi e progetti.

Perché SIForge.org

SIForge.org nasce dall'idea di tre giovani ragazzi (Stefano Fago, Giovanni Giorgi, Marco Lamberto), usciti dal Dipartimento di Informatica di Milano, con in comune la passione per tutto ciò che è informatica. L'obiettivo è quello di creare una community che parli di IT contestualizzata nella realtà italiana. SIForge.org nasce dalla nostra esperienza di lavoro sul campo, e da un'attenta riflessione basata sul nostro background culturale. Intendiamo presentare una serie di articoli, non solo tecnici, il cui scopo sia quello di stimolare la discussione da parte dei lettori, confrontando le reciproche esperienze.
Veniamo tutti e tre da un mondo universitario in cui si dà ampio spazio agli aspetti teorici delle tecnologie informatiche (come è giusto che sia). E dopo un periodo di adattamento nel mondo del lavoro, un po' di esperienza e qualche riflessione, siamo qui a raccontare la nostra visione del mondo IT.

Il sogno idilliaco: il software è tecnologia

La cosa bella del software è che non servono macchinari costosi per realizzarlo. Mentre per realizzare una casa di due piani non basta un badile, per realizzare un piccolo software serve magari un buon PC, un compilatore gratuito e un ottimo "talento". Non è necessario partire con grossi investimenti, almeno all'inizio.

Ci sono studi, iniziati più di trent'anni fa, che ci dicono quale sia il modo migliore per progettare (UML), implementare (algoritmi, design pattern) e vendere il nostro piccolo pezzo di ingegno creativo.

Sembra facile, eh?

Il brusco risveglio: il software andava realizzato ieri...

Vediamo cosa succede quando il nostro fiducioso informatico, fresco di laurea, viene assunto in un'azienda di consulenza. Qui ci si accorge che il lavoro è il risultato di una complessa mediazione tra diverse parti: Non sempre tutte queste figure sono necessarie: per esempio un progetto che deve integrare due semplici componenti legacy potrebbe non aver bisogno di un Project Manager ma solo del CDM, mentre un progetto da vendere a scatola chiusa (es un videogioco) potrebbe non richiedere un CDM ma magari un dipartimento di marketing molto articolato.

Il software risultante quindi può nascere per 1/3 dalla specifica, per 1/3 dalle esigenze sui costi, e per 1/3 dai tempi.

Il professionista con il solido background tecnico, si trova qui ad affrontare una realtà ben più complessa, ove discorsi quali la "politica tecnologica" del cliente, le "convenienze e sinergie" interne all'azienda, le certificazioni di qualità e i costi hanno un peso spesso superiore alla scelta della "tecnologia più elettrizzante per sviluppare il progetto".

Le capacità da una parte di delimitare le esigenze del Cliente, dall'altra di saperle prevenire per offrire nuovi prodotti (e quindi commesse) diventano essenziali e forse più importanti che saper scegliere il tool migliore per quel compito.

Per cui i tempi necessari per un progetto vengono dimezzati, o allungati a seconda degli eventi che si presentano all'orizzonte. Le priorità vanno riviste con il cliente, che cancella alcune attività e ne anticipa altre, e capita di aver già scritto 1000 righe di codice di una cosa che non si vuole più!

Questo porta a dover accelerare il processo di sviluppo software, magari costringendoci spesso a compromessi che non vorremmo fare...e bisogna ricordare all'Account che "nove donne non fanno un bambino in un mese".

...e deve essere efficiente

Ovviamente però nessuno vuole un software brutto, lento e sporco; inoltre le stime per il completamento delle attività devono essere sempre precise, in modo che gli Account possano formulare offerte ragionevoli e sensate.

Il riuso magari non serve al cliente1, ma fa comodo se il cliente2 vi chiede una cosa leggermente diversa.

Per cui spesso si è costretti a correre, con le scadenze prossime, con molte esigenze, come quella di scrivere un codice che sia comprensibile anche ai colleghi intorno, oltre che a noi, ecc, ecc.

Il software è una salsiccia?

Forse il software è una salsiccia, o forse rischia di esserlo solo se noi non tentiamo di guidare consapevolmente il suo processo. Da una parte infatti abbiamo una spinta data dalle esigenze del Cliente, dall'altra la realtà dell'informatica attuale, ove scelte sbagliate di progetto non possono essere corrette radicalmente mentre siamo "in corsa", a meno di non reinvestire risorse in tempo e denaro.

Il mondo dello sviluppo di oggi propone dei tempi molto brevi e questo ha dato il via alla nascita di diverse metodologie, tra cui l'eXtreme Programming (XP).

Quest'ultima suggerisce, nel caso in cui una porzione vitale di codice sia scritta in modo inadeguato, di bruciarla e riscriverla totalmente, piuttosto che tenerla così come è confidando nel fatto che il codice intorno la isoli. Spesso, anche se si trattava di più di 1500 linee di codice, la riscrittura ha richiesto meno tempo di quello che si pensasse, e alla lunga ha portato diversi vantaggi.

L'eXtreme Programming spinge tutto questo ai massimi livelli, sostenendo che lo sviluppo evolva da uno stadio prototipale, coinvolgendo l'utente finale, e operando un refactoring e un testing continui.

SIForge.org aspira a discutere di tutti quegli aspetti (metodologie, tecnologie, "buon senso sviluppato sul campo") che possono aiutarci a consegnare progetti non solo funzionanti, ma che significhino qualcosa e non siano una accozzaglia informe di codice-a-spaghetti-che-non-si-sa-bene-che-faccia.

E ricordatevi che spesso non facciamo il software per le macchine, ma per altre persone!

Lo staff di SIForge.org
Milano, sabato 3 agosto 2002