Princípios para Desenvolver uma Feature
Esse coteúdo foi compartilhado primeiramente no Medium, no link https://medium.com/@ricksonthompson/princ%C3%ADpios-para-desenvolver-uma-feature-c2066d89f2e6.
Vim compartilhar esse conteúdo aqui também como eu primeiro conteúdo. Espero que gostem!:D
"Feature" é o termo usado para descrever funcionalidades a serem desenvolvidas e incrementadas no sistema. De início vamos ter muitas dificuldades em planejar, arquitetar e escrever a solução do início ao fim.
O que eu quero destacar pra você são princípios que me fizeram crescer tecnicamente, melhorar a minha lógica e entregar funcionalidades que geram valor atemporal pro time, produto e pro cliente.
Como desenvolvedores, nossos principais aliados sempre serão planejar bem antes de codificar a solução e ter uma boa lógica de programação.
Para que uma feature seja desenvolvida e atenda aos seus requisitos, pelo menos 5 princípios precisam ser seguidos. Abaixo você pode ver cada um deles:
1. Funcional
A coisa mais simples e essencial a ser feita é resolver o problema. Mesmo que o código não esteja tão limpo, compreensível e performático. Precisa atender ao seu principal objetivo: resolver o problema.
Aqui é muito baseado no princípio K.I.S.S ("Keep It Simple, Stupid"). Ou seja, não torne seus processos mais complicados do que o necessário
💡 Vamos para um exemplo prático: Realizar o parser de um arquivo.
No primeiro momento, sua preocupação deve ser:
1. Configurar um endpoint para enviar o arquivo;
2. Conseguir processar as linhas e campos do arquivo que deseja manipular;
3. Se necessário, salvar os dados no banco de dados ou enviar para outro lugar.
Agora que funcionou, não está pronto. Tem que seguir os demais passos abaixo👇🏻
2. Manutenível
Qualquer pessoa deve ser capaz de dar manutenção no código. Para que isso ocorra é necessário que haja um conjunto de boas práticas:
- Variáveis descritivas;
- Funções descritivas;
- Classes e funções com responsabilidades únicas;
- Dados tipados;
- Desacomplamento (utilizar interfaces, abstrair classes, injetar dependências).
3. Escalável
A feature precisa ser fácil de crescer, alterar e diminuir. Caso seja pedido uma alteração, não irá quebrar todo o restante da aplicação.
Imagine a construção de uma feature como blocos. Nada deve ser entrelaçado, tudo deve ser capaz de ser plugado e desplugado.
4. Usável
Nessa fase, se aplica mais ao front-end ou client responsável pela parte visual da funcionalidade. Aqui pode se dividir em dois pontos:
Ser atrativo: O usuário gosta da interface e transmite profissionalismo pra ele (sem erros de ortografia, alinhamento, paleta de cores).
Ser fácil de utilizar: É objetiva e intuitiva.
5. Atender aos requisitos e testes
Para chegar até aqui precisa atender etapas anteriores e funcionar sem erros/bugs.
Uma feature só é entregue quando a mesma funciona 100% e é validada.
💡 A refletir: Niguém deseja ter uma carro que, mesmo que seja capaz de transportá-lo, é preciso empurrar para ligar, não é capaz de medir a gasolina, o motor superaquece etc. Seria cansativo e insatisfatório.
Para alcançar esse objetivo, é preciso fazer a tratativa dos erros (imaginando os casos mais prováveis aos improváveis). Nessa fase, é muito importante escrever os testes, passar pelo teste do qa/tester e, por último, um code review.