L'obiettivo di un programmatore professionista è
consegnare un prodotto che soddisfa i suoi utenti. Il principale
significato è produrre un programma dotato di una chiara struttura
interna che possa crescere grazie ad un gruppo di programmatori abili
e abbastanza motivati per rispondere in modo rapido alle opportunità
ed ai cambiamenti.
Perché? La struttura interna di un programma e il
processo con il quale viene creato non ha effetto sull'utente. Quindi
che importanza può avere la struttura interna del programma per chi
scrive il software.
Un programma ha bisogno di una struttura interna
chiara, per gestire meglio:
- testing (prove funzionali)
- porting (adattare ad altri sistemi)
- manutenzione
- riorganizzazione e
- comprensione
La maggiore importanza per un software di successo è
data dalla vita d'uso, estesa da una serie di programmatori e
progettisti, adattato per nuovo tipo di hardware, modificato per
nuove applicazioni e riorganizzato ripetutamente. Nessuna
pianificazio per questo implica il fallimento. Non solo un utente non
vuole conoscere la struttura interna del programma, ma non vuole
neppure pensare ad essa. Un punto di equilibrio deve essere raggiunto
tra la mancanza di un design in generale per un frammento di software
e una struttura troppo enfatizzata. La priam porta a preoccuparsi di
smussare gli spigoli (“usa questo, correggeremo i bug nella
prossiam versione”). La seconda porta a ritardi nella consegna
a caqusa di una sovraorganizzazione nel progetto (“la nuova
struttura è meglio della procedente, la gente aspetterà”).
Inoltre spesso si ottiene qulacosa che richiede risorse che l'utente
non riesce a dare. Le scelte da fare sono difficili, e per progetti
di dimensioni maggiori diventano sempre più difficili. Un programma
deve essere prodotto e gestito da una organizzazione, in modo che
nonostante i cambi del personale, direzione e struttura di management
non possa influenzarlo. Un approccio molto usato dalle aziende è
creare una classe di programmatori facili da addestrare a basso
livello “coders”, e una classe di programmatori facili da
sostituire anche se meno economici “designers”. Tuttavia questo
approccio fallisce in quanto tende a creare sistemi di grandi
dimensioni con scarse performance.
I problemi di questo approccio sono:
- comunicazione insufficiente tra codificatori e progettisti, che producono opportunità mancate, ritardi, inefficienze e problemi per mancanza di esperienza;
- poca focalizzazione per i codificatori, mancanza di crescita professionale, stanchezza e alto cambio di personale.
Principalmente, questo sistema manca di un
meccanismo di ritorno che permette alle persone di beneficiare
dell'esperienza degli altri. E' uno spreco del talento umano. Creare
una struttura dove le persone possano usare il loro talento,
sviluppare nuove abilità, contribuire alle idee e divertirsi nonè
solo uan cosa decente da fare, ma ha anche senso economico.
Nessun commento:
Posta un commento