5 lições que aprendi no meu último trabalho

No mundo da engenharia de software, há sempre lições a serem aprendidas em cada projeto que passamos. A ideia aqui é compartilhar algumas delas que considero essenciais. Estes aprendizados não apenas moldaram meu trabalho recente, mas também guiarão minhas práticas futuras.

1. Crescimento Sustentável

Passamos por um período de crescimento exponencial na empresa, especialmente na equipe de engenharia. No entanto, esse crescimento se provou ser um desafio. A estrutura básica não estava preparada para suportar a demanda. Questões como a falta de integração entre setores, alocação inadequada de recursos e indefinições sobre tarefas foram obstáculos recorrentes.

Um erro comum é a ilusão de que mais mão-de-obra resulta em maior produtividade. Na prática, a falta de coordenação leva à duplicação de esforços e a uma menor eficiência. Gosto sempre da analogia de que duas grávidas não geram um único filho. A organização é a chave. Ter tarefas com escopos claros, um sistema de onboarding eficaz e diretrizes claras de desenvolvimento são fundamentais para o sucesso a longo prazo.

2. Fique próximo do Time de Produto

Trabalhar em estreita colaboração com o time de produto é uma maneira eficaz de traduzir a visão da empresa em realidade. Participar ativamente de reuniões e processos de planejamento não só demonstra comprometimento, mas também oferece uma oportunidade para contribuir com ideias e soluções práticas.

Não estou dizendo para ficar sempre com a câmera aberta e com cara de feliz, mas participar com perguntas, sugestões é contribuir. Muitas vezes, como desenvolvedores, podemos sugerir alterações ou formas de fazer até melhores do que as propostas; esse é sempre o momento perfeito também para negociar prazos e demandas, e uma relação próxima com seu PM irá facilitar demais isso.

A regra é clara: Comunique-se. Ao compartilhar ideias e perspectivas, os desenvolvedores podem influenciar positivamente o processo de desenvolvimento e fortalecer sua relação com a equipe.

3. Conhecendo o Público-alvo

Compreender as necessidades do cliente não é apenas responsabilidade do time de produto. Os desenvolvedores desempenham um papel crucial na identificação e resolução de desafios enfrentados pelos usuários.

Participar de entrevistas ou assistir alguma gravada, ler as pesquisas de NPS ou feedback dos clientes e utilizar o próprio produto são estratégias essenciais. Muitos insights valiosos surgem dessas interações. Às vezes, o que parece simples ou trivial para o usuário é essencial. Devemos perceber essas nuances, como por exemplo: se o usuário precisa percorrer de 4 a 5 cliques para acessar um relatório muito utilizado, adicionar um simples atalho pode tornar o produto mais eficiente e agregar valor para ele.

4. Acessibilidade e Performance

A acessibilidade e a performance são aspectos essenciais. Uma interface bonita por si só não é suficiente se não for acessível. Além disso, a otimização é fundamental para garantir uma experiência de usuário fluida e satisfatória.

Em aplicações de médio a grande porte, é evidente como o correto uso de hooks, contextos e componentização, juntamente com uma estruturação adequada da árvore de componentes, impacta positivamente o produto. O usuário perceberá imediatamente um desempenho lento, re-renderizações constantes e instabilidades, e isso certamente afetará sua avaliação do produto.

Não permita que a acessibilidade e a performance se tornem pontos detratores em pesquisas de usuário. Se isso estiver acontecendo, é hora de reavaliar os processos de qualidade, padrões de codificação e design adotados pela equipe.

5. Estabelecendo Padrões de Qualidade

Estabelecer padrões de qualidade não apenas eleva o nível do produto, mas também promove uma cultura de colaboração e melhoria contínua. Investir em testes automatizados, monitoramento de código e revisões rigorosas são passos cruciais para garantir a consistência e confiabilidade do código.

Crie um time de plataforma ou forme um chapter de Front-end. Estabeleçam padrões de projeto e estilos de codificação, e assegure-se de cobrar eles em code-reviews. Automatize os testes e integre-os as pipes de PR`s e deploys. Exija uma cobertura mínima de testes para todas as novas funcionalidades.

Embora possa ser desafiador implementar essas práticas em uma organização, especialmente em empresas sem essa cultura estabelecida, os benefícios a longo prazo compensam os esforços iniciais.

Conclusão

Adotar uma abordagem de crescimento sustentável, colaboração eficaz e foco no usuário são princípios fundamentais que impulsionam o sucesso.

Organizações diferentes enfrentam problemas diferentes, mas não devemos encarar os processos de qualidade como perda de tempo; são, na verdade, investimentos. Como desenvolvedor, você pode negociá-los e gradualmente incorporá-los à sua rotina de trabalho.

Árvore representando a fundação

Uma analogia simples: uma árvore com raízes sólidas e bem estabelecida proporciona sustentação e resiliência para seu crescimento. Da mesma forma, ao estabelecermos bases sólidas de engenharia, garantimos um crescimento com sustentabilidade e resiliência.