AgileAndArt

The Art Improving Agile Software Development

Browsing Posts in Patterns

Agradeço a todo pessoal da Bluesoft por me oferecer a oportunidade de mostrar o meu trabalho. Nessa entrevista, falo brevemente sobre Padrões para Introduzir Novas Ideias. Mais detalhes podem ser encontrados no meu blog.

Para quem quiser, seguem os slides da minha palestra no Encontro Ágil 2009:

Muitas pessoas me perguntaram qual foi o resultado da minha defesa de mestrado e
qual avaliação que a banca fez. Nós tínhamos uma câmera filmando a defesa, mas a fita acabou (#fail) justamente um pouco depois de a banca começar a argumentar sobre a dissertação. Somente as pessoas que estavam presentes tiveram o privilégio de saber qual foi o impacto que essa defesa teve no Instituto de Matemática e Estatística da USP. Digo isso não para me gabar do meu trabalho, mas porque o fato foi realmente EMOCIONANTE e, sem brincadeira, teve gente que até chorou!
Vou tentar resumir brevemente algumas coisas. Provavelmente não vou lembrar de tudo, mas acho que conseguirei saciar a curiosidade de alguns. Quanto a apresentação da defesa em si, só recebi elogios. Mas logo que essa apresentação que vocês assistiram terminou, comecei a ser literalmente massacrado pelo meu texto na dissertação. A banca não perdoou e criticou muito o meu trabalho. “Eu procurei ouvi-los e, quer saber, ajudou muito!” – tudo que eu aprendi durante quatro anos estudando padrões para introduzir novas ideias serviu demais nesse dia. Eles eram os céticos, eu tinha de ouvi-los.
O principal ponto levantado era o de que a minha dissertação estava mais para livro do que para tese de mestrado. Segundo a banca, aquele não era um trabalho científico. Agora eu vou contar incrível, que poucas pessoas sabem:
Um dos membros da banca era suplente de outro professor que não veio. É regra escolher um suplente para cada membro da banca, em caso de enfermidade ou impossibilidade de o membro escolhido comparecer. Na verdade, depois da defesa, eu fiquei sabendo que o membro da banca que não veio não estava doente ou teve outro compromisso. Ele não veio simplesmente porque ele considerou o meu trabalho uma afronta e que ele nunca aprovaria um absurdo daqueles. Mas tudo bem, o suplente que veio no lugar dele veio e, no final, aprovou o trabalho.
Mas como é que a banca afinal aprovou o trabalho, se ele foi tão criticado? Aí vem a parte mais emocionante daquele dia. Vamos recapitular: a banca tinha 3 membros – um deles era o meu orientador, o segundo era um professor escolhido e o terceiro era o suplente do professor que não veio por não gostar do trabalho. Além desses 3, um quarto professor estava presente na defesa. Era o suplente do segundo professor. Ele quis, por livre vontade, assistir a defesa. Depois que os três integrantes oficiais da banca falaram, o quarto professor pediu a palavra e começou a refutar todos os argumentos contra que tinham sido levantados pela banca. Ele me defendeu!
O resultado final é que o trabalho foi aprovado, com algumas ressalvas. Na visão da banca, eu precisaria tornar a dissertação mais científica, fazer afirmações fortes somente com referências fortes. A minha grande indagação é que boa parte da dissertação era justamente questionar a falta de humanidade na computação. Um texto só é científico se ele é sério, objetivo, chato, impessoal, em linguagem de máquina? O meu texto não tinha nada disso. Eu tomei (propositadamente) várias liberdades, usei uma linguagem mais informal, quebrei regras, usei toda subjetividade que eu podia. Agora eu teria que mudá-lo para ser o que eles queriam. Claro que eu não ia abrir mão do meu ponto.
Um membro da banca me perguntou:
– Você não acha que está sendo muito pretensioso quando diz que tem o objetivo de “fazer com que as ideias dessa dissertação se disseminem para que outros realizem novos trabalhos científicos e tecnológicos em benefício da humanidade.”?
O professor que me defendeu disse que eu estava certíssimo e que esse trabalho realmente continha elementos que poderiam beneficiar as pessoas. Ponto.

Outra indagação foi:
– Porque você não foi defender essa tese na Filosofia ou na Faculdade de Educação?
Como assim??? Tudo que eu estava falando ali dizia respeito a COMPUTAÇÃO! Sei que a pergunta do professor na foi maldosa, mas eu não tive organização suficiente na hora para explicar para ele que eu estava falando da falta de HUMANIDADE dentro da COMPUTAÇÃO. Como diz Peter Brook: “Nos dias de hoje, a tragédia da Arte é que nela não há Ciência; e a tragédia da Ciência é que nela não há emoção”.
No final, refiz algumas partes, tentando realmente buscar referências para dar força a tudo aquilo que eu estava falando, mas mantendo a minha “linha artística” de expressar as ideias. Tomei o cuidado de explicar, logo no início do texto, que ele era diferente do habitual, para que leitores desavisados não se sentissem ofendidos. Assim que meu orientador revisar a versão final da tese eu coloco ela aqui para que todos possam ler. Não prometo que ela é tão divertida quanto a apresentação de defesa, mas acho que ela está bem fácil de ler (pelo menos algumas pessoas que não entendem nada de computação leram e me disseram que gostaram).

O importante é que eu fiquei muito empolgado com toda essa repercussão da minha defesa. Vou tentar dedicar um tempo fazendo mais paródias de computação, criar outras peças como essa (acreditem, deu trabalho!). Acho que vale muito a pena, porque sei que esse tipo de conteúdo enriquece muito as pessoas, elas realmente se envolvem mais num assunto quando ativamos o lado direito do cérebro.
No meu próximo post falarei sobre todas as referências que encontrei relacionando Ciência e Computação com Arte. Só para dar uma ideia do que eu quero dizer, Donald Knuth, que escreveu um dos livros mais famosos da Computação: The Art of Computer Programming,
afirmou que a programação deixou de ser uma arte para tornar-se ciência por uma simples razão: começamos a chamá-la de “ciência da computação”
OBS: as fotos foram tiradas durante a minha viagem de lua-de-mel. Em breve, publicarei algumas no meu picasa.
OBS2: faltou a explicação do título desse post. Na verdade a verdadeira explicação virá no próximo post. Aguardem!

I finally finished my M.Sc. degree in Computer Science. I already have the video, which is right now just in portuguese, but soon I’ll have subtitles in English. I’d like to thank everybody who came to watch the performance. I hope you have a lot of fun with it.

Thanks for my N95 I had two cameras filming the event, so I’ve got a great final result using Apple iMovie software for edition.

Here is the video, enjoy!


I invite you to my master thesis defense next monday at IME-USP – Here’s is the address and time:

  • Rua do Matão, 1000 – Universidade de São Paulo.
  • 2pm in Auditório Jacy Monteiro
The thesis is about Patterns for introducing new ideas in the software industry.
You can read the whole thesis in this address. Here’s the abstract in English:
The software industry is very dynamic and new ideas arise all the time from virtually any part of the world. It is not guaranteed that these ideas will be adopted, mainly because, among other obstacles, the solution may imply in having people change their way of thinking. Different from people, computers recieve a well defined command and execute it precisely. We should take into account that human beings are independent and unpredictable. Despite of this unpredictability, we can find some behavioral patterns to help us deal with several situations, allowing us to achieve our objectives.
This work brings a small introduction into the pattern concept and a presentation of the 48 Patterns for Introducing New Ideas. These patterns provide some insight into the difficult task of introducing new ideas into any organization. We show that if the idea brings cultural changes of any kind, then the task is even more complicated. We also suggest four new patterns that can be attached to the original catalog.
In one of these new patterns we show the great importance of combining artistic activities with the day-to-day activities of people who work in software development and how Arts can help us to introduce new ideas. The study of some practices like theater, painting, poetry, music and meditation allowed us to find some connection elements between the purely mathematical side of the human mind and its creative, artistic one. Software development must be approached as a “human activity”, rather than a solely technical or logical one. Above all, there are two groups of people involved in the process: the software creators and the users. Although a barrier appears to separate these two groups, in this paper we will assert that this divide can be bridged if IT professional nurture their artistic and interpersonal relationship skills in addition to their obvious technical ones.
Refactoring is a well known technique in software development. In short terms, refactoring is to execute a sequence of small well defined steps with the intention to let your code base more clear, more beautiful, more elegant. The result of a continuous refactoring practice is a simpler and easier to maintain software project. There many times also when refactoring takes the programmer to create new abstractions and code generalizations.

Let’s go to a simple example: suppose we are programming a Person entity class. This class contains attributes like name, weight, age, gender, spoken language. After some time, I find out that I need to insert cats in my system for some reason. Then, I create the Cat class with its attributes name, weight, gender and hair color. After that understand I’ve created an ambiguity. Both and Cat and Person classes have some attributes in common. By doing a refactoring, I can then create the Animal class, with the common attributes (name, weight, gender) and make the Cat and Person classes “inherit” the animal properties.

The idea of extracting abstractions is to identify the essence of a system and describe its most deeply characteristics with simple elements. To achieve this essence you need a lot of experience and sweat. You need mastery you programming skills and use the tools and programming languages in the most proper way. It is an Art.

Play the video bellow to see how refactoring was made by Pablo Picasso in his paintings:

First, the painter draw a ordinary bull, which can be recognized by a 5 year old child. Irrelevants parts are being remove at each new stage of the draw (there are 11 pictures), besides the main idea of the bull remains. The whole genious desconstruction proccess takes six weeks. Even with few drawn lines, the last painting can still clearly represent the bull. They are the animal’s essence.

Every capable programmer, software creator, needs to know how to recognize essential aspects of the domain he is programming for. The technic helps to execute it, but geniality is rooted in intuitive thinking and the artistic capacity of identifying and extracting the essence.

(Portuguese version)

Turn resistance to the new idea to your advantage. Every innovation, in true, breaks something. So, every resistance is welcome. We need the resistance to test our new ideas and convictions. Skeptics are a gift! They give us information about our progress and teach us how we can adapt our approach.

Maybe, the most important point in changing is how we deal with fear. Every change process implies in fear on both sides: those who are being changed want to avoid the pain of (maybe) loose something; those who are promoting change have the fear that their idea are wrong or won’t be accepted. When both these sides get in contact surges an impasse. Resistance is not the main force that takes a change to failure. Reaction to resistance is the problem.

You will hardly get 100% approval of a new idea. This is welcome. Every law that doesn’t let opened the possibility of its execution, precisely because of its disobedience, is an arbitrary law. Second the Sanhedrin Treaty, is case of judgment of capital punishment – when it was necessary 23 judges -, if there was an unanimity in the sentence to the defendant, the judgment was disqualified and the defendant liberated. The sense of this kind of law is the distrust that a process can be conducted so well, that there is no doubt about it and can’t exist any different interpretation about this situation. (Nilton Bonder – The Immoral Soul)

It is difficult to listen to people when we don’t agree with some point of view. We usually get fixed on our point of view. Another approach would be encourage the other to talk more about his point. Just listening to him could help you both to understand each other.

Ask for the help of the resistants. Make sure they know you are listening to them. Truly listen and try to learn with them. Try to make them undestand that accepting the new idea does not mean throw away their own ideas. Don’t assume that a skeptic posture lasts forever. Someone who initialy seems against can turn into your favor.

This pattern allows you to use the resistance to your own benefit, instead of using it against you. People who watch you dealing well with skeptics will respect and admire you for this.

(English translation of this post)

A new video I made last week at Locaweb about Patterns for Introducing New Ideas. Sorry, but these videos are in Portuguese.

Click the YouTube link up here to see other parts… :-)

Participei hoje do primeiro tutorial na QCON San Francisco 2008. O tutorial foi sobre o assunto que eu venho estudando há algum tempo: Padrões para Introduzir Novas Idéias. Em termos de conteúdo, não vi nada muito novo. Mas o que mais me impressionou foi a presença de espírito da Linda Rising. Foi um enorme prazer estar com ela todo esse dia e ouví-la falar sobre os padrões. A sua fala é tranqüila, clara e perfeita. Nunca tinha vista alguém da área da computação se expressar de forma tão maravilhosa. Me sinto privilegiado de ter participado de um tutorial ao lado de uma das mulheres que seja talvez um dos maiores nomes da computação atual.

Para compartilhar o momento com todos, filmei alguns momentos. Linda propôs que, para aprender melhor sobre os padrões do livro Fearless Change, algumas pessoas fizessem encenações de um script escrito por ela. São pequenas sketches que ilustram momentos de personagens como o Inovador, o Evangelista e outros. Espero que todos gostem!

Clique no link “YouTube” acima para ver os outros vídeos relacionados

Sem Medo

2 comments

Transforme a resistência à nova idéia em algo a seu favor. Toda inovação, no fundo, rompe com algo. Logo, a resistência é bem vinda. Precisamos da resistência para testar nossas idéias e convicções. Os céticos são um presente. Eles nos dão informações sobre o caminho que estamos seguindo e sobre como podemos adaptar nossa abordagem.

Talvez o ponto mais essencial da mudança é a nossa forma de lidar com o medo. Num processo de mudança existe medo de dois lados: quem está sendo mudado quer evitar a dor de ter que, talvez, perder algo; quem está promovendo a mudança tem medo de que sua idéia esteja errada. Quando esses dois lados entram em choque surge um impasse. A resistência não é a principal razão pela qual uma mudança falha. É a reação à resistência que causa problema.

Dificilmente se obterá 100% de aprovação numa nova idéia. E isso é bem vindo. Toda lei que não deixa em aberto a possibilidade de sua execução, justamente por sua desobediência, é uma arbitrariedade. Segundo o Tratado de Sanhedrin, em caso de julgamento de penas capitais – quando se faziam necessários 23 juízes -, caso houvesse uma unanimidade na condenação do réu, o julgamento era desqualificado e este liberado. O sentido de tal lei é a desconfiança de que um processo possa ser tão bem conduzido que não paire qualquer dúvida quanto a uma leitura diferente da situação. (A Alma Imoral – Nilton Bonder)

É difícil ouvir quando não concordamos com algum ponto de vista. Normalmente ficamos fixados em nosso ponto de vista. Uma outra abordagem seria encorajar a outra pessoa a falar mais sobre o ponto de vista dela. Só de ouvi-la já ajudará vocês a se entenderem.

Peça ajuda aos resistentes. Certifique-se de que eles sabem que você está ouvindo. Ouça de verdade e tente aprender com ele. Tente fazê-los entender que aceitar a nova idéia não significa jogar fora a experiência deles. Não assuma que a posição cética é fixa. Alguém que inicialmente parecia contra pode se virar a seu favor.

Esse padrão permite que você use a resistência a seu favor, ao invés de a usarem contra você. As pessoas que virem você lidar com os céticos de forma respeitosa vão admirá-lo por isso.

Switch to our mobile site