The summary and professionalism discussion about the software engineering profession.
Contents in English, comments in Catalan.
Report
Share
Report
Share
1 of 22
Download to read offline
More Related Content
Be professional: We Rule the World
1. @drpicox
1
We rule the world!
És el nostre poder,
però també la nostra
responsabilitat.
Penseu una cosa, qui entén de codi,
entén del que està escrit i entén el
que està fent, sou vosaltres. Si
vosaltres li dieu al vostre cap que
alguna cosa cal canviar-la, el vostre
cap pot contestar el que sigui, que al
final, us acabarà fent cas perquè
vosaltres enteneu el problema. I ell
no. Vosaltres maneu.
BY @DRPICOX
2. @drpicox
2
Recordeu quan vàrem
parlar d'aquesta foto?
Recordeu que surt a la
fotografia?
Exacte. És un accident
del 737 Max 8, un dels
models d'avions que es
va estavellar fins a dues
vegades per culpa d'un
error software. Va matar
més de 300 persones.
Que creieu que li va
passar als responsables?
3. @drpicox
3
Doncs res... per ara.
L'avió va ser aprovat pel
Govern dels EUA, hi ha
molta gent amb poder
implicada. Però, ja se
senten les veus que
demanen presó. És
qüestió de temps que
això canviï.
4. @drpicox
4
«This was not a
corporate decision, from my
point of view, and to my best
knowledge today. This was a couple
of software engineers who put this
in for whatever reasons.»
I això ho recordeu? El cas de
Volkswagen que amb software va
fer trampes i falsificar proves de
contaminació? Al principi van
passar, i els cotxes es van vendre...
però això va desfermar la ira dels
responsables als EUA. Malgrat que
al principi van passar les proves i
els cotxes van ser aprovats, van
decidir trobar als culpables i fer-los
pagar per enganyar al govern.
I el directiu de Volkswagen,
declarant davant del
Congrés dels EUA no se li
acudeix una altra cosa que
marcar com a responsables a
qui va picar el codi i rentar-
se les mans. I sabeu que? El
van escoltar. Ell va anar a
presó, però no va ser l'únic.
5. @drpicox
5
La pena més gran la va pagar
l'enginyer en cap que treballava a
Alemanya. Malgrat el jutge
reconèixer que no era el cervell de
l'operació, sí que considera que es
va mantenir en la posició de forma
molt còmoda sense parar-ho i
cobrant els seus 350.000$ l'any.
6. @drpicox
6
Tots dos casos han requerit que
els informàtics col·laboressin i
fossin còmplices en l'escriptura
de software que mata gent, o que
fa trampes i trenca l'acord social
entre les persones creant
malestar i desconfiança.
Però tenim el poder d'aturar-ho. I
si tenim el poder d'aturar-ho,
tenim el deure de fer-ho. Però com
ho podem fer? Per un costat ens
arrisquem a ser despatxats si no
ens avenim amb les ordres, però
per l'altra part, potser és un error
nostre el que mata gent. Com ho
podem fer?
La nostra no és la primera
professió que es troba davant
d'aquest problema. No és la
primera professió que necessita
un mecanisme per poder evitar
que ens obliguin a fer coses poc
ètiques, o que malgrat que fem
tot el que estigui en les nostres
mans, podem matar a algú.
La primera professió va ser la de
medicina, i ja per això, en època
dels grecs, es va introduir el
jurament hipocràtic.
El jurament hipocràtic va permetre als metges rebutjar pràctiques de
tortura o recerca de guerra que malmetien la salut de les persones.
També els va permetre justificar que malgrat que un pacient morís,
havien fet tot el que havien pogut. Com poder fer el mateix nosaltres?
7. @drpicox
7
TEST DRIVEN DEVELOPMENT
▸ You are not allowed to write any production code unless
it is to make a failing unit test pass.
▸ You are not allowed to write any more of a unit test than
is suf
fi
cient to fail; and compilation failures are failures.
▸ You are not allowed to write any more production code
than is suf
fi
cient to pass the one failing unit test.
Doncs el TDD va ser un dels primers intents d'aconseguir aquest jurament.
Amb el TDD pots justificar que has fet tot lo possible per a que el programa
funcioni correctament. Que has seguit tots els passos i no t'has deixat cap.
Que si no ha funcionat, és perquè el problema va més enllà de tota previsió.
Però faltava una part, la nostra relació amb la
societat, i igual que el metge amb el pacient, la
nostra relació amb el nostre client.
8. @drpicox
8
AGILE MANIFESTO
▸ Individuals and interactions
over processes and tools
▸ Working software
over comprehensive documentation
▸ Customer collaboration
over contract negotiation
▸ Responding to change
over following a plan
I aquí va aparèixer l'Agile. Els
principis de l'Agile. On
principi vol dir "Regla de
conducta". El codi que dóna
uns mínims a tot professional
a relacionar-se de forma
adequada amb el seu client.
Perquè no és tan sols no
lesionar físicament a algú,
també és no lesionar-lo
moralment o econòmicament.
9. @drpicox
9
SOFTWARE CRAFTSMANSHIP MANIFESTO
▸ Not only working software,
but also well-crafted software
▸ Not only responding to change,
but also steadily adding value
▸ Not only individuals and interactions,
but also a community of professionals
▸ Not only customer collaboration,
but also productive partnerships
Well-crafted software, cal
invertir el temps que calgui per
fer-ho ben fet. L'excusa és per
demà no serveix.
Però l'Agile va resultar insuficient en uns casos, i
malinterpretats en altres. I va aparèixer el Software
Craftsmanship. Aquest demana anar més enllà del deure.
Res de grans refactors i fer el cranc.
Sempre cal afegir valor, usar els
patrons correctes al moment correcte.
Lo nou no pot malmetre lo antic.
No coneixia aquella
tecnologia no és excusa. Som
tots una comunitat, tots ens
recolzem entre nosaltres.
Compartim les novetats, i
ajudem a qui obliguen a fer
coses poc ètiques.
I el nostre cap no és el nostre cap, és el nostre soci. No és
un ésser superior intocable. El seu èxit és el nostre èxit,
el seu fracàs és el nostre. Hem de tractar-lo d'igual a
igual, fer-li saber el que té i aturar-lo on toca.
10. @drpicox
10
THE CUSTOMER BILL OF RIGHTS
▸ You have the right to an overall plan and to know what can be
accomplished when and at what cost.
▸ You have the right to get the most possible value out of every iteration.
▸ You have the right to see progress in a running system, proven to work
by passing repeatable tests that you specify.
▸ You have the right to change your mind, to substitute functionality, and
to change priorities without paying exorbitant costs.
▸ You have the right to be informed of schedule and estimate changes, in
time to choose how to reduce the scope to meet a required date. You can
cancel at any time and be left with a useful working system re
fl
ecting
investment to date.
Aquest és l'últim pas d'aquesta evolució, revolució, que ha
esdevingut els últims anys. Igual que la carta de drets dels EUA,
els professionals d'allà han començat a redactar la carta de drets
pels informàtics, i com en aquesta pàgina, pels seus clients. Que
estem obligats a fer? Que estem obligats moralment a donar?
I que diu? Que pot saber que i amb quin cost. Treure el màxim profit de cada iteració. Que li farem
tests repetibles! I que els especifica ell. Que res de documents, les coses s'han de veure. Que ens pot
demanar canvis sense sobrecost, el típic truc quan no vols fer algo, posar un preu ridículament
alt. I si s'atura abans, el que ha quedat, encara que no fos el resultat, cal que tingui valor.
11. @drpicox
11
THE DEVELOPER BILL OF RIGHTS
▸ You have the right to know what is needed with clear
declarations of priority.
▸ You have the right to produce high-quality work at all times.
▸ You have the right to ask for and receive help from peers,
managers, and customers.
▸ You have the right to make and update your own estimates.
▸ You have the right to accept your responsibilities instead of
having them assigned to you.
I ara sí, per protegir-nos directament. Volem les prioritats, que no ens tornin bojos. Poden
canviar, però cal que ens diguin clarament quines són les prioritats. Que ens ho facin entendre.
Volem treballar amb màxima qualitat. No ens poden
obligar fer les coses malament per anar de pressa o
retallar costos. No poden obligar-nos a perjudicar la
nostra reputació o jugar-nos anar a presó.
Tots som una comunitat,
professionals més clients. Cal
que ens ajudem entre tots.
Nosaltres tenim el poder i
nosaltres podem estimar els
costos, i també canviar quan cal.
Ningú ens pot obligar acceptar
unes estimacions diferents.
I finalment, nosaltres tenim el dret de decidir si acceptem o no una
feina. No ens la poden assignar, ens l'autoassignem. I com hem
vist, els jutges concorden amb això. És la nostra responsabilitat.
12. @drpicox
12
Si penseu que som aliens a tot això, el 20 de setembre de 2017, a Catalunya,
van ocórrer uns fets que van trasbalsar a tota la comunitat de professionals.
Aquell dia, molts professionals, alguns amb amenaces legals, altres a punta d'arma
de foc, van ser obligats a cometre actes que van en contra aquestes cartes de drets.
Alguns d'ells es van veure obligats a executar ordres que ells creien
immorals, altres ordres que contravenien els seus contractes, alguns
d'ells, fins i tot ordres que contravenien lleis i acords internacionals.
I fins i tot havent col·laborat, com tenen el poder de canviar les coses
en qualsevol moment, una desena d'ells van ser empresonats i aïllats
de tothom durant tres dies. Tres dies en què la família no va saber ni
tan sols si el pare o la mare dels seus nens eren vius o morts.
L' INFORMÀTIC ÉS
CONSIDERA UNA
ARMA DE GUERRA I
NO TÉ DRETS.
• Diuen que el passat 1 d’octubre va començar la primera Ciberguerra
de la Unió Europea
• L’ISOC (Internet Society) carrega contra la censura d’internet que viu
Catalunya
• Els “bots russos” entren en la campanya pel referèndum l’1 d’octubre
• Qui són els 15 detinguts?
• Ja n’hi ha prou!
• Com fer un país ciberprotegit
• Simplement llibertat
• DotCat Registry Of
fi
ces Raided by Spanish Police
13. @drpicox
13
+
ETHICS TESTING
Tota la feina està per fer. Hem d'establir la carta de drets i seguir-la. Cal
aconseguir fer valer els nostres valors i la nostra professionalitat. És
una professió nova i hem d'aconseguir els mateixos drets i deures que
tenen metges, advocats, arquitectes i altres enginyers.
I això és la suma de dues parts.
Per un costat hem de ser moralment impecables.
No tan sols amb els nostres principis, sinó
també amb els que ens rodegen.
I per l'altre costat hem de ser tècnicament excel·lents. I això només ho
aconseguim amb Testing. És impensable aspirar a un reconeixement
professional si com a col·lectiu no usem el TDD de forma impecable.
14. @drpicox
"TESTING SHOWS
THE PRESENCE,
NOT THE ABSENCE
OF BUGS"
Edsger W. Dijkstra, 1968
14
Vaig
inventar la programació estructurada en què
es prohibeix el Goto. Això ho vaig fer perquè vaig descobrir,
que sense un Goto, puc demostrar amb regles matemàtiques que
qualsevol programa funciona i fa el que ha de fer. Amb absoluta certesa.
Imagino un futur on tenim una llibreria d'algoritmes, demostrats
formalment com teoremes matemàtics, que podem usar i
compondre per crear aplicacions lliure de bugs.
Un futur sense cap bug.
I per això no
m'agrada el testing, no em
serveix, amb testing mai
demostrarem que un
programa no te bugs.
I això tampoc els hi va agradar als acadèmics, i
per això la universitat mai va apostar pel testing.
Però el mercat va abandonar aquesta via. Per què?
Perquè va serguir el testing? Quin valor té?
15. @drpicox
15
SOFTWARE IS SCIENCE
I això és ciència. Observació.
No podem verificar aplicacions formalment
perquè ni tan sols els clients tenen clar el que
volen. Cal descobrir quines són les funcionalitats
i com s'ha de comportar el nostre producte.
Testing.
Ens mou els mateixos valors que a la ciència:
el mètode científic.
16. @drpicox
SOFTWARE IS SCIENCE
LEAN
16
IDEAS
CODE
DATA
BUILD
Unit tests
Usability tests
Continous integration
Refactoring
MEASURE
Split Tests
Funnel analysis
Continuous deployment
LEARN
Split Tests
Interviews
5 Whys
Falsifiable Hypothesis
Smoke tests
I com s'aplica el mètode científic a la nostra professió?
Amb Lean.
Sigui essent nosaltres el responsable, o fent
"partnership" amb els nostres clients (o
caps), hem d'aplicar els valors de Lean.
Això vol dir testing automàtic, mantenir el
codi amb qualitat, compilat i desplegament
automàtic i continu. Recollir dades per
obtenir evidències, no quedar-se en la
superfície quan alguna cosa no va bé. Posar
a prova les nostres creences, ser capaços de
reconèixer i rectificar els nostres errors, de
codi o de concepció. I sobretot, reduir la
quantitat de residu (producte sense valor)
escurçant al màxim el temps d'incertesa.
17. @drpicox
SOFTWARE IS SCIENCE
TESTING
17
RED
GREEN
REFACTOR
TEST CODE
CLEAN
YOU
START
HERE
I si el Lean defineix el gra gruixut, el TDD defineix el
gra fi. És el mètode científic en la mínima expressió.
Ens dóna certesa de què el que
entreguem fa el que fa.
Tant el testing com el codi segueixen el
camí adequat. Amb la màxima
qualitat possible.
30s
loop
El que contínuament,
mai esperant més de 30
segons o un minut, es
revela que tot segueix
funcionant
18. @drpicox
SOFTWARE IS SCIENCE
TECHNICAL EXCELLENCE
▸ Testing Techinques and Patterns
▸ Plugin Architecture
▸ SOLID Principles
▸ Patterns
▸ The understanding of basic principles
18
Cal que mantinguem l'excel·lència tècnica.
Cal evitar els "bad smells". I això ho fem
aplicant els patrons i els principis de disseny.
Però no en qualsevol moment. Quan faci falta.
Encara que ho pensem, no tenim cap bola de vidre
per veure el futur.
20. @drpicox
SOFTWARE IS SCIENCE
DEEP UNDERSTANDING OF UNDERLYING MECHANISMS
▸ Coding
→
Direct manipulation of data
▸ Procedures
→
Goals and constraints
▸ Text dump
→
Spatial representations
▸ Sequential
→
Concurrent
20
I hem vist que programar, i construir
software és molt més ampli del que ens
han ensenyat. Que ja en els anys '70
havien descobert i posat en marxa moltes
innovacions útils, avui en dia oblidades.
No les podem oblidar.
21. @drpicox
AGILE
QUOTES
▸ “Iterations do not fail. The purpose of an iteration is to
generate data for managers.”
▸ “As velocity falls, pressure on the team builds. This causes the
points to in
fl
ate. That in
fl
ation can hide the falling velocity.”
▸ “No word needs to be spoken. No agreement needs to be
written. But both sides understand that they bene
fi
t from
defects. A black market economy of defects emerges. This
disease permeates many organizations, and if it’s not
terminal, it’s certainly debilitating.”
21
I durant la vostra carrera professional
sentireu i viureu moltes coses. Necessitareu
uns valors i uns principis per aferrar-vos,
per saber que és correcte i que no.
22. BE PROFESSIONAL
QUESTION EVERYTHING
KEEP ALWAYS LEARNING
ANYONE CAN BE RIGHT, INCLUDING YOU
22
I en definitiva. Qüestioneu tot. Estigueu
sempre aprenent. Tothom pot tenir raó, fins i
tot vosaltres.