Doutrinação ágil

Bolo de fubá
Bolo de fubá

Para aqueles que buscam uma solução rápida, uma receita de bolo de fubá exclusiva.

Uma das primeiras conclusões que se chega em um graduação em psicologia é que não há uma receita pronta para estabelecer uma melhor interação entre pessoas. Não é só jogar um ovo, meia xícara de leite, colocar no micro-ondas por dez minutos e teremos uma equipe capacitada, motivada e alinhada com os objetivos da empresa. E quanto mais olho os textos e as ementas de cursos sobre as metodologias ágeis sob esta perspectiva mais vejo que tudo é feito como receita de bolo, sendo que cada empresa demanda uma certa proporção de ingredientes que não é inicialmente dada. Antes não havia método algum, entendo, mas agora saboreamos bolo solado como se fosse ambrosia.

Costumava rir dos gerentes que não percebiam que metodologias envolviam tanto processos quanto pessoas. Não faço mais isso. Vejo mais claramente agora qual é o custo alienante para cada profissional de uma célula de desenvolvimento.

É extremamente difícil escapar de oferecer uma solução para uma equipe de tecnologia. Lembrando de todas as piadas de humanas versus exatas que ouvi em todos estes anos nesta indústria vital, esta diferença de pensamento existe e dificulta a comunicação. A solução de problemas é o modo de vida de um programador. Como dizer que para certas coisas no mundo corporativo não há uma solução? Ou então que a busca por uma interação pessoal ótima é uma utopia saudável para todo profissional. O mais perto de conseguir isso foi quando sugeri que alguém devesse desligar o computador para que a rede voltasse a funcionar. Não faz sentido algum, mas conseguimos chegar a um resultado favorável empiricamente!

Todos aqueles instrutores de metodologias ágeis tiveram mais sucesso do que eu. Eles apareceram com um manifesto, algumas dinâmicas de grupo e nenhuma pergunta sobre como o mundo funciona deveria ser feita. Alguns textos ou palestras são claramente doutrinações e não treinamentos. Funciona do mesmo modo que o computador com problema de rede: desliga a cultura da empresa, desfragmenta o disco e liga de novo.

O problema com doutrinas é que não é nada científico, o que torna tudo muito irônico. Enquanto tentamos provar nossas soluções com o código logicamente construído, todo o processo das metodologias ágeis que envolvem pessoas é ritualístico e dogmático.

Há pouco ouvi um astrólogo defendendo sua prática em uma recepção de consultório médico. Para ele, o método científico não dá conta de explicar todos os fenômenos e isso inclui principalmente os que são relacionados às pessoas. Deste modo, tudo que não pode ser explicado deve ser validado, tal como a astrologia!

Para qualquer bom cético, a lógica do astrólogo não faz sentido. Mas porque aceitamos então a opinião de alguém como a solução perfeita para nossos problemas de interação pessoal? E por que compramos esta solução sem questionar ou mesmo investigar qual é a formação do instrutor? O que acontece quando a metodologia falha, a empresa quebra, todo mundo é demitido? Vamos culpar a ira dos deuses?

Ainda não sabemos se a psicologia é uma ciência ou não. Alguns autores acreditam que esta é uma disciplina nova demais para ser estabelecida como ciência e que a neurociência nos trará mais indícios com os avanços da tecnologia. Mas certamente a complexidade do indivíduo não pode ser explicada por um método que usa duas variáveis para validar qualquer teoria. De qualquer forma, há muitos outros profissionais tentando fugir destas doutrinas para explicar estes fenômenos um a um, contextualizados nos meios onde eles ocorrem. Com times de tecnologia, não deveria ser diferente. O que falta então para evoluirmos de doutrina para um método ágil de verdade?

Tags: ,

O mito do pau pra toda obra em tecnologia

Stack

Nas últimas semanas, fiz uma provocação grosseira no Twitter e não consegui respostas satisfatórias: qual seria a diferença entre webmaster e full stack web developer? A complexidade do trabalho com o mercado digital, do planejamento à publicação na Web, foi incrementada absurdamente com a profissionalização do mercado e foi uma resposta às falhas grosseiras como a bolha dotcom. Por que então estamos adotando uma visão tão generalista quanto a da década de 1990?

Quando li o texto de Laurence Gellert tive a sensação de que o termo foi mal traduzido e contextualizado nos times de desenvolvimento brasileiros (ou não: Facebook aparenta ser uma empresa com uma cultura muito equivocada). Afinal, nossa visão sobre generalistas e especialistas é muito diferente da dos norte-americanos, por exemplo. A experiência da formação universitária lá é construída pelo aluno durante curso. No Brasil, estamos presos a currículos altamente especializados e herméticos. A flexibilidade de currículos universitários no exterior permite acompanhar melhor a tendência volátil do mercado de trabalho. Se a especialização foi valorizada na segunda metade do século XX, a generalização e a interdisciplinaridade são diferenciais na tal era do conhecimento.

Neste momento, vemos as universidades brasileiras buscando esta interdisciplinaridade e vejo um retorno ainda pouco útil. Ao invés de uma visão ampla de negócio que o mercado exige, os alunos dos cursos de tecnologia estão ocupando suas grades com Direitos Humanos e Qualidade de Vida (oi?). Do que adianta alterar cursos para introduzir disciplinas novas (multidisciplinaridade) se as grades não são construídas para favorecer a construção do conhecimento entre elas (interdisciplinaridade, transdisciplinaridade)?

Um resultado provável disso, ou algo que não foi solucionado ainda, é a eterna busca pelo acúmulo de técnicas (techné) ao invés de práticas (práxis). Ao buscar uma vaga para times de tecnologia, é fácil encontrar uma lista gigante de requisitos que vão do domínio do Photoshop ao realização de deploy de aplicações. Não é só irreal como opressivo. As graduações não preparam este tipo de generalista e nem deveria. Quantas vezes ouvi relatos de jovens passando o fim de semana debruçados sobre tutoriais para aprender uma nova técnica enquanto não conseguem relacionar o porquê daquela técnica ser boa para o negócio. E se somente a técnica é valorizada no mercado, por que não trocar uma graduação por um curso da técnica mais quente no desenvolvimento de aplicações do ano?

O Scrum, por exemplo, não ajuda nesta questão. Os ciclos rápidos de desenvolvimento são bons para manter uma alta eficiência do time e sabemos bem que o custo disso é um corte na participação na estratégia da empresa. A alienação é tal que há desenvolvedores que agradecem quando recebem as tarefas prontas e mastigadas bastando definir complexidade.

Apesar das origens do Kanban nas fábricas da Toyota, o agile não era sobre transformar pessoas em engrenagens e sim formar times autogerenciáveis com seres pensantes e ativos. Os métodos ágeis não combinam com alienação! A motivação básica de cada um no time deveria ser entender como o produto funciona do princípio ao fim. No entanto, como fazer isso se o profissional de TI só entra em contato com o mundo fora da célula no planning e no review através dos olhos do product owner?

A cultura interdisciplinar ou transdisciplinar é algo que devemos construir nas próximas gerações de profissionais do mercado digital. É uma característica cultural intrínseca à formação de cada um de nós. Generalizando absurdamente, é como se fosse escrito em cada um de nós em uma linguagem de programação baixo nível e tal característica não se muda com dinâmicas de grupo e muito menos com o acúmulo de técnicas aprendidas.

No entanto, podemos começar conhecendo melhor cada um do time. Uma matriz de competências, por exemplo, é uma ferramenta muito mais eficaz e é de implementação rápida. Incentivar a diversidade dentro do time também é uma ótima forma de aumentar a criatividade e facilitar soluções mais integradas com a estratégia de negócio do que com as técnicas utilizadas (ou quem nunca sugeriu uma tarefa porque é fácil em fazer na linguagem da moda XPTO?).

Existem paliativos para reduzir a alienação de desenvolvedores do processo de trabalho e cada time pode ter uma ideia para compartilhar com a comunidade. Mas é essencial relembrar que o que é bom para o Facebook pode não ser bom para a sua empresa.

Outros olhares sobre o tal full stack developer:

Tags: , , ,

Sobre HTML e robôs

A convite dos queridos do Niteroi.JS compartilhei um pouco sobre a história do HTML e da sua relação com os diversos robôs da Web. Segue aí o ppt:

Obs.: esqueci de compartilhar o URL Linter, bookmark essencial para trabalhar com os compartilhamentos no Facebook. :)
Tags: , , ,

Criação + Scrum: mais uma visão sobre UX e desenvolvimento ágil

Entre o artigo anterior e este, foram seis meses onde fiz um curso para CSM, certifiquei-me, troquei de emprego e comecei trabalhar com outros projetos que integram equipes que usam metodologias de experiência do usuário e as que usam as metodologias de desenvolvimento ágil. Gostaria de compartilhar algumas destas novas experiências.

Durante o curso, surgiu o conceito de haver um time separado para ajudar o product owner a definir o backlog. Em um PO team podem estar contempladas várias competências que não estão relacionadas a desenvolvimento tecnológico, inclusive as de UX, como arquitetos de informação, designers de interfaces e até mesmo desenvolvedores front-end. Tudo depende de qual seja a definição de pronto (ou definition of readyDoR) para o dev team começar suas histórias: layouts ou código HTML.

Nada impede que este time associado ao product owner seja uma célula própria e que siga os ritos Scrum como tal.

Um cenário

Em um projeto em que estou envolvida agora, a empresa que o implementou optou por não ser obrigatório encerrar uma história ao final de um sprint. Aceitar que uma história pode precisar de mais um sprint para ser concluída significa tempo para que as tarefas que gerem dependências podem ser feitas sem sobrecarregar alguns dos membros do time, como o front-end e o QA, sem que seja encarado como uma falha do processo (e do time). A estrutura básica de uma história de desenvolvimento simples pode ter os seguintes conjuntos de tarefas:

  • Criar cenários de testes
  • Desenvolver código server-side
  • Desenvolver código HTML/CSS/JS
  • Desenvolver código server-side (dependente do código HTML/CSS/JS)
  • Testar (dependente de todas as tarefas anteriores)

É importante enfatizar o conceito de minimizar a dependência entre tarefas para não cair nos mesmos problemas de um modelo em cascata. A estrutura de um time e os processos envolvidos devem facilitar o paralelismo entre as tarefas de uma história para que idealmente se consiga iniciar e concluir uma história em um sprint. As dependências são problemas do mundo real que ficam mais explícito com a variedade de competências que uma história pode requerir. Por exemplo, para realizar testes funcionar é necessário que o desenvolvedor já tenha feito sua parte de acordo com o que foi planejado.

(De novo, o que exponho aqui são formas que alguns times do mundo real acharam para solucionar problemas. Tenho certeza que outros times por aí podem ter encontrado outras soluções bem mais fiéis ao framework.)

Neste cenário, o DoR inclui layouts e arquitetura que foram desenvolvidas pelo PO team ou por outra célula. Vemos aqui, de novo, que as histórias do designer não são as mesmas que as do programador. Muitas vezes, a visão de como o sistema deve funcionar não está completa até a aprovação do layout das telas.

Por outro lado, histórias podem ser criadas apenas para incorporar outras tarefas de UX, como testes de usabilidade. Estas histórias podem estar relacionadas a datas de releases, por exemplo.

Mais informações sobre Scrum podem ser encontradas no Agile Atlas.

Este artigo é uma continuação do texto “Criação + Scrum: como encaixar UX nas metodologias ágeis“, de 11/11/2012.

Tags: ,
Página 1 de 5712345...102030...Última »