Como iniciar uma tarefa sendo dev júnior
Tags: braziliandevs, beginners, productivity
Published: 2021-06-05 19:07:23

### TL-DR:
Nesse artigo eu falo sobre estratégias que eu uso para navegar de maneira eficiente pelas minhas tarefas no trabalho sendo uma desenvolvedora júnior (que tem TDAH).
Etapas abordadas:
- [Antes de iniciar uma tarefa](#antes-de-iniciar-uma-tarefa)
- [Durante o desenvolvimento](#durante-o-desenvolvimento)
- [Na finalização da tarefa](#na-finalização-da-tarefa)

-----

Basicamente, existem 3 tipos de estratégias que eu uso na hora de fazer uma tarefa: **as aplicadas para reduzir a dificuldade de começar, as aplicadas durante o desenvolvimento para facilitar a cadência e as aplicadas ao finalizar a tarefa visando reduzir os erros que passarão para code review**. Para ajudar no entendimento, vou usar uma tarefa que eu fiz a alguns meses, uma modal em React.
*Tenho que deixar avisado que essas coisas vão melhorar a sua performance no médio prazo, mas a curto prazo pode parecer que você está fazendo as coisas mais devagar do que gostaria. Eu sugiro conversar com a sua liderança para alinhar esse tipo de expectativa.*


## Antes de iniciar uma tarefa

Antes de iniciar qualquer tarefa eu gosto de entender o código que eu vou trabalhar, então eu procuro os componentes envolvidos na tarefa e os leio, anotando num caderno o que cada um faz, de onde os dados vêm e o que as suas funções internas fazem. **Dessa forma eu consigo ter um entendimento mais profundo do que eu estarei mexendo** e evito que essa informação fique só na minha cabeça (que não é nem um pouco confiável), além de ter um local para recorrer caso seja preciso voltar a trabalhar nos mesmos componentes.

Você pode até argumentar que fazendo dessa forma se "gasta" muito tempo da tarefa, mas eu garanto que isso facilita o desenvolvimento e reduz o tempo passado procurando bugs depois. Da perspectiva de uma pessoa júnior, **você ganha domínio do código bem mais rápido e de maneira mais profunda** dessa forma. Normalmente as pessoas não fazem isso e eu já percebi que ler e entender o código antes me ajuda a identificar pontos de atenção que passam despercebidos até para pessoas mais experientes.

Porém, às vezes a tarefa consiste em começar algo do zero. Nesses casos eu busco componentes semelhantes para me basear e faço o mesmo procedimento de entender o que todo o código faz pois **isso evita que eu só copie trechos de código sem entender o que eles realmente fazem**. Minha tarefa de criar a modal caiu nesse caso, eu tive que criar o componente do zero me baseando em um mais geral que já existia no projeto.

A última coisa que eu faço é **anotar as sub-tarefas** dentro da tarefa principal. Aqui eu tento torná-las o mais simples e reduzidas possível, porque isso reduz o tempo entre uma sub-tarefa e outra e melhora demais a cadência no desenvolvimento. No caso da minha modal, ficou algo parecido com isso:
- criar componente da modal
- condicionar chamada da API ao clique
- mockar retorno da API
- testar caso de clique no botão
- descobrir como passar informações entre diferentes componentes


## Durante o desenvolvimento

Ter sub-tarefas bem pequenas e relativamente simples ajuda a reduzir aquele frio na barriga e a procrastinação para começar e te dá uma melhor visão de progresso. Às vezes é preciso definir **micropassos** para ajudar a quebrar a inércia de começar a tarefa e um que me ajuda bastante quando eu preciso pesquisar algum tema difícil é deixar o site ou a documentação aberta e aí levantar um pouco da cadeira. Por algum motivo eu me sinto menos sobrecarregada quando eu acabei de dar uma volta e o site que eu preciso já tá aberto só me esperando. Isso também funciona com o código em si, acho o arquivo certo pra trabalhar e depois vou dar uma volta para espairecer antes de começar.

Durante a tarefa sempre surgem imprevistos, então eu **anoto todas as coisas que eu não previ que teria que fazer e também todas as dúvidas que surgirem** para pesquisar na internet ou perguntar a alguém do time, dessa forma nada se perde e eu garanto que vou lembrar de tirar todas as dúvidas.
Outra estratégia que eu preciso adotar quando está particularmente difícil de concentrar na tarefa é colocar no papel o problema que eu estou tentando resolver e ir anotando pequenas conclusões que vão me levar à solução. Um exemplo de como eu faço essa parte:
- em que momento o clique deve abrir a modal? 
   - ↪ quando tem elemento registrado, determinado pelo `elemento.isEnabled` 
   - ↪ o que define o isEnabled? Em qual momento ele é alterado?

- a modal deve ter: isOpen, onClose, type, name, date, activities
   - date vem da URL ✅
   - de onde vêm as outras informações? O componente pai tem todas? Preciso pegar alguma de algum outro lugar?

Em algumas situações que é necessário fazer pair programming e eu percebi que sem as minhas anotações eu posso acabar ficando bem perdida, então gosto de fazer essas reflexões antes de ter alguém que vai me ajudar com as respostas.

## Na finalização da tarefa


Esse é o momento de checar se algum errinho besta passou despercebido. Antes de submeter uma tarefa para code review eu costumo fazer algumas re-checagens:
- rodar todos os testes da aplicação para ter certeza de que eu não quebrei nada acidentalmente
- rodar o lint (caso não esteja rodando automaticamente)
- atualizar a minha branch com a main/master
    - caso necessário, atualizar bibliotecas e banco de dados
    - caso necessário, resolver conflitos de merge
- executar o código e me certificar de que o comportamento está como esperado, inclusive os casos de erro
- checar se eu segui os padrões de código definidos pela empresa

**E aqui uma dica que o meu líder técnico me deu**: se você acha que o código está ruim depois de finalizar toda a tarefa, chama alguém do seu time para dar um olhada, você pode explicar o que tentou fazer e a pessoa pode te dar feedbacks de como melhorar antes de submeter ao code review propriamente dito.

---

Começar a carreira de desenvolvimento pode ser bem difícil, especialmente se você passou por uma transição de carreira ou não possui um background teórico tão bom. Com esse artigo eu gostaria de compartilhar algumas estratégias que eu uso para tornar as tarefas menos assustadoras e menos causadoras ansiedade.
Você tem alguma dica a mais para dar não só pra mim mas pra outras pessoas que estão começando? Joga ela nos comentários para ajudar mais pessoas.