Thursday, July 23, 2009

Breastfeeding To Adults

Responsibility in Software Development

Accountability in software development è uno degli articoli più interessanti che parlano di etica nella produzione del software. Le parole di Kent Beck rappresentano molto bene anche le mie convinzioni su questa bella professione . Ho pensato che valesse la pena leggere questo lungo e piacevole testo in lingua italiana. Buona lettura.

"Una volta un contadino intervistò un ragazzo per un lavoro come bracciante in fattoria. Il ragazzo disse una cosa che lasciò particolarmente perplesso il contadino: 'io posso dormire quando soffia il vento'. Il contadino non sapeva cosa egli intendesse, ma il ragazzo sembrava competente ed quindi fu assunto.

Qualche mese dopo il contadino venne svegliato nel bel mezzo della notte da una tremenda bufera. Preso dal panico, corse verso la branda dove trovò il bracciante quasi addormentato. Scuotendolo brutalmente per svegliarlo, gli disse:

'Dobbiamo far rientrare gli animali!'.
'Sono già dentro.'

'Dobbiamo chiudere le finestre.'
'Sono già chiuse.'

'Dobbiamo ricoprire il fieno.'
'Già fatto.'

Dopo che i suoi timori fossero calati ed essere stato rassicurato che tutto era al suo posto, il contadino finalmente comprese il senso di quella misteriosa frase. Avendo cura di terminare ogni lavoro e lasciando la fattoria al sicuro ogni notte, il bracciante poteva dormire quando il vento soffiava.


Il contadino tornò a letto e disse alla moglie ciò che aveva appena appreso. Lei sorrise con un aria d'intesa e i due tornarono a dormire, cullati dal suono della burrasca."


Lo sviluppo del software va meglio se lavoro in modo che io possa "dormire quando soffia il vento". Sono più a mio agio con me stesso e il mio lavoro, i miei clienti sono più soddisfatti dai risultati che vedono, e i miei colleghi del team possono fidarsi di me. Comunque trovo difficile raggiungere questo livello di performance con la sola forza di volontà. Mi serve il supporto, l'incoraggiamento, e la responsabilità. Ho bisogno di essere un membro di una comunità per dare il massimo. Un elemento chiave per tutto ciò è la responsabilità: impegnarsi, lavorare in modo che io ne sia orgoglioso e rendere conto sulle mie attività in modo chiaro e diretto.


When I began to talk about responsibility, I met a lot of resistance from programmers who said they hate the idea of \u200b\u200bresponsibility. They told stories such as "... and then he said: 'I consider responsible for the timing of this extension project." This is not what I'm talking about. This blame is an attempt to avoid or deflect the consequences. Blaming is a poor basis from which to work. Blaming requires that you spend time and energy to protect yourself. In an environment of blame is not appropriate to say what you do and what we do not know. Lets blame everyone concerned about those who are out there ready to catch him. All energy spending to hide could be used to interact and add value to the project. The job losses in efficiency. Accountability is a powerful basis from which to start working. Working well and seamlessly creates strong bonds. Accepting responsibility is preparing the ground for the satisfaction of a job well done. It is a pity that the word 'responsibility' is misunderstood, because it obscures a useful concept.


Responsibility may be offered, and even delegated request, but can not be forced. 'I feel responsible' does not make sense. 'You're guilty' or 'I hope that you accept the consequences' can make sense, even se sono indice di relazioni di lavoro che poggiano su fragili fondamenta. I manager possono richiedere e demandare responsabilità. Per esempio, un manager può domandare che il software sia pronto per il deploy alla fine della settimana, così che i progressi del team siano visibili. D'altro canto la responsabilità può essere offerta anche se non richiesta. "Vi posso mostrare un log di come ho speso il mio tempo la settimana scorsa' è un offerta di responsabilità.


Offro responsabilità per dimostrare la mia affidabilità e per incoraggiare me stesso a comportarmi al meglio. Per esempio, quando rendo conto alla mia sposa della questioni finanziarie, noi discutiamo su come spendere il denaro. Ci accordiamo on the objectives and principles of our finances. I appreciate her for how to really spend money. If I lose ten dollars for something useless, I would say just the way things are and wait for his answer. Having these preliminary discussions, and knowing that I will have to be accountable, help me spend my money more wisely and grow our relationship.


Likewise, when I program I offer responsibility, as a way to prove my reliability encouraging my best behavior. Pair programming (the pair programming); test-first programming (programming by writing the first test), continuous integration, daily cycles, weekly and Annual rendered visible relaxation, and estimates are one way to get public commitments and be accountable for my activities. Know to be honest and responsible influence the way I do my work, so as to know that I am hiding or concealing adversely affect the way I do my job. Take responsibility for my choice and action away the guilt. There is no shame if all you do is visible to everyone.


When I program with a colleague, makes visible my thoughts and listen to her. If you are confused, I can tell. If I do not like our design, I can tell. We are free to seek an explanation or to obtain ideas from others. If we can not reach a better solution, then we go on as best we can. There is nothing to hide in this process, no guilt, no shame.


Test-first programming is a form of responsibility, especially when practiced in its purest form where no application code was written without a test that fails first. The tests are an account of my thoughts when I program. They record the problems they consider. If a problem is not represented by a test, it is presumed not to have considered when I was planning.


Seamless integration realizes the team, every hour, of what si sta facendo al sistema. Fermarmi nel lavoro per assicurarmi che tutti i test girano, aggiunge responsabilità, così come accertarmi che, nel caso io abbia creato un problema al sistema, ne ponga rimedio prima di procedere.


Avere i cicli di pianificazione visibili offre l'opportunità di rendere pubblici gli impegni e, alla fine del ciclo, di render conto di questi impegni. Non sono molto contento di perdere tempo, di non domandare aiuto quando serve, di evidenziare un'informazione incerta, quando so che dovrò renderne conto al termine della mia giornata o della mia settimana. 'Ho perso tre giorni per non aver fissato il difetto 142 perché avevo timore di chiedere aiuto' è più imbarazzante che chiedere help.


make estimates also means taking commitments. Without estimates I do not know what is necessary to do a thing. Without some uncertainty in my plans, however, I also know that regularly not keep these commitments. Make and keep commitments is an important component in the process of creating strong bonds during development, links that will assist the team in times of difficulty.


Sometimes I'm afraid of the consequences of offering liability ('if only they knew how long it took to correct this defect, I think I'm an idiot'). Work much better as they are reliable. If you are an idiot, you better take awareness, rather than pretend it is not true. If I did my best, I have nothing to fear from scrutiny by others. If I estimate with confidence that a job will take me four months, then if someone tells me they would like to have in two months, I really candid about what they think. I respect their position without necessarily share it. I can listen to their needs, not just the words or sounds. I look for ways that are mutually beneficial to meet these needs. If I'm unsure of my estimates and my work, then "I can sleep when the wind blows."


When I see the development of work in the IT world, I see a trend towards teams and organizations that have responsabilità. Il livello 5 del CMMi ha diversi pro e contro, ma quello che effettivamente offre è visibilità. Team a quel livello dicono ciò che hanno pianificato di fare e riporteranno ciò che fanno veramente. Dopodiché essi rifletteranno su questa esperienza per migliorarsi.


Responsabilità non è semplicemente una questione di riportare i fatti. Se so che ho creato dei difetti questa settimana e riporto ciò in modo accurato, allora sono onesto, non responsabile. Non ho completato il mio lavoro in modo da conviverci serenamente. Non sto agendo in modo da costruire dei legami, legami necessari al buon sviluppo del software. Extreme Programming è un modo di lavorare. I suoi principi e le sue pratiche contribuiscono alla mia abilità di essere responsabile quando sviluppo. La responsabilità mi incoraggia a fare il mio lavoro al meglio. Resisto alla tentazione di trovare delle scorciatoie o di lasciare del brutto codice quando so che altri lo vedranno e se ne prenderanno cura.


La responsabilità è importante a diversi livelli. Essere responsabile con me stesso, anche se è si tratta solo di fare e rivedere le to-do list quotidianamente, aiuta a focalizzare i miei sforzi e ottenere soddisfazione da ciò che porto a compimento. Dentro un team, la responsabilità incoraggia la formazione di fiducia, una fiducia che libera energia da usare per raggiungere gli obiettivi condivisi invece che per proteggere il proprio giardinetto. Teams that have responsibility to their clients and their organization, they also generate confidence. When a team says "six months", but others may rely on this information and act on that information, assured that the team is pursuing a mutual interest. Some development organization has gone so far as to make publicly available
their internal quality metrics, giving responsibility to the world at large to demonstrate their reliability, to communicate what they believe in what they do and encourage one to do my best.

My experience is that the more alta la mia responsabilità, quanto più esprimo
i miei impegni apertamente e direttamente e riporto le mie attività, quanto più ascolto con empatia gli altri, tanto più vedo risultati migliori. Quanto più sono responsabile, tanto più sono creativo, tanto più è il lavoro che porto a termine, tanto più creo valore, tanto più apprendo velocemente, tanto più "posso dormire quando soffia il vento".
Kent Beck





0 comments:

Post a Comment