sabato 17 agosto 2013

Scopi e obbiettivi

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