O que é um Agile Developer?

Recentemente, me peguei refletindo: se eu não tivesse meu próprio negócio e não prestasse consultorias, qual exatamente seria o meu cargo? Então, comecei a pensar: desenvolvo em várias linguagens de programação, tenho skills fortes com testes automatizados, TDD, clean code, já trabalhei com diversas plataformas em nuvem como AWS, Azure e GCP. Construí e gerenciei pipelines de Continuous Integration, Continuous Delivery e Continuous Deployment, trabalhei com Docker, Kubernetes e tantas outras ferramentas que nem consigo listar todas aqui.

Foi aí que identifiquei um ponto: tudo o que fiz está direta ou indiretamente ligado ao agile, mais precisamente ao que o pessoal do Extreme Programming fazia entre 2000 e 2015, que aos poucos foi se tornando o que hoje chamamos de DevOps. Depois de um tempo, cheguei à conclusão de que sou um Agile Developer. Fui pesquisar mais sobre isso e acabei chegando a algumas conclusões interessantes e, claro, mais perguntas.

A primeira dúvida que surgiu foi: como deve ser um Agile Developer? Quais habilidades são necessárias e que tipo de pessoa se encaixa nesse perfil? Ao longo dos meus anos de estudo aprofundado e trabalho com frameworks ágeis em diferentes posições, desenvolvi uma intuição sobre isso. Mas essa reflexão me levou a pensar profundamente sobre o tema e as razões por trás das minhas crenças.

O que queremos alcançar com o desenvolvimento ágil?

Para responder à pergunta sobre como deve ser um Agile Developer, primeiro precisamos nos questionar: “O que queremos alcançar?” O primeiro princípio do Manifesto Ágil afirma: “Nossa maior prioridade é satisfazer o cliente através da entrega antecipada e contínua de software valioso.”

Os benefícios prometidos pelo desenvolvimento ágil são: alta satisfação do cliente, ciclos curtos de entrega ao mercado, mudanças rápidas, mínimo overhead e alta qualidade.

Agora que temos uma ideia melhor do que queremos, podemos perguntar: “Como podemos alcançar esses objetivos?”

Fontes como o Manifesto Ágil, o Scrum Guide, as regras do XP e o Manifesto de Craftsmanship de Software contêm diretrizes. A partir dessas, extraí algumas palavras-chave e conceitos principais, categorizando-os da seguinte forma:

Conceitos gerais

  • Entrega frequente
  • Prazos curtos
  • Responder a mudanças
  • Software funcionando
  • Software bem elaborado
  • Adicionar valor de forma constante

Caráter/Personalidade

  • Indivíduos motivados
  • Apoio
  • Confiança
  • Auto-organização
  • Interação
  • Colaboração
  • Coragem
  • Foco
  • Comprometimento
  • Respeito
  • Transparência

Ferramentas técnicas

  • Comunicação Face2Face
  • Comunidade de profissionais
  • Integração contínua (CI)
  • Pair Programming (PP)
  • Test-driven development (TDD)
  • Propriedade coletiva do código

Conceitos sociais

  • Times
  • Parcerias
  • Reflexão
  • Simplicidade
  • Excelência técnica

Como deve ser uma pessoa para trabalhar nesse ambiente?

Com base nessas categorias, vejo uma pirâmide de três níveis, em que os níveis mais altos são os mais importantes.

Nível 1: Personalidade “compatível com o ágil” – Compartilhar os valores

As palavras-chave sugerem que, em um ambiente ágil, precisamos de pessoas motivadas, flexíveis, que gostem de trabalhar em equipe, se comuniquem bem e tenham curiosidade para aprender coisas novas, melhorar a si mesmas, o produto, as ferramentas, etc. Se a personalidade não estiver alinhada com os valores ágeis, será difícil alcançar a compreensão e a mentalidade necessária.

Nível 2: Mentalidade ágil – Compreender os princípios

No desenvolvimento ágil, responder a mudanças — de ambiente, requisitos, circunstâncias, etc. — é essencial. Essas respostas também incluem modificações no próprio processo de desenvolvimento para lidar com situações alteradas. Para ser capaz de adaptar um processo de desenvolvimento e manter os princípios ágeis, é necessária uma mentalidade ágil, que se desenvolve através da compreensão e vivência dos princípios ágeis. Se a compreensão e a mentalidade não estiverem presentes, as práticas serão escolhidas inadequadamente e sua aplicação não trará os resultados esperados.

Nível 3: Habilidades ágeis – Conhecer as práticas

O terceiro nível e a base da pirâmide são as habilidades na aplicação das práticas ágeis, que são baseadas nos princípios e projetadas para apoiá-los. Elas podem ser divididas em práticas gerais e específicas. As práticas gerais devem ser conhecidas por todos os membros da equipe, independentemente de seu papel. Já as específicas variam de acordo com o papel desempenhado.

O Agile Developer Ideal: Membro de equipe em forma de T

Voltando à pergunta original “Como deve ser um Agile Developer?”, o meu ideal é um membro de equipe em forma de T. Um membro de equipe em forma de T tem conhecimento profundo e habilidades em uma área específica, bem como habilidades básicas em outros tópicos relevantes, além de interesse em ampliar seu conjunto de habilidades.

Conclusão

A característica mais importante para um desenvolvedor em um contexto ágil é uma personalidade compatível com os valores e princípios ágeis. Além desse requisito básico, é necessário um conhecimento profundo das melhores práticas de desenvolvimento de software, bem como o conhecimento de práticas ágeis em geral e das específicas para desenvolvedores.

Embora a personalidade não seja algo que um curso possa ensinar, os princípios e as práticas podem ser ensinados. E, como a melhoria contínua é um dos princípios fundamentais do ágil, espera-se que um Agile Developer tenha um desejo de aprender. Assim, ele ou ela se torna um membro de equipe em forma de T, com uma mentalidade ágil e um conjunto de habilidades atualizadas em diferentes áreas.

Treinamentos relacionados com essa postagem

Leandro Costa

Sou desenvolvedor de software a desde 2008, além de programar gosto de esportes de aventura como rapel, tirolesa, trilhas de bike, apreciador de cervejas, baladas, motos e do bom e velho Rock’n Roll também gosto de história, ficção científica e de tecnologia. Atualmente sou consultor de Agile Software Delivery na Erudio Training e instrutor na Udemy.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *