Estudo comentado: O que faz alguém excelente em desenvolvimento de software?

Adriano Croco
6 min readSep 19, 2022

Olá!

No texto de hoje, gostaria de comentar um artigo que encontrei na internet sobre atributos que definem uma pessoa desenvolvedora excelente.

O artigo começa contextualizando os métodos previamente usados em materiais prévios similares para quantificar a competência de uma pessoa desenvolvedora, passando por habilidades como resolução de conflitos, triagem de bugs e outras habilidades técnicas genéricas. Atributos que não são considerados tão relevantes hoje em dia pelos autores. Alguns outros artigos analisados pelos autores simplesmente sugerem algumas características arbitrárias sem fonte definida, no entanto.

O método usado nesse artigo analisado foi: Se basear em alguns estudos que elencaram características de personalidade importantes para uma pessoa desenvolvedora, tentando responder as seguintes perguntas no processo (em tradução minha):

Primeiro, existem alguns atributos que são vistos como mais importantes por pessoas desenvolvedoras experientes do que outros? Segundo, como essa percepção de importância varia dado demografia, contexto e experiência prévia? Terceiro, como esses atributos diferenciam pessoas desenvolvedoras excelentes do restante?

A pesquisa foi feita entrevistando 1926 pessoas desenvolvedoras sênior, em 67 países. Além disso, foram feitas 77 entrevistas adicionais para contextualizar e interpretar a importância relativa dos dados, dado fatores contextuais. É um dos maiores estudos dessa natureza do mundo.

Parece ótimo, certo?

Porém, um disclaimer: Dois dos três pesquisadores que escreveram o artigo trabalham na Microsoft, logo, o público pesquisado basicamente é de lá. Aqui vale apontar o viés implícito: Essa é uma opinião da massa geral de pessoas desenvolvedoras experientes da Microsoft. Apesar da escala global, ainda é a visão global de uma empresa só. O que ajuda a diminuir esse viés é explicado pelos próprios autores: Como é uma única empresa, uma certa subjetividade no momento de responder algumas perguntas é diminuída por questões de entendimento comum entre os respondentes. Nesse caso, é esperado que pessoas experientes da mesma empresa tenham um entendimento comum do que é um determinado atributo, por exemplo.

Além disso, é uma empresa que tem muitos produtos diferentes, como Cloud, Games e Desktop, o que ajuda a diminuir o viés por área. Por fim, a empresa utiliza boas práticas e novas tecnologias, o que ajuda a mitigar deficiências e defasagens que poderia ser encontrada em empresas que não estão nesse nível de estado da arte em computação.

Com essa contextualização feita, sigamos com o modelo proposto por eles, que separou características de personalidade em 4 categorias, separadas em internas (Personalidade e Tomada de Decisão) e externas (Interações com Colegas e Código).

O que gera a seguinte imagem:

Modelo de atributos de uma pessoa desenvolvedora excelente

Resumindo o modelo por alguns trechos de entrevistas mencionadas: Algumas coisas não podem ser ensinadas e são intrínsecas a pessoa em si, como paixão pela disciplina de escrever código e curiosidade. Além disso, uma pessoa desenvolvedora excelente toma decisões no momento certo e sabe como aplicar o conhecimento advindo de livros no mundo real. A capacidade de influenciar e se comunicar também foi mencionada. Por fim, há uma frase mencionada por um dos respondentes que reflete um ponto peculiar: o código gerado por essas pessoas excelentes possui uma certa beleza, que outras pessoas com o mesmo tipo de conhecimento podem ver e apreciar.

Meus dois centavos aqui: A importância da comunicação foi legal de ver mencionada nesse material, dado que eu tenho uma percepção pessoal que é algo realmente muito importante. E usar o termo beleza em se tratando de código em um material dessa natureza eu achei curioso, dado que reforça a percepção de alguns autores como o Uncle Bob, que no Clean Code, que costuma dar ao ato de programar o nome de Arte (Art) ou Ofício (Craft).

Quanto ao método usado, vou resumir de uma forma simples: Para mim pareceu bem feito. Foram usadas medidas estatísticas corretas de análise do survey e foram mitigadas dentro do possível respostas enviesadas por cargo, tempo de experiência, educação e similares. Qualquer análise mais aprofundada nesse ponto eu deixo para a revisão por pares, dado que eles tem mais competência para isso do que eu.

Ao ordenar os atributos obtidos com as perguntas, os mais relevantes foram: Atenção a detalhes de código (como performance e gerenciamento de memória), capacidade de lidar com a complexidade mentalmente, melhoria contínua e mentalidade aberta.

Os piores atributos pontuados pelos respondentes foram: Personalidade de trocar favores e trabalhar duro. A justificativa foi que esses atributos não eram ruins por si só, mas que refletem situações ruins. Com os seguintes exemplos: Quem prospera com troca de favores é porque a cultura é enviesada para relacionamento ao invés de boas decisões. Quem trabalha muito duro (acima de 8 horas por dia com alta frequência) é porque pode estar em um ambiente com práticas insustentáveis de desenvolvimento.

Se essas duas práticas estão presentes no seu dia-a-dia, sugiro que repense o lugar que você está, ele pode estar minando o seu desenvolvimento profissional. Outro ponto: Kudos para o manifesto ágil, que já condenava essas práticas há décadas atrás. Quem diz que trabalhar mais que 8 horas por dia com desenvolvimento é normal, está simplesmente errado e obsoleto.

Na discussão do estudo, se resume aos seguintes tópicos:

  • Ser um codificador(a) competente é importante sim.
  • Otimizar o seu próprio trabalho é importante. Em alguns casos, a solução suja e rápida pode ser o melhor caminho.

Meu breve comentário nesse ponto: Existe uma diferença entre quebrar as regras por desleixo e saber quais regras quebrar e quando as quebrar. É esse senso que faz uma pessoa ser Sênior ao invés de um(a) Pleno muito competente.

Continuando os tópicos:

  • Saber onde procurar a informação correta para uma tomada de decisão técnica acaba sendo o caminho recomendado para decidir alguns impasses, segundo os respondentes.
  • No texto, há a seguinte menção: Criar um entendimento comum e criar possibilidades de sucesso compartilhado para outras pessoas. O que são atributos considerados desejáveis. De certa forma, se resume a: Saber como não tornar o trabalho de outras pessoas mais difícil do que já é, acaba sendo uma característica de pessoas desenvolvedoras excelentes. Para mim, se resume a comunicação e generosidade. Dois atributos indispensáveis para qualquer profissional, seja de tecnologia ou não.
  • A capacidade de se manter aprendendo é muito relacionada a ter um perfil curioso, de cabeça aberta e honesto intelectualmente. Nesse ponto, nenhuma novidade.

Antes de finalizar, gostaria de apontar duas sérias limitações no estudo: O público feminino respondente foi muito baixo (7%), bem como pessoas que não trabalham nos EUA (18%). Portanto, tem um grande viés de gênero e nacionalidade envolvido. Ouso dizer que um outro nome para essa pesquisa poderia ser: O que homens americanos que trabalham na Microsoft acham que é uma pessoa desenvolvedora excelente (com um pouco de rigor metodológico).

Por fim, vamos as dicas práticas: Se você está começando, dá uma olhada nos atributos do modelo da figura ali para cima e tenta desenvolver alguns daqueles pontos. Ou seja, teste aquilo na sua própria carreira e veja o que dá certo ao longo do tempo.

Se você é líder, talvez esses atributos documentados seja uma forma de oficializar algumas intuições e percepções que você já tenha tido por algum motivo no passado. Talvez te ajude a direcionar algumas buscas por alguns perfis específicos.

Porém, para esse cenário eu peço que use esse tipo de ferramenta com parcimônia e responsabilidade, para que você não seja mais uma máquina reprodutora de vieses de gênero só porque alguns pesquisadores gringos falaram algo em algum paper. O próprio estudo tem vieses explícitos, portanto, sejamos críticos. Não é só porque é internacional que não deve ser questionado, não é mesmo?

Obrigado e até a próxima!

Você gostou do conteúdo e gostaria de fazer mentoria comigo? Clique aqui e descubra como.

--

--