2014-10-12 8:58 GMT+02:00 Mario Alexandro Santini <alexmario74@xxxxxxxxx>: > > Concordo con quanto scrivi, aggiungo una considerazione. L'utente "umano" > entra in gioco solo quando c'è un'interfaccia grafica, il > che rappresenta spesso una minima parte dei sistemi complessi. > Al di fuori dei programmi per la produttività individuale, che la maggioranza > degli utenti è abituata ad utilizzare, tutto il resto del mondo > dello sviluppo ruota attorno a programmi che spesso non hanno a che fare con > degli "umani", ma con altri programmi. > E penso proprio che in futuro la maggioranza della programmazione sarà sempre > più legata al Machine to Machine, più che al > Machine to Human. Questi programmi machine to machine fanno comunque delle cose che servono ad esseri umani, e questi ultimi ne sono gli "utenti" in senso lato: anche se non devono riempire una form con i dati dello studente, hanno le idee chiare non solo su cosa deve fare un programma, ma soprattutto sul _perché_ lo deve fare in un modo anziché in un altro. La mia esperienza sarà di parte, ma sono fermamente convinto che la conoscenza dei motivi produca software di gran lunga migliore - non fosse altro che perché in ogni sistema complesso servono dei compromessi, e scegliere quelli giusti richiede comprensione. > Questo lo presumo dal fatto che negli anni ho visto ridursi notevolmente la > "ricchezza" delle interfacce. > Dai programmi a riga di comando, alle interfacce grafiche, a quelle web e > oggi quelle su telefonino, c'è una progressiva riduzione > dell'interazione umomo macchina verso l'essenzialità. Sei sicuro che un'interfaccia grafica sullo smartphone multitouch sia più "essenziale" delle schede perforate? Io vedo una continua crescita della pervasività del software nella vita quotidiana, e questa "riduzione dell'interazione" non riesco a coglierla - però mi fermo, sto andando fuori tema. >> Chiaramente non è una prassi nel modello di sviluppo Opensource, ma nelle >> aziende che sviluppano codice proprietario avviene più >> spesso di quel che si pensa. Non so le percentuali, ma so, anche per >> conoscenza diretta, che moltissime commissioni di codice a >> sviluppatori indiani o ucraini o polacchi o comunque esterni all'azienda, >> sono strutturate proprio in questo modo. > > Già, uno dei motivi per cui l'automazione dei test ed anche il TDD sono > sempre più richiesti. Il motivo è lo stesso che citavo nell'altra email: quasi sempre l'outsourcing viene fatto senza preoccuparsi (troppo) del livello degli sviluppatori a contratto, ma basando la scelta prevalentemente su questioni di convenienza economica - il team remoto è acquisito in quanto manovalanza sostituibile, e come tale viene trattato (e poco importa che spesso siano persone parecchio più competenti di chi li stipendia). Con un modello di produzione del genere, l'onere di garantire un prodotto all'altezza dei requisiti non può che passare a chi esegue il testing. >> E il programma che ne esce è comunque un buon programma, anche se chi lo ha >> sviluppato non l'ha nemmeno mai visto o usato. > Concordo anche qua. Se cambiate "è comunque" con "può essere comunque", allora sono d'accordo anche io: ma non è affatto sempre vero, e il modello che avete descritto sta cambiando già da parecchio perché ha evidenti limiti. Ad esempio, il fatto che la rappresentatività degli stakeholder nel processo produttivo è troppo ridotta (clienti ed utenti sono generalmente coinvolti solo sulla carta, prima di iniziare, oppure nel test a prodotto realizzato); e ovviamente il fatto che un documento di specifiche preciso è rigido è costosissimo da ottenere e risulta spesso malamente inadeguato. Agile programming, anyone? Antonio -- Per iscriversi (o disiscriversi), basta spedire un messaggio con OGGETTO "subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx