Torna-te, pois, responsável 3
Definitivamente, cremos que empresas modernas devem quebrar
suas
barreiras egocêntricas, fomentar a opinião
crítica de sua equipe,
digeri-las e agir de acordo. Como dizem no mundo do Software Livre,
nenhuma idéia é melhor que a idéia de
todos nós juntos. Estamos
falando dos princípios da Web 2.0,
onde a empresa deixa de ser o núcleo emanador de verdades e
torna-se a infra-estrutura
viabilizadora do
desenvolvimento de sua comunidade.
Transparência vs Compromisso
Numa empresa 2.0 (por mais que não tenham ainda formalizado este conceito), a gestão estratégica do negócio recebe influências diretas de seu nível operacional. Democracia a parte, não é novidade o incômodo trazido pelo modelo. Incômodo ainda maior, quando o bombardeio de críticas é acompanhado de descompromisso. Afinal, nossa cultura é mestre em seu senso crítico evasivo.Mas não é nisso que o pensamento 2.0 acredita. O Scrum, representante deste movimento, ilustra muito bem a situação com a estória do porco e da galinha.
Não queremos crítica por crítica. Queremos crítica construtiva, preferencialmente de pessoas devidamente compromissadas com seus resultados. O poder de voz não é gratuito. Grande carga de responsabilidade o acompanha.
O que faz todo o modelo tender ao colapso é o descompromisso dos participantes. Como galinhas, muitos querem se envolver na discussão, julgando e criticando, mas poucos estão realmente dispostos às últimas consequências de seus atos. Sendo desta forma, não se atinge um equilíbrio na balança da discussão vs ação. Empresas modernas precisam muito mais de gente que faz do que de gente que fala.

Discussão vs
Ação
Passei muitos anos de minha vida em busca de idéias
brilhantes e crente em sua escassez. De uns tempos pra cá,
entretanto, percebi que o
que nos falta não são ieias, mas capacidade de
realização.
Quando se abre as portas da gestão estratégica
para a discussão coletiva, o que se busca, nas entrelinhas,
é maior apoio para a construção de um
mundo novo. Sim, a opinião coletiva é importante
mas, muito mais relevante é o apoio braçal para
realização de parte do que fora discutido.
Então, críticas sem compromisso em nada
contribuem. Não adianta 20 pessoas aparecerem com mil
pedras e sugestões de melhorias e pensarem que 3 colegas
serão suficientes para
implementá-las. Queremos gente que compre a briga conosco e
que lute ao nosso lado. Esta é a contrapartida ao direito de
voz.
Não é raro ouvir que “aqui nesta empresa, muito
se fala, mas pouco se faz” sem que o interlocutor, inadvertidamente, se
dê conta que grande parcela do “muito se fala” e da
responsabilidade pelo “pouco se faz” está em seu poder.
Então, antes de muito propor, verifique sua capacidade de
contribuição com a proposta. E, antes
de criticar a pouca realização, examine sua
consciência e confirme sua isenção de
culpa. Se sua incapacidade de contribuição em
ideias está limitada por questão financeiras ou
sociais, busque-as, viabilize-as. Se sua
contribuição com planos do passado não
tem sido expressiva, reinvente-se. Se todo o fardo do desenvolvimento
corporativo estiver sobre seus ombros, reivindique! Tudo isso faz parte
das responsabilidades cotidianas do chamado “gestor” que agora, quer
compartilhá-las com todos.
Há aqueles que acreditem que novas ideias ou modelos de
trabalhos só serão implementados se promulgados
pela alta gestão do negócio. Nada mais 1.0 a
dizer. Esses ainda acreditam no poder
e certamente estão
alheios aos novos valores da adminsitração
moderna que define a autoridade
e a liderança
como palavras
de ordem. A gestão moderna não é uma
atividade resumida ao preenchimento de planilhas e acompanhamento de
gráficos. É a arte da
socialização, da
articulação política e da
resolução de conflitos.
Portanto, pare de culpar o mundo pelas suas mazelas. Culpe a si mesmo.
Busque no alto escalão apoio para a
eliminação de obstáculos, e
não decretos imperativos de
transformação. Faça amigos e influencie
pessoas. Desenvolva sua capacidade
de convencimento. Seja
líder. Seja um empreendedor.

“Tu te tornas eternamente responsável
por aquilo que cativas.”
Nota pra mim mesmo: discutir no próximo post como incentivar a Aptitude 2.0.
[]s
Retrospectiva da Turma 4 do minicurso de XP
Maré de Agilidade e Oxente Rails
Dois eventos de singular relevância estão para acontecer entre os dias 6 e 10/08.

Serão 3 dias de mini-cursos a preço de banana e um dia de palestras com figurinhas conhecidas da comunidade ágil. Check it out:
| Mini-Cursos | 06, 07 e 10/08 |
| Gerenciamento Ágil de Projetos com Scrum | Manoel Pimentel |
| eXtreme Programming (XP) na Prática | Renato Willi e Bruno Pedroso |
| Desenvolvimento web ágil com RubyOnRails | Alexandre Gomes |
| Gestão Ágil de Requisitos | Manoel Pimentel |
| Teste de aplicações Rails | Alexandre Gomes |
| Planejamento e estimativas em projetos ágeis | Fabiano Milani |
| Palestras | 08/08 |
| Manifesto 2.0 | Alexandre Gomes |
| Gestão Lean para desenvolvimento de Software | Manoel Pimentel |
| A Agilidade está no ar | Renato Willi e Bruno Pedroso |
| “Sou ágil, logo não planejo!” | Fabiano Milani |
| Governança no desenvolvimento ágil | Clavius Tales |
| Conhecendo o desenvolvimento guiado a testes e a comportamento(TDD e BDD) | Christiano Milfont |
| Onde mora a produtividade do Ruby on Rails? | Fabio Kung |
| Painel com todos os palestrantes: Agile na Real - Interoperabilidade, Mix e Adaptações | @ALL |
E é sempre bom lembrar que o Maré é um evento intinerante, da comunidade para a comunidade. Escreva para maredeagilidade no GMail e veja como levá-lo à sua cidade.

O Oxente Rails vai acontecer em Natal, RN, nos dias 07 e 08 de agosto. Na programação palestras sobre Ruby on Rails, Desenvolvimento Ágil e diversos outros temas – interessantes pra quem ainda não conhece e pra quem já trabalha na área. Voici:
| Palestras | 07
e 08/08 |
| Ruby on Rails: Ecossistema e Comunidade | Fábio Akita |
| Desenvolvimento Ágil | Tapajós e Sylvestre Mergulhão |
| Design de Interface para Programadores | Juarez Filho |
| BDD com Rails | Cauê Guerra |
| Deploy de Aplicações Rails | Dante Regis |
| A ciência por trás do Ruby | Carlos Brando |
| Pragmatic Thinking and Learning | Andy Hunt |
| Easy Rails: Ruby on Rails fácil no Windows e Linux | Régis Pires |
| Case de sucesso – Adotando Ruby on Rails no Tribunal de Justiça de Sergipe | Dante Régis |
| Scaling Rails: Redeparede.com servindo 7,5 milhões por mês | Tapajós e Sylvestre Mergulhão |
| Empreendedorismo e Rails em Natal | Paulo Fagiani e David William |
| The Hashrocket Way | Obie Fernandez |
Se você é ou quer ser um Railer, não perca esta chance de unir o útil (Rails) ao agradável (Natal).

É provável que alguns estejam a esta altura do post imaginando de quem foi a brilhante idéia de fazer, na mesma semana, dois eventos tão interessantes e tão relacionados entre si. E, o pior, com empresas patrocinantes e apoiadoras em comum! Bem, realmente, foi uma lástima, mas explico.
A movimentação do Oxente Rails começou um pouco antes dos preparativos pro Maré de Fortaleza e, na época, oferecemos ajuda para criação da marca e confecção do site, que foi prontamente aceita pelo Elomar e companhia. Algum tempo depois, a turma do XPCE se empolgou na realização do Maré de Agilidade e, em parceria com o JavaBahia e a Visão Ágil, iniciamos nosso apoio, contribuindo com experiências das edições anteriores.
Assim, a organização de ambos eventos correram de forma independente e surpreendentemente rápida ao ponto de que, quando alguém se tocou da possibilidade de conflito entre as iniciativas, já era tarde demais. Os locais de realização já haviam sido (ao custo de muito suor) reservados e a maior parte dos palestrantes já havia sido contactada. No caso específico do Maré, além do Oxente Rails, tínhamos até outras justificativas para mudança da data (como uma indisponibilidade na agenda do Alexandre Magno), mas ainda assim não foi possível :-(
Resta-nos então lamentar profundamente. Os eventos Maré de Agilidade e Oxente Rails são eventos amigos que se complementam totalmente. Seria um baita marco para o Nordeste se tivéssemos nos organizado melhor a fim de realizá-los em sequência. Mas enfim, ç’arrive. O Paulo Fagiani, um dos organizadores do Oxente é colega antigo do mundo Java e isso só piora as coisas. Mas uma razão pra não haver desculpas. Foi uma baita falta de comunicação *mesmo*. Talvez seja a hora de revermos alguns valores do XP… Nossas sinceras desculpas, comunidade.
[]s
1 Ano de Scrum e XP direto das Trincheiras! 4

Em pouco mais de um mês e com a ajuda de um monte de gente, o
livro foi traduzido, e seu lançamento
foi dia primeiro de novembro, no lançamento
da InfoQ Brasil.
Ao longo desse ano recebemos grandes presentes por esse trabalho,
como ter conhecido pessoalmente quem ajudou na
tradução e os depoimentos de quem foi
“ajudado” de alguma forma por ele.
De lá pra cá muita coisa aconteceu:
- Participamos de diversos eventos, como Encontro Ágil, Falando em Agile, Scrum Gathering Brazil, Agile Weekend, etc;
- Até criamos um evento, o Maré de Agilidade, que está indo para a 3a edição e tem perspectivas de outras mais;
- Fizemos diversas apresentações, para empresas e vários órgãos do governo;
- Começamos 2 Dojos;
- Criamos um curso, que está na 4a turma (com lista de espera para pelo menos mais 3!);
- Aparecemos em revista;
- Entre outras coisas.
Enfim, temos visto que a comunidade ágil tem crescido e
ganhado força. E somos felizes por contribuirmos e fazermos
parte dela.
Parabéns! E desejo que tenhamos muitos anos ainda melhores e
mais produtivos que esse!

Selenium e XPath 5
Quem já acompanha o blog deve ter percebido que usamos o Selenium. Primariamente, terminávamos versões preliminares da interface e usávamos o Selenium IDE para gerar scripts de testes.
Todavia, essa abordagem tinha complicações. Mudanças de design quebravam os testes. Para repará-los tínhamos de percorrer todos os caminhos através do Selenium IDE. Isso tomava tanto tempo que os testes de Selenium acabaram abandonados.
Depois de surpresas com algumas telas, retomamos os testes. Entretanto, estamos usando outra abordagem. Para compreendê-la, é preciso conhecer XPath.
XPath
XPath é uma pequena linguagem para selecionar elementos, atributos, textos etc. de um documento XML. Considere, por exemplo, o documento XML abaixo:
<library>
<book id="war-peace">
<title>War and Peace</title>
<edition>1</edition>
<author>Leon Tolstoi</author>
</book>
<book id="devil-backcountry">
<title>The Devil Pays in the Backcountry</title>
<edition>2</edition>
<author>Guimarães Rosa</author>
</book>
<book id="art1">
<title>The Art of Computer Programming</title>
<edition>1</edition>
<volume>1</volume>
<author>Donald Knuth</author>
</book>
<book id="mythical">
<title>The Mythical Man-month</title>
<edition>2</edition>
<author>Fred Brooks</author>
</book>
</library>
A expressão XPath /library/book[2] retorna o elemento
<book id="devil-backcountry">
<title>The Devil Pays in the Backcountry</title>
<edition>2</edition>
<author>Guimarães Rosa</author>
</book>
Já expressão /library/book[@id='mythical'] retorna o elemento:
<book id="mythical">
<title>The Mythical Man-month</title>
<edition>2</edition>
<author>Fred Brooks</author>
</book>
e a expressão /library/book[@id='mythical']/author/text() retorna
fred Brooks
Esses exemplos são só para instigar sua curiosidade. Para aprender mais sobre XPath, recomendamos o tutorial da W3Schools. O add-on XPath Checker do Firefox também é uma mão na roda. Se você utiliza Linux, ferramentas como o xgrep e xmlstarlet podem ajudar nos estudos e permitir scripts sofisticados.
Dando Nome aos Bois
Usando o Selenium IDE, nossos scripts pareciam com isso:
selenium.open("/admin/texts");
selenium.type("article_title", "Selenium e XPath");
selenium.click("Salvar");
selenium.waitForPageToLoad("30000");
selenium.click("Artigos");
selenium.waitForPageToLoad("30000");
selenium.click("link=Retornar");
assertFalse(selenium.isTextPresent("Erro"));
Porém, o cliente pedia para mudar coisas. “Artigos” passariam a ser ”posts”, “Retornar” viraria “Voltar”, e “Salvar” seria agora “Gravar”. O link inicial não seria mais /admin/texts, mas sim /administracao/conteudo. Haveria um texto de ajuda no final, explicando que “Erros podem ser problemas de login” - o que faria com que o texto “Erro” estivesse presente em todas as páginas.
Para evitar eses problemas, demos nomes (ou ids) a todos os links, input, div, td etc. Também passamos a utilizar menos o Selenium IDE, e a digitar caminhos XPath explícitos. Por exemplo, se o link referenciado por link=Artigos fosse gerado por:
<a href="artigos/listar.html">Artigos</a>
nós adicionaríamos um id ao link
<a id="listarArtigos" href="artigos/listar.html">Artigos</a>
e, no lugar de
selenium.click("link=Artigos");
utilizamos
selenium.click("//a[@id='listarArtigos']");
//a[@id='listar_artigos'] é o caminho XPath para o link, que agora é independente do texto apresentado e inequivocamente encontrável. O mesmo vale para os campos de formulários. Por exemplo, o botão submit referenciardo por Salvar seria algo como
<input type="submit" value="Salvar" />
Depois da “reforma”, nós adicionamos um atributo name ao submit:
<input name="salvarArtigo" type="submit" value="Salvar" />
Agora, poderemos referenciá-lo através do nome, que é independente da apresentação:
selenium.click("//input[@name='salvarArtigos']");
Segundo o novo padrão, nosso teste será algo como
selenium.open("/admin/texts");
selenium.type("//input[@name='artigo.titulo']", "Selenium e XPath");
selenium.click("//input[@name='salvarArtigos']");
selenium.waitForPageToLoad("30000");
selenium.click("//a[@id='listarArtigos']");
selenium.waitForPageToLoad("30000");
selenium.click("//a[@id='retornar']");
assertTrue(selenium.isTextPresent("//div[@id='Erro']"));
Ao final, note como o selenium.isTextPresent() também verifica a presença de um elemento, não de um texto.
Esse processo, embora exija um pouco mais de trabalho, permite gerar códigos mais robustos, fáceis de manter e reutilizáveis.
Turma 4: Minicurso XP na Prática 8
Iremos realizar no próximo dia 18 de Julho, sábado, a quarta turma do nosso minicurso “XP na Prática”.
Pra quem não conhece nem ouviu falar, o curso tem duração de 8 horas, de 8:30 a 18:30 (somos rigorosos no horário de início - senão não dá tempo!) e é estruturado da seguinte forma: Aproximadamente 1 hora de teoria e 7 de prática (vocês não vão dormir e vão ficar ligados o tempo todo - podem acreditar, é mão na massa!).
Vejam os posts e comentários dos participantes nas turmas anteriores: 1a turma , resultado da 1a turma, 2a turma, 3a turma.
A idéia continua sendo conduzir duas iterações, envolvendo levantamento das histórias, planejamento, programação, refactoring, teste, retrospectiva, etc. Iremos envolver 4 pessoas na realização do curso: um coach (Bruno Pedroso), um product-owner (eu) e dois monitores (Túlio e Carol) para ajudar o pessoal com TDD.
Este minicurso nasceu com idéia de arrecadar fundos para participarmos de eventos (os Marés de Agilidade), mas pela alta demanda, acabou ganhando força e hoje caminha sozinho e é bem reconhecido pela comunidade.
Os posts dos Marés: 1o em Brasília, anunciando Maré Salvador, resultado do Maré Bahia, anúncio prévio do Maré Fortaleza.
O valor das inscrições: R$ 155,00. Quem pagar até o dia 10/07 tem 10% de desconto, e a vaga só é garantida pra quem pagar.
Local: UnB, ICC norte.
Entregaremos certificados e serviremos coffee break.
Reserve logo sua vaga, mandando um email para renato ponto willi arroba sea tecnologia ponto com ponto br, com o seguinte assunto “inscrição curso XP”. Levaremos em conta a ordem de chegada das mensagens, então apresse-se!
Abraço,
Willi
