Minhas 6 dicas para resolver problemas.
Tags: discuss, desenvolvimento, programacao
Published: 2021-03-10 15:41:55

> Trabalhar na área de desenvolvimento é lidar com resolução de problemas a todo momento, ao longo dos anos, acabei desenvolvendo alguns hábitos para resolve-los.

Quero comentar aqui algumas dicas que uso para resolver problemas que as vezes não tenho a menor ideia de como resolver. Esses dias, me deparei com um problema de frontend, para completar usando bibliotecas que no máximo conhecia pelo nome: react, redux e react-redux.

Bora para as dicas!


### 1. Entenda com o que vc está trabalhando

Quando a gente olha para nossa base de código, já quer ir sentando o dedo no problema, mas as vezes é difícil de entender como nosso outro amigo desenvolvedor/a pensou, porque usou tais bibliotecas, porque o código foi escrito daquela maneira, entre outra coisas. Entender qual é a ideia por trás da biblioteca, suas funções, como ela funciona, quais problemas ela quer resolver e não sair reinventando a roda é super importante.

Como podemos descobrir isso? É o próximo passo.

### 2. Use a documentação oficial

Não há maneira melhor de entender os pontos citados anteriormente. Uma boa documentação irá contar a motivação por trás daquela solução, vai ter exemplos simples e práticos para que possamos ter uma visão geral, também contém documentação mais avançada da API caso seja necessário. Aliás, fique atento com a versão da biblioteca e versão da documentação, entre uma versão major e outra muita coisa pode mudar.

Enfim, é uma grande fonte de conhecimento, com esse entendimento vc poderá ir para a próxima fase. 

### 3. Isole o problema

Sim, vc entendeu tudo, ou pelo menos uma parte importante do que aquela lib se propõe a fazer, mas quando olha pra base de código está um nojo, que vc não sabe onde começa e onde termina e vc só quer fazer uma pequena mudança, então pegue esse conhecimento e tente fazer um exemplo fora da aplicação de maneira isolada, tem várias formas de fazer isso. 

Se vc esta trabalhando com frontend: React, Angular, Vue, o que seja, vc pode usar editores online, como Stackblitz, CodePen, etc.

Talvez seu problema seja desenvolvimento backend, pode-se criar um teste unitário, um teste integrado ou subir uma infra no docker, muitas possibilidades.

Nada disso deu certo, talvez vc precise do próximo passo.

### 4. Peça ajuda para alguém

A gente não é uma ilha e vc não está resolvendo um problema único no mundo, provavelmente vc está com um problema que muitos outros já passaram, inclusive alguém da sua própria equipe, empresa, cidade, enfim, alguém já sofreu.

Geralmente eu determino um tempo que vou trabalhar num problema, até jogar a toalha. Tem hora que damos voltas e voltas, e o simples fato de compartilhar o problema com alguém, faz que vc tenha uma nova visão do problema, e por muitas vezes ter o momento "eureka".

Se esse lampejo de luz não aparecer, essa pessoa possa te ajudar dizer:  - Olha, quando isso acontecer basta fazer tal coisa, é a hora que vc faz aquela cara de "ahhhh era só isso?"

### 5. Aplique seus conhecimentos adquiridos

Essa é a melhor parte, parte de resolver o problema real, agora que vc já tem a faca que o queijo na mão, é aplicar o que aprendeu e fazer aquele PR maravilhoso. Pode dar alguma coisa errada? Claro que  pode, foi o meu caso, eu estava tentando entender o redux, depois react e por fim, react-redux, ou seja, foi um processo de cada vez. Inclusive estava olhando uma versão diferente na documentação do que realmente tínhamos em produção, já cantei essa bola no passo 3.

Tudo resolvido, o último passo é um dos mais importantes.

### 6. Divida o conhecimento com os colegas

Use aquele seu exemplo isolado para explicar aos seus colegas de trabalho, ou até mesmo para o mundo, como resolveu seu problema. Além de ajudar as pessoas, vc consegue absorver melhor o conhecimento, de forma que alguém possa perguntar algo e vc saber responder com propriedade, ou no máximo gerar alguma dúvida, assim vc irá buscar mais conhecimento para solidificar o aprendizado, no final, vc só tem ganhar.

### Concluindo
Esse é um processo que tenho obtido um certo sucesso, não sei se vai servir para tudo mundo, mas achei legal compartilhar, pois posso ajudar alguém. E você, tem alguma fórmula para resolver problemas?