Testes técnicos: como se sentir mais confiante e desenvolver projetos melhores!
Tags: webdev, career, discuss, learning
Published: 2023-06-14 20:16:15

  Quando comecei a receber meus primeiros testes técnicos como desenvolvedora front-end, quase sempre envolvia desenvolver com alguma ferramenta que eu não possuía nenhuma conhecimento sobre. Me perdia por não saber como começar e tendo pouco tempo pra finalizar, tudo virava uma bola de neve. Perdia o meu tempo já escasso por pular etapas iniciais importantes. 
  Devido as flutuações da área de tecnologia, fiquei algum tempo sem receber teste nenhum. Mas sabia que algum momento eles voltariam a aparecer e então continuei trabalhando firme. Foi muito legal perceber as diferenças no meu modo de realizar projetos. Quando decidimos fazer um projeto de portfólio, por mais que a gente queira se desafiar, acabamos entrando em uma zona de conforto(da escolha do projeto até o commit final). Esses testes me deixavam tensa e inclusive me faziam questionar minha capacidade como desenvolvedora, porque justamente nos tiram dessa zona de conforto.
  Uma das grandes vantagens de área de tecnologia, diferente da maioria das outras áreas, é justamente a possibilidade de concorrer a vagas que exigem _hardskills_ que não necessariamente você domina completamente. A cada dia surgem novas ferramentas, linguagens e metodologias e é realmente difícil acompanhar tudo, seja você junior ou senior. Isso não só nos testes, mas faz parte do dia-a-dia de um desenvolvedor.

## Não se intimide
  A primeira coisa que já causa uma dor de estomago ao ler aquela lista gigante de coisas pedidas em um teste, é ver o nome de um monte de coisas que você não domina. Talvez o nível exigido por aquele teste seja um pouco difícil mesmo pra você alcançar em pouco tempo. A maioria dos teste que eu fiz tem um prazo de 1 ou 2 dias e pedem diversas telas responsivas e com um monte de outros requisitos que você pode dominar ou não.
  Mas a primeira coisa é se propor a realizar o melhor possível mesmo que você ache que não está pronto. No mínimo você vai aprender alguma coisa e vai sair dali dois dias um desenvolvedor melhor que quando começou. E se no pior dos cenário você não for contratado pra essa vaga em questão, já sabe como funcionam os processos seletivos dessa empresa quando quiser se candidatar de novo. Muitas vezes a proatividade e a vontade de aprender podem te dar uns pontinhos pra outras oportunidades.
  **Mas como vou aprender esse tanto de coisas em tão pouco tempo?** As vezes ao olhar o nome de uma tecnologia que não conhecemos, a impressão é que é algo que leva dias, semanas, meses, se não anos pra aprender. Mas existem duas possibilidades:

1. É apenas uma metodologia ou adicional a algo que você já conhece, mas feito de uma maneira otimizada. Por exemplo, quando ouvi falar sobre metodologia BEM, achei que levaria uns bons dias pra aprender, mas é apenas uma padronização para nomear classes CSS. Uma lida em um artigo bem formulado já te ajuda a entender e aplicar.
2. É algo realmente mais complexo e você pode levar anos pra aprender aquilo. Mas o teste está pedindo que você aplique todos os tópicos de forma aprofundada? O que exatamente sobre esse tópico pedido você precisa aplicar?

💡Tanto em um caso quanto no outro, é uma questão de compreender o que está sendo pedido. Então eu leio o teste todo e vou separando os tópicos sobre os quais eu não sei nadinha. Faço uma leitura básica ou assisto a um vídeo introdutório para entender o que é aquilo, quais são as possibilidades de aplicação e unindo isso com o enunciado da proposta tento entender o que preciso fazer com essa ferramenta nesse projeto. Também é muito importante entender quais serão os critérios de avaliação.

  E então, faço o planejamento das etapas de desenvolvimento do teste. Um planejamento bem feito em cada etapa, te ajuda a economizar um bom tempo e evita retrabalho.

## Mãos a obra!
  Depois que você fizer o planejamento, e ai vai depender do que você está fazendo, agora pode começar a colocar em prática. Não se esqueça de tudo que você já sabe, ou tente implementar algo que você nunca fez e nem está sendo pedido. Ao usar uma tecnologia nova, as vezes temos dificuldade para visualizar sua aplicação e resultado no projeto, mesmo com um planejamento bem feito. Mas durante a execução, as coisas vão ficando mais claras e você vai pegando as manhas. 
  A organização e clareza do seu código podem te trazer mais pontos que fazer estripulias e "gambiarras" complexas. É hora de você mostrar o que sabe fazer de maneira clara e bem feita.

## O prazo é curto e eu sou lento!
  Talvez você não consiga entregar 100% do que foi pedido. As vezes desenvolver por exemplo todas as telas do protótipo do figma aplicando algo que você não sabia fazer até 5 minutos atrás pode te levar mais tempo que o que foi proposto. Claro que você vai tentar aplicar tudo que foi proposto, em todas as telas, com perfeição. Mas a situação descrita pode acontecer sim, então nesse caso eu faço no mínimo uma tela bem feita, que vai servir de amostra pro que eu conseguiria fazer em todas as telas. 
  Se sobrar tempo vou aplicando nas outras telas até terminar. No último projeto que fiz, precisei aplicar SASS sem fazer a menor ideia do que era isso. Então fiz todo o esqueleto de todas as telas HTML, o que foi bem rápido e então desenvolvi os componentes comuns a todas as telas(header e footer no meu projeto) e por fim fiz a primeira tela. Quando fui pras outras telas, tendo um código organizado, pude reaproveitar muitos componentes da tag main. Isso otimiza o desenvolvimento.
  Se chegou o momento do prazo final, entrego o projeto e explico que tenho tal e tal telas prontas, mas não consegui desenvolver as outras. Os recrutadores sempre me fornecem um prazo extra nesses casos de um ou dois dias.

## A cereja do bolo
  Os retoques finais do projeto são importantes pra que seja possível avaliar outras coisas. Seja organizado, conciso e caprichoso. 
  

1. Uma boa documentação é essencial. Descreva com clareza quais foram as tecnologias utilizadas e os passos seguidos. Se você não conseguiu realizar tudo a tempo, pode adicionar uma sessão listando as melhorias futuras, mostrando que você tem domínio entende as possibilidades de aplicação da tecnologia que está trabalhando.
2. Mantenha o código limpo e organizado. Ao final do projeto, retire comentários que foram usados apenas durante o desenvolvimento, confira se a estrutura está boa, se a nomeação de classes e funções está padronizada e fácil de entender. Se aplicou alguma metodologia, pode cita-la na documentação. Mas foco no que foi pedido, afinal, é isso que está sendo avaliado.
3. Faça os teste que souber, verifique se nada está fora do lugar. De um bom acabamento antes de entregar.


  Escrevi esse artigo usando minhas experiências, entendendo o que funciona ou não e o que facilita e economiza tempo. Também me ajuda bastante aplicar as coisas sobre as quais o Caio fala nesses dois artigos abaixo. Estão muito bons, realmente recomendo a leitura:
[Dicas para criar projetos front-end melhores e mais rápido - Parte 1](https://dev.to/marcelluscaio/dicas-para-criar-projetos-front-end-melhores-e-mais-rapido-parte-1-5213)

[Dicas para criar projetos front-end melhores e mais rápido - Parte 2](https://dev.to/marcelluscaio/dicas-para-criar-projetos-front-end-melhores-e-mais-rapido-parte-2-431d)