Conquistei minha primeira vaga com um ano de estudo, e fui desligado depois de 1 mês e meio, onde eu errei?
Minha história na programação
Tenho 29 anos e desde os meus 15 anos gostava de mexer em computadores, formatava meu PC toda semana, formatava o PC da vizinha, do vizinho, fuçava em scripts .lua para fazer karaokê de animes, blogs de animes com WordPress, After Effects e até mesmo brincava de engenharia reversa (só brincava mesmo), sempre estive fuçando em algo para ver o que acontecia. Cheguei a começar a fazer um curso de Java baixado via torrent, mas não terminei. Aprendi bastante sobre arquitetura de computadores em geral, mas era moleque e mais jogava e assistia animes do que qualquer outra coisa. Porém, aos 20 anos, comecei a trabalhar em uma lanchonete e fui me afastando cada vez mais desse mundo e deixando-o de lado.
No final de 2021, trabalhando em uma loja de pets como líder de setor, um colega, sabendo da minha história, me recomendou o curso de Python do Guanabara. Comecei de fato a estudar programação em meados de outubro de 2022, através do curso indicado. E após terminar o curso, em janeiro de 2023, comecei a fazer projetos pessoais para utilizar na empresa onde eu trabalhava e projetos de cursos, bootcamps, sendo eles:
Invent 1.0 - Desktop - Python - CustomTkinter | Janeiro 2023
No meu trabalho, fazíamos inventário de itens por fornecedor toda semana, e todo o processo de contagem era feito manualmente, anotando no papel que era impresso pelo sistema RMS da empresa, então era um processo lento e arcaico. Então, resolvi desenvolver um programinha bem simples onde eu escaneava o código do produto e o programa ia gerando uma lista de EANs com a contagem de cada um, e depois exportava tudo isso para uma planilha Excel. Como eu não poderia fazer nenhuma interligação com o sistema da empresa e nem tinha autorização para isso, foi o máximo que consegui pensar para agilizar o processo, apenas passando as contagens para o sistema RMS posteriormente.
Repositório do Github
WorkTasks - Android - Python - Kivy - KivyMD | Fevereiro - Abril 2023 | Manutenção até Agosto 2023
Novamente no trabalho, para imprimir preço de produtos, que eram na casa de 80k SKUS, anotávamos o código do produto em um papel, ou pegávamos o produto mesmo, ia até o computador e escaneava o produto para fazer a impressão. Pensando nisso desenvolvi um aplicativo android com as seguintes funcionalidades:
- Sistema de login integrado ao firebase separado por grupos de setor e loja
- Scan do ean através da câmera para guardar o código e quantidade de etiquetas a serem impressas no firebase e serem compartilhadas com usuários do mesmo setor e loja
- Gerenciamento de tarefas estilo kanban em tempo real com FirebaseRealtimeDatabase
- Genrenciamento de itens próximos a validade com pesquisa de produtos e auto-complete de código interno compartilhados, assim eu tinha controle de quem adicionava os produtos, quando e mantinha controle dos itens
- Exportação da lista de itens próximos da validade para excel
Repositório do Github
E-Commerce PetFamily - NextJS - MongoDB - Stripe - Tailwind - StyledComponents | Junho 2023
Neste ponto, por recomendação de um cunhado de uma colega de trabalho, comecei a estudar desenvolvimento web. Nas minhas férias, comprei a versão extendida deste "curso" Build a Fullstack E-commerce using Next.js no qual me custou 9 dólares com 22 horas de conteúdo. Porém, resolvi me desafiar, e ao invés de simplesmente replicar o que estava sendo feito no vídeo, fui fazendo um e-commerce de vendas de rações (ao invés de celular e notebook igual ao vídeo) e sempre que entendendia os conceitos, tentava fazer antes do vídeo e depois verificava se estava fazendo certo.
Link do projeto loja: https://pet-family-ecommerce-front.vercel.app/
Link do projeto admin: https://react-ecommerce-admin.vercel.app/
Repositório Github Loja
Repositório Github Admin
Worktasks - Web - NextJS - MongoDB - Firebase - Tailwind | Julho 2023 - Outubro 2023 | Manutenção Até Janeiro 2023
Enfim, meu maior projeto até a data com 384 Commits e 376 Deploys.
Com o conhecimento adiquirido nas férias com o projeto e-commerce, resolvi criar uma versão web o Worktasks com as mesmas funcionalidades da versão android, exceto o scanner de ean, e adicionei mais algumas outras funcionalidades que ajudam alguns processos no trabalho, tais como, geração de etiquetas e cartazes personalizados, esse processo até então era todo feito manualmente com excel. Então resolvi desenvolver o projeto com as seguintes fucionalidades:
- Sistema de login separado por loja e setor
- Gerenciamentos de tarefas estilo kanban
- Quadro de avisos
- Chat do setor em tempo real com RealtimeDatabase
- Geração de etiquetas para impressão, tais como: Itens próximo da validade, itens de transferência, itens com parcelamento com juros/sem juros
- Geração e impressão de cartazes personalizados de promoção, compre ganhe, leve pague, desconto na segunda unidade, etc. Tudo adaptado aos papéis pré-impressos da empresa
- Compartilhamento dos cartazes de acordo com a vigência da oferta entre lojas (Antes cada loja tinha que fazer o seu via excel manualmente e algumas compartilhavam entre si)
- Sistema de gerenciamentos e criação, edição de ofertas para serem compartilhadas e impressas
- Gerenciamento de itens próximos da validade, consulta de código interno de produtos (peguei uma planilha que continha código e descrição, criei um script que rodou a planilha e adicionou tudo no MongoDB pra consumo posterior, já que não tinha acesso nenhum ao sistema da empresa)
- Sistema admin para gerenciamento dos usuários do sistema, assim como consulta de tarefas finalizadas, em andamento, tarefas dentro do prazo, pendentes, etc por usuário.
TiraPreço - App Flutter | Novembro 2023
Com o conhecimento adiquirido no bootcamp do santander de flutter, desenvolvi um app agora em flutter cuja única funcionalidade é escanear o código e armazenar no storage do celular com Hive e depois desenhar na tela para scanear no sistema da empresa, app simples mas completamente funcional, rápido e sem necessidade de conexão - Feito em dois dias.
Outros projetos de bootcamps e afins
Portfolio
Flutter App Viacep
Flutter App Healthcare (Calculo de IMC)
Landing Page/Gerador de orçamentos para empresa do meu pai
Fltuter App Gerenciador de contatos
Flutter App - Curso Udemy - Clean Arch - TDD - SOLID
Cursos que realizei nesse tempo
- Bootcamp Santander Desenvolvimento Mobile com Flutter - Outubro 2023
- React Front end Ada Tech - Janeiro 2024
- Flutter BLoC TDD & Clean Architecture | Project Based - Dezembro 2023
Tentativas
Em meados de Junho de 2023, vira e meche me inscrevia em algumas vagas, mas sem retorno.
- Outubro de 2023 cheguei a passar em duas etapas para uma vaga na IBM, mas falhei no teste comportamental
- Novembro de 2023 realizei um teste técnico com prazo [72 Horas] para uma vaga Flutter (Aprendiz), no qual consistia em desenvolver um app leitor de livros que se conectava a uma api específica, passei no teste técnico porém depois de uma entrevista aparentemente positiva, recebi o uma negativa que haviam contratado outro candidato: Repositório do Teste
- Janeiro 2024 Full Stack ToDo App seguindo um arquivo figma com algumas regras com prazo de [6 dias]Link do projeto
Minha primeira vaga, PJ
Me inscrevi em uma vaga presencial pelo Linkedin, no dia seguinte fui contatado para realizar o seguinte teste:
-
Elaborar uma solução com as seguintes tecnologias:
-
Backend REST:
-
Node
-
Typescript
-
Express
-
Docker
-
Banco de dados Postgres
-
MicroServiço AWS / Lambda (opcional)
-
Frontend:
-
Typescript
-
React
-
ViteJS (opcional)
-
Requisitos da aplicação:
A solução deve disponibilizar ao usuário final uma interface na qual ele possa interagir com estruturas de diretórios e arquivos (visualmente similar ao Google Drive);
Autenticação de usuários utilizando JWT para comunicação entre frontend e o backend, como o emprego de cookies; -
Permissionamento, contemplando o seguintes perfis:
Administrador: acesso de leitura, escrita, deleção e compartilhamento sobre todos os arquivos e diretórios;
Criador: acesso de leitura, escrita, deleção e compartilhamento sobre todos os objetos criados por ele;
Convidado: acessos de acordo com as permissões que os perfis acima concederem a ele (possíveis leitura, escrita e deleção)
Em todos os casos anteriores, consideramos que teremos diversos níveis de recursividade nos diretórios e as permissões podem contemplar ou impedir a recursividade.
Meios para criarmos usuários e configurarmos permissões para os existentes e novos;
Meios para criarmos diretórios e arquivos dentro da estrutura de arquivos - os arquivos e diretórios não precisam ser reais, mas devem estar corretamente associados na base de dados.
Scripts / seeds com massa de dados para testes iniciais; -
O que será avaliado:
O desempenho do candidato será avaliado com base na qualidade do código, correto emprego de estruturas de banco de dados, na coerência com as tecnologias e requisitos apresentados, e na eficiência na solução dos problemas propostos;
Foi dado um prazo de 7 dias para desenvolver a aplicação, porém eu nunca tinha feito uma Api com Node Express, não tinha trabalhado com docker e pouca coisa do PostgreeSQL e AWS
Eu ainda estava trabalhando das 13 às 22 no meu emprego na loja de pets, utilizei todo meu tempo livre para desenvolver a aplicação, eu sabia que provavelmente não conseguiria entregar tudo, mas encarei o desafio e entreguei depois de 7 dias;
Back-End desenvolvido baseado em Clean Arch, 112 testes unitários, dockerizado e rodando em uma instância EC2 da AWS e Banco de dados na AWS RDS. (Agora não está mais porque estava gerando custos) Repositório e Documentação
Front-End desenvolvido com React, com autenticação, criação de pastas e arquivos e navegação, porém não deu tempo de desenvolver a parte de permissionamento no Front. Apesar de ter feito o deploy na vercel a integração não funcionou por conta do SSL, mas aí meu tempo já tinha estourado, mas localmente estava rodando tranquilamente integrado com a Api rodando na EC2Repositório Front-End
Enfim, enviei o desafio, mencionei que o desafio estava acima das minhas habilidades mas tentei meu melhor mesmo assim. Sinceramente, não esperava passar... Mas aí veio a entrevista técnica, expliquei como realizei o desafio, os projetos que já tinha desenvolvido e recebi a proposta para entrar como Desenvolvedor Full Stack Junior III, e iniciei em 5 de Fevereiro de 2024 juntamente com outros 3 desenvolvedores full-stack juniors.
Em um projeto de refatoração, participei de 3 Sprints, desenvolvi várias rotas no back-end em Node Express, PrismaDB, arquitetura MVC e testes de integração. Porém como havia acabado de entrar, às vezes passava uma regra de negócio ou outra, mas como eu completava as tasks sempre antes do final da sprint, conseguia prontamente fazer os ajustes pro front-end.
Na final da penúltima sprint, fui colocado pra desenvolver testes unitários no front-end,e na última sprint, como praticamente 90% das rotas estavam prontas, fui alocado pra desenvolver testes no front e back, somente. Peguei o projeto do front com 50% de cobertura, entreguei com 70% depois da 4 dias trabalhando somentes nos testes. O back estava se mantendo em 85%+ de cobertura. (e no terceiro dia da terceira sprint, 14 de fev, BOOM, desligado por motivos financeiros da empresa e em nehuma das sprints o time entregou o previsto na planning(apesar de eu ter entregue todas as tasks)
Conclusão
Gostaria de deixar bem claro que não vim aqui pra difamar ou desmerecer a empresa de forma alguma. Negócios são negócios, eu sabia do risco, e decidi correr por conta própria, porque realmente é algo que decidi que quero fazer, só gostaria de deixar o relato e receber algum feedback. Até porque haviam pessoas muito talentosas na equipe e aprendi MUITO, principalmente sobre o processo de desenvolvimento de sowftware em um ambiente profissional.
Eu acho que errei em ter aceitado a oferta que estava (na minha opinião) um pouco acima do meu nível de experiência, mas eu quis acreditar na aposta.
E sobre o meu aprendizado geral, talvez eu tenha focado em muitas tecnologias ao mesmo tempo, mas eu sinto que a base está legal até. Se comparar o código do meu primeiro e segundo projeto para o código desse último case, por exemplo.
Enfim, não pretendo desistir aqui, vou continuar persistindo apesar da síndrome de impostor bater forte às vezes.
E aí ficam algumas dúvidas:
É interessante manter essa breve experiência no currículo? Não sei...
Estou no caminho certo? Não sei...
Em que nível eu estou? Nâo sei...
Só sei que tenho um objetivo e preciso seguir em direção a ele. E quaisquer feedbacks dos senhores serão bem vindos!
Espero com este relato, talvez dar alguns insigths pra quem está correndo atrás da primeira vaga, mas que não cometa os meus mesmos erros.