Coding é mais sobre times do que você imagina. Entenda o porquê.

Você prefere “codar” sozinho ou discutir suas soluções em grupo?

Image for post
Image for post
Photo by Annie Spratt on Unsplash

“Ideias não nascem prontas. Os debates são essenciais para aprimorá-las, estimulando criatividade e inovação.”

Assim como uma ideia, um código dificilmente nasce em sua melhor versão. Um desenvolvedor sozinho tende a se contentar com a primeira solução ou a adicionar complexidade desnecessária.

Sozinho você será capaz de escrever um código que funcione, mas poderá “ignorar” boas práticas de desenvolvimento, aumentando custos com manutenção e chances de erros, principalmente em sistemas de maior complexidade. Sozinho, faltam referências e estímulos para otimizar o que foi escrito.

Coding é um processo interativo. Código bom precisa estar em constante processo de melhoria, sua otimização ocorre de forma incremental. O processo de otimização terá melhores resultados se feito em grupo, sendo estimulado a partir de discussões, com testes, experimentações e refactoring.

Construir software sozinho é subestimar nossa capacidade de criar algo realmente grande e aumentar o risco de falharmos. Por trás de milhares de linhas de código ou do design de uma arquitetura altamente escalável, temos a ânsia de criar algo realmente de impacto. Então, por que não aumentar a chance de sucesso compartilhando este processo?

As vantagens do Collective Code Ownership

O Collective code ownership é um conceito apresentado pelo Extreme Programming, um dos processos de desenvolvimento ágil mais conhecidos e antigos do mercado. Consiste no fato de que todos do time se sentem responsáveis pelo código e sua qualidade. Qualquer membro pode alterar, evoluir, corrigir falhas e realizar refactoring. Ninguém é dono exclusivo de uma parte ou de todo o código.

Entre as grandes vantagens deste modelo, está o aumento do “Bus factor e a redução das chances de projetos naufragarem.

“Bus Factor é o número de pessoas que precisariam ser atropeladas por um ônibus (ou qualquer veículo, ou sair de férias, ou mudar de empresa, etc) para que o projeto falhe. Para garantir o sucesso de um projeto, é importante manter este número sempre acima de 1. “

Além do Bus factor, outras vantagens que podemos citar são:

  • Comunicação fluída, todos sabem o que está acontecendo;
  • Conhecimento compartilhado, estimulado pela rotatividade dos desenvolvedores;
  • Menor tempo de resposta aos erros, qualquer um pode fazer um bugfix e corrigir o problema;
  • Menos bloqueios e maior produtividade, não é preciso autorização para modificar parte do código;
  • Tomada de decisões mais rápidas, todos conhecem toda ou grande parte da base de código, o que gera discussões produtivas;

Lembre-se que desenvolvendo sozinho corremos o risco de percorrer longos caminhos no sentido errado e mesmo que estejamos certo, vai levar muito mais tempo para alcançar os resultados.

Disciplina e boas práticas

Code Review: fazer a revisão de todo o código incluído ou modificado é uma excelente forma de compartilhar o conhecimento, seja negocial ou de boas práticas de programação, como clean code. Pode promover a redução de riscos de “quebra” de serviços e promover o feedback rápido para os mais novatos a respeito da qualidade das suas implementações.

Talks/Meetups: possibilitam reforçar os aprendizados dos desenvolvedores e desafios pelos quais passaram. Estimular que elaborem pequenas palestras, pode reduzir o risco de que outros tentem “reinventar a roda” ou cometer os mesmos erros.

Pair Programming: colocar lado a lado desenvolvedores com perfis, visões e experiências diferentes, pode parecer perda de tempo, mas sem dúvidas, que participa tende a sair melhor e com novos aprendizados. A diversidade de opiniões e pontos de vista, irão criar inúmeras possibilidades de resolução de problemas, além de maiores chances de acerto e ganhos de qualidade.

Daily Meetings: checks diários permitem a resolução rápida de bloqueios do time através do estímulo à colaboração entre os membros. Melhor do que todos com atividades “em andamento”, é termos atividades “concluídas”. Ponto importante é que a daily deve trabalhar para o time e não como um status report. Deve servir para que todos saibam o que está sendo feito e como podem colaborar para um resultado melhor.

Responsabilidade de todos != responsabilidade de ninguém

“Cão com muitos donos morre de fome”

A linha é tênue entre todos são responsáveis e ninguém é responsável. O que diferencia é o resultado do time diante de suas responsabilidades, e consequentemente, a confiança e autonomia conquistadas.

Da mesma forma, ownership coletivo não implica na ausência de liderança. Todo time deve ter um líder, quem remova nossos bloqueios e nos mostre a direção correta. Ter um líder não significa que as decisões devam que ser tomadas de forma unilateral, sendo impostas, mas que podem sim ser tomadas a partir de discussões.

Algumas ações e boas práticas que podem contribuir para a construção da confiança:

  • Prevenção de falhas através de um bom nível de cobertura de testes e automação de rotinas de build e deploy;
  • Monitoramento do desempenho e disponibilidade das aplicações e serviços;
  • Indicadores de desempenho do time;
  • Resposta rápida a bugs;

Conclusão

Através do coding coletivo e boas práticas de desenvolvimento, podemos gerar um ambiente onde times têm maior confiança e produtividade, soluções são discutidas, modificadas e otimizadas constantemente.

Esqueça aquela história de herói, hacker ou gênio. Grandes produtos e empresas não atingiram sucesso com uma pessoa apenas, mas sim com poderosos times. Afie suas habilidades de comunicação e estimule o comportamento colaborativo no seu time.

*** Este post foi originalmente publicado em https://www.fabiobacarin.com/blog/coding-e-mais-sobre-times-do-que-voce-imagina/ ***

Written by

Co-founder e former CTO da Contabilizei, mentor e consultor de startups e times de tecnologia.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store