On 09/10/2014 12:16, Daniele Zambelli wrote: > > E poiché questa fase di correzione e modifica è più importante della > semplice scrittura, è fondamentale che il programma non *funzioni > bene*, ma sia *scritto bene*. D'accordo che un programma è sempre costruito iterativamente e quindi scriverlo "bene" è necessario. Detto questo, fare un programma tecnicamente corretto e ragionevolmente progettato per conto mio è il /minimo/ per un programmatore professionista. Quando scrivi > commissione del lavoro con le migliori specifiche possibili; parti dal presupposto che il programmatore possa ricevere un foglio con scritto cosa deve fare, chiudersi da qualche parte ed uscirne con un programma tecnicamente perfetto, da mostrare al committente per il prossimo giro dell'iterazione. In alcune realtà dove il programmatore è un operaio del software e implementa pedissequamente quanto deciso da altri succede esattamente così, ma onestamente non mi pare l'apice della professione. Per conto mio il programmatore /deve/ partecipare attivamente alla stesura di queste specifiche, con l'utente se è il caso, con l'analista altrimenti. > > Il programmatore deve saper programmare *bene*, gli utenti devono > poter dire ai programmatori cosa serve loro. Gli utenti possono sempre dire cosa serve loro, ma spesso non sono in grado di descriverlo in modo adeguato a trasformarlo in un programma. Anche quando sono in grado difficilmente possono apprezzare i relativi costi di un approccio rispetto all'altro, di implementare una richiesta in un modo piuttosto che altro e così via. Del resto perché dovrebbero ? Non è il loro lavoro. La conseguenza però è che quasi sempre le richieste che ricevi da un utente devono essere interpretate e discusse per arrivare a quello che serve veramente, oppure per trovare un'alternativa implementabile e mitigare il costo di implementazione (*). Un programmatore prende la richiesta utente o la specifica e cerca di implementarla in modo tecnicamente perfetto. Un /buon/ programmatore per conto mio deve considerare la richiesta e cercare di inquadrarla nel contesto complessivo del programma e di chi lo userà. Deve /dialogare/ con il suo utente/cliente. Ciao, R (*) xkcd secondo me spiega bene il problema: http://xkcd.com/1425/ -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx