Convencer é melhor do que impor

Em tempos de agile, tem algumas coisas que são um pouco difíceis de algumas pessoas/times adorarem como prática. Por exemplo: como fazer com que desenvolvedores façam testes automatizados, de preferência usando a abordagem TDD? Pode parecer fácil, mas só quem já tentou sabe como é difícil e como existe resistência na quebra do paradigma.

Pra resolver o problema temos basicamente 2 opções: (1) Alguém obriga todos do time a fazer os testes automatizados e ponto final, ou (2) utilizar-se de algum método que os convença que essa prática trás ganhos significativos.

Método da imposiçãomoleque

Nesse método, alguém da hierarquia acima obriga toda a equipe/time a começar a fazer testes, geralmente aplicando um certo terrorismo. Já vi esse método ser usado algumas vezes. O argumento geralmente é que convencer é muito complicado, e como as pessoas são muito resistêntes a mudanças, perde-se muito tempo.

Eu vejo alguns problemas nessa abordagem:

  1. Quando você faz alguma coisa por pura obrigação, a tendência é não fazer direto e reclamar o tempo todo.
  2. Provavelmente vai demorar mais tempo para obter resultados satisfatórios (i.e. testes corretos).
  3. Existe a possibilidade de desmotivação geral do time.

Método do convencimentopair_programming_emerleite

Vamos ser francos: convencer é realmente complicado, convencer é chato, convencer estressa bastante. Então por que convencer?

Bem, o grande lance são os benefícios. Quando o profissional percebe valor real daquilo que está fazendo, certamente fará com mais entusiasmo, obterá melhores resultados e isso trará retorno para a empresa.

Um exemplo concreto

Pra não ficar só na teoria vamos a prática …

Certa vez, fui trabalhar numa equipe onde ninguém sabia fazer TDD. Essa equipe tinha uns 5 desenvolvedores, comigo 6. Demorei bastante tempo pra que todos enxergassem o valor da prática. Foi muito difícil. Foi um exercício diário de perseverança junto com as pessoas para que elas não desistissem.

Alguns pontos que foram críticos:

  • Existe uma forte sensação de perda de tempo
  • Na primeira dificuldade as pessoas querem desistir
  • Num primeiro momento não se consegue ver retorno algum do que foi feito
  • Muito difícil perceber testes como investimento

A estrátegia que usei pra vencer esses pontos:

  • Programar em par com cada um do time fazendo rodízios constantes
  • No momento de alterar algum código forçar um bug (sem o colega perceber) em outra parte do sistema (pra mostrar o benefício dos testes)
  • Mostrar a segurança que os testes estão trazendo no momento de refatorar e/ou adicionar novas funcionalidades
  • Encaminhar artigos, screencasts, e quaisquer materiais de apoio, de preferência materiais divertidos
  • Observar toda oportunidade que surgir no momento que estiver pareando para mostrar o benefício dos testes

A parte que eu mais gosto é de forçar um erro sem que o colega perceba, rs. Nesse momento eu pergunto: Imagina se eu não tivesse os testes? Esse erro poderia ir para produção, você não acha? Geralmente a resposta é um silêncio seguido de uma risadinha, indicando que a pessoa está conseguindo perceber o valor da prática.

Conclusão

Existem diversas maneiras de mudar o comportamento de uma equipe/time. Intruduzir práticas novas é bem complicado. A maioria das pessoas não está muito disposta a mudar e isso complica muito. Mesmo assim, acredito fortemente que as pessoas precisam perceber valor no que estão fazendo, para que isso seja definitivo.

Portanto, na minha opinião, convencer é melhor do que impor.

Sobre o Autor:

Emerson Macedo Leite

Emerson Macedo Leite

É Desenvolvedor Sênior na globo.com, sediado no Rio de Janeiro. Possui vasta experiência como Arquiteto/Desenvolvedor nos ramos de telecomunicações, seguros, bancos, portais, entre outros. Entusiasta de metodologias ágeis, também é professor de cusos de extensão em faculdades. Escreve regularmente em seu blog de tecnologia – http://codificando.com

5 thoughts on “Convencer é melhor do que impor

  1. Emerson, me convenceu.🙂
    Brincadeiras a parte, compartilho da mesma opinião e fico entusiasmada com artigos como o seu que mostram de maneira simples e direta que o convencimento oferece resultados dificilmente alcançados de maneira efetiva pela imposição.
    Grata por compartilhar de sua experiência.Abraços.

  2. Post muito bom Emerson. Parabéns!

    Eu me identifiquei bastante com o que escreveu principalmente por que já passei por uma situação muito parecida com a sua.

    Além do que você comentou sobre a dificuldade em escolher entre a imposição e o convencimento da equipe, vejo outro tabu também: como um tester pode conseguir “vencer” neste contexto, como o autor da idéia?

    É este o meu caso. Ninguém na minha equipe conhecia TDD. Comecei a explicar, “plantar a idéia” mas, não tinha como convencê-los por que eles diziam que na minha posição “estava fácil” querer mudar o processo, porém, eles nunca enxergaram a real necessidade e o que mudaria com o TDD. No fim não insisti mais! Não desisti mas vejo que para a aceitação de uma idéia como esta é necessário ser no mínimo maduro para, pelo menos, ouvir as idéias e argumentar perante elas.

    E, após esta experiência eu tive a impressão que para por em prática uma idéia deste tipo é necessário estar na área de desenvolvimento ou estar em um cargo de liderança. Poucos dão crédito para o que os testers, como eu, falam! Segundo eles nós não criamos, só colocamos defeito nas coisas que os outros fazem. :-/
    Ai fica complicado. Qual sua opinião Emerson? Gostaria de trocar uma idéia sobre isso se possível! 🙂

    Obrigada.
    Abraços,
    Renata

    • Olá Renata.

      De fato sem credibilidade é bem difícil ser ouvido. Meu conselho é que você domine bem a técnica, tente fazer algum tipo de apresentação e também tente de alguma forma no dia a dia pegar uma situação onde você consiga mostrar o valor da prática de TDD / Testes.

      No mais, entre em contato no que precisar de ajuda.

      Abraços,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s