Che cosa intendo per riuso delle idee?
Beh, è una specie di riuso del codice! Il riuso del codice è un
concetto molto importante della programmazione modulare, perché ci
permette di non riscrivere lo stesso codice più di una volta e di
testare con maggiore enfasi le parti di codice che vengono richiamate
più spesso. In modo analogo, il riuso delle idee ci dà la
possibilità di usare nuovamente delle idee che sono state proposte e
discusse anche secoli fa. Ma come fanno delle idee così antiche ad
essere rilevanti oggi, vi chiederete. Continuate a leggere e lo
scoprirete.
All'Agile Day 2011 Gabriele Lana ha
fatto una presentazione molto interessante per diversi motivi.
La professione dello sviluppatore - Gabriele Lana - Agile Day 2011 Roma from GrUSP on Vimeo.
All'inizio parla del fatto che i programmatori si vergognano di ammettere di essere programmatori.
Prosegue dicendo che l'agile funziona
se le persone presenti all'interno del team sono etiche e
tecnicamente abili, ma non se la squadra non è composta da persone
competenti.
Poi ha cominciato a parlare degli anni
1990 come il medio evo dello sviluppo software in quanto è stata
creata una industria formata da aziende di tipo piramidale nelle
quali la condizione più bassa e svantaggiata, quella che veniva
ricoperta dai servi della gleba, viene occupata dai programmatori.
Successivamente viene introdotto un
modello degenerativo auto-alimentante, fatto in quattro passi:
- l'attività svolta dal programmatore deve essere una commodity, che secondo la definizione Treccani è una «Sostanza ottenuta industrialmente in grande quantità (prodotto di massa), e in genere a basso costo, che costituisce la base per la produzione di molte altre sostanze.»
- da ciò consegue il fatto che l'attività del programmatore debba essere di qualità mediocre, cosa che è sbagliata, perché i mediocri dovrebbero essere i computer
- di conseguenza, per una persona che svolge il mestiere del programmatore, sarà inutile cercare di migliorare le proprie capacità
- e quindi il lavoro di questa classe sociale sarà sempre a basso prezzo e sostituibile
Ora cercherò di fare il primo riuso di
idee. Nella teoria marxiana del valore:
Marx nota inoltre come il lavoro alienato dai lavoratori possa essere reso sociale solo annullandone le particolarità concrete ed utili e riducendolo a lavoro generico, qualitativamente identico, i cui prodotti sono proprio per questo equivalenti e quantitativamente comparabili. Nella società capitalista, in cui il dominio degli sfruttatori sugli sfruttati non avviene in virtù di arbitrio o prescrizioni legislative, morali o religiose, i rapporti sociali tra gli individui assumono così l’apparenza di rapporti tra cose poiché mediati dai rapporti di scambio, cioè da un meccanismo impersonale dominato dai prodotti del lavoro. Tali prodotti, vere e proprie "cristallizzazioni" di lavoro astratto, realizzano il proprio prezzo scambiandosi contro denaro.
A mio avviso, questo estratto da
Wikipedia, che riassume parte del pensiero di Karl Marx scritto ne Il
Capitale nell'anno 1870, è simile a quello che Gabriele Lana ci ha
raccontato nel 2011. Perché questa somiglianza dovrebbe essere
significativa, se nel 1870 non esistevano né computer né tantomeno
i programmatori? Perché il pensiero di Marx è l'equivalente di
codice che sta in produzione da 140 anni: diversi filosofi l'hanno
analizzato e ne hanno evidenziato i punti di forza e di debolezza. Da sottolineare che sia Marx che Lana si rendono conto che la situazione attuale sia dovuta alla mancanza di etica e di morale.
Nella sua presentazione, Lana spiega un
concetto da lui formulato con questa tautologia: «Software
developers are needed for software development … no one else is …
». Con questo vuole dire che lo sviluppatore software è l'unica
figura assolutamente indispensabile nel processo di realizzazione dei
Understanding the professional programmer di Gerald M Weimberg:
programmi. Cita un passo dell'opera:
programmi. Cita un passo dell'opera:
Programming a computer does require intelligence. Indeed, it requires so much intelligence that nobody really does it very well. Sure, some programmers are better than others, but we all bump and crash around like overgrown infants. Why? Because programming is by far the hardest intellectual task that human beings have tried to do. Ever.
Il passo citato sembra affermare che
l'attività del programmatore sia il compito intellettuale più
complicato che possa essere fatto.
La soluzione che Lana propone è quella
di aderire ad una etica professionale. Vengono esposti i principi
seguenti:
- prendersi la responsabilità di ciò che si sta facendo, in particolare del codice che viene scritto
- essere orgogliosi del proprio lavoro
- continuare a migliorare le proprie competenze, attraverso la pratica, a prescindere dal fatto che nel modello degenerativo di cui sopra
- imparare a comunicare in modo efficace
- essere maestro di qualcuno
- essere allievo di qualcuno
- partecipare alle comunità di programmatori
- non partecipare ad attività che sono contrarie alle proprie convinzioni etiche
- prendersi buona cura del proprio corpo
A proposito di etica, uno dei filosofi
che l'ha analizzata maggiormente è :
Immanuel Kant. Secondo Tale filosofo ogni persona deve essere contemporaneamente legislatore e giudice di sé. Questo implica che un individuo può scegliere degli imperativi categorici per il proprio comportamento, ma li può applicare solamente a sé stesso, non ad una terza persona.
Immanuel Kant. Secondo Tale filosofo ogni persona deve essere contemporaneamente legislatore e giudice di sé. Questo implica che un individuo può scegliere degli imperativi categorici per il proprio comportamento, ma li può applicare solamente a sé stesso, non ad una terza persona.
Kant distingue fra massime e imperativi. Le massime sono prescrizioni di carattere puramente soggettivo (es. vendicarsi delle offese subite), invece gli imperativi sono prescrizioni di carattere oggettivo. Gli imperativi a loro volta si suddividono in imperativi ipotetici e in imperativi categorici. I primi si presentano nella forma "se... allora": possono essere regole dell'abilità (se vuoi essere un bravo medico devi...) o consigli della prudenza (se vuoi raggiungere il benessere devi...).
A me sembra che i principi proposti da
Lana siano degli imperativi categorici. Egli ha scelto quei principi etici per se stesso e ha chiarito il
fatto che lui non ama né i comitati etici, né il dover dire a
qualcun altro il modo in cui questo si debba comportare.
Un altro modo che Lana presenta per
modificare il modello degenerativo è quello di non essere un eroe.
Non essere un eroe nel senso di non essere la persona che fa sforzi
disumani per tenere insieme una attività che altrimenti fallirebbe,
rischiando di compromettere la propria salute. In cambio di questi
sforzi enormi lo sviluppatore riceve il riconoscimento sociale e
l'ammirazione dei suoi pari. Perché questo sistema funziona? Ce lo
spiega Elton George Mayo:
- L’uomo è fondamentalmente motivato da bisogni di natura
sociale, ed ottiene dal rapporto con gli altri il suo senso di
identità
- In conseguenza della rivoluzione industriale e
dell’organizzazione scientifica del lavoro, il lavoro stesso è
privo di significato intrinseco, il quale va ricercato nei rapporti
sociali che si formano sul lavoro
- Il lavoratore è più influenzato dalla forza sociale del gruppo che da incentivi e controlli della Direzione
- Il lavoratore risponde alla Direzione nella misura in cui
essa ne rispetta i bisogni sociali.
A me questa situazione, più che gli
eroi, ricorda la leggenda di Sisifo, ritenuto
essere fondatore e primo re di Corinto. Sisifo rivela al dio fluviale Asopo il fatto che Zeus avesse rapito la sua figlia. In cambio Asopo creò una sorgente perenne d'acqua a Corinto che prima aveva problemi a reperirne. Zeus mandò Tanato, l'impersonificazione stessa della morte a catturare Sisifo, ma egli riuscì a far ubriacare e a legare Tanato. Da ciò conseguì il fatto che la morte scomparve dalla Terra e nelle battaglie nessuno moriva.
essere fondatore e primo re di Corinto. Sisifo rivela al dio fluviale Asopo il fatto che Zeus avesse rapito la sua figlia. In cambio Asopo creò una sorgente perenne d'acqua a Corinto che prima aveva problemi a reperirne. Zeus mandò Tanato, l'impersonificazione stessa della morte a catturare Sisifo, ma egli riuscì a far ubriacare e a legare Tanato. Da ciò conseguì il fatto che la morte scomparve dalla Terra e nelle battaglie nessuno moriva.
Per punire Sisifo Zeus decise che
Sisifo avrebbe dovuto spingere un masso dalla base alla cima di un
monte. Tuttavia, ogni volta che Sisifo raggiungeva la cima, il masso
rotolava nuovamente alla base del monte. Ogni volta, e per
l'eternità, Sisifo avrebbe dovuto ricominciare da capo la sua
scalata senza mai riuscirci.
Io penso che diversi programmatori
siano consapevoli del proprio valore, ma sfruttano il proprio valore,
e quindi anche il proprio potere contrattuale per lavorare il meno
possibile e non fare tutte quelle attività che sono difficili e
rischiose. E quindi ciò che avviene è che le attività più
potenzialmente problematiche vengono assegnate alle persone che
potenzialmente hanno la minore capacità di risolverle, perché
queste persone hanno meno potere contrattuale.
Penso anche che se gli operai sono riusciti attraverso gli scioperi ad ottenere maggiori diritti, possano riuscirci anche gli sviluppatori, ma prima di arrivare a ciò è necessario che i programmatori più esperti si sacrifichino per i meno esperti, organizzando manifestazioni, scioperi, occupazioni. Ciò è il contrario della situazione attuale, nella quale i programmatori più esperti approfittano dei propri vantaggi per far fare la maggior parte del lavoro ai meno esperti.
Penso anche che se gli operai sono riusciti attraverso gli scioperi ad ottenere maggiori diritti, possano riuscirci anche gli sviluppatori, ma prima di arrivare a ciò è necessario che i programmatori più esperti si sacrifichino per i meno esperti, organizzando manifestazioni, scioperi, occupazioni. Ciò è il contrario della situazione attuale, nella quale i programmatori più esperti approfittano dei propri vantaggi per far fare la maggior parte del lavoro ai meno esperti.
Nessun commento:
Posta un commento