[ Reflexão ] Como um único projeto To-do List me ajudou aprender programação.
Introdução:
Hoje gostaria de compartilhar uma situação que me ajudou muito a desenvolver minhas habilidades desde o inicio desta carreira. Quero aprensentar um fato interessante que me dei conta recentemente!
Começo de carreira
Já faz mais ou menos 1 anos e pouca coisa desde que comecei na programação. De lá para cá vi bastante coisa! Porém, sei que deveria estar muito mais longe do que estou hoje... Logo no começo eu fiz um pequeno projeto, um projeto simples e praticamente canônico na vida de todo programador, um To-do List. No começo, tinha apenas funções simples como adicionar elementos e remover.
O que eu aprendi com isso:
- Criar elementos HTML com javaScript
- Adicionar elementos HTML no documento via javaScript
- Eliminar um elemento em particular com JavaScript
- Responsividade no CSS
- Estilização simples com CSS
- condicional
Começando a se desenvolver
Claro que eu não só fiz um To-do list minha carreira toda! Fiz vários projetos e ainda faço, porém a maioria é privado pois estão inacabados (ainda). Vendo que outros projetos estavam me ajudando, decidi retornar as origins e mexer no To-do List novamente para aplicar o que aprendi em um projeto já pronto, eu queria melhorar ele!
Senti a necessidade de fazer os dados se tornaram persistentes e melhorar outros detalhes. O que eu aprendi:
- Manipulação de Arrays
- Métodos como Map, forEach e Filter em Arrays
- Conheci LocalStorage
- Aprendi a como serializar um arquivo JSON para objeto literal e vice-versa.
- Aprendi mais sobre UI/UX
- Aprendi Sass (pré-processador CSS)
Frameworks
Depois das atualizações acima, eu aprendi bastante coisa sobre javaScript e senti a necessidade de pegar um framework e começar a fazer uns projetinhos mais completos e rápido. E como de prache, eu decidi aplicar tudo que aprendi em React primeiro no meu To-do List.
O que eu aprendi:
- Tratamento de erros de forma adequada
- UseState, UseEffect, UseRef, useCallback, useMemo
- Conheci o JSX
- Componetização
- Modularizar o código
- Melhorias no UX/UI
- CSS module
- Lidar com SVG de forma mais adquada
Pré-eliminar
Depois dessa atualização eu parei de mexer no to-do list por vários meses e foquei em outros projetos como jogo da velha, landing pages e etc... Ai eu conheci o Next.js, e foi aqui que eu comecei a desandar um pouco... Sem aprender tudo do ecossistema React, pulei para o Next.js e novamente tentei implementar no meu To-do List e tudo quebrou de um jeito que era quase impossível recuperar, **delete o projeto. **
Depois de ter deletado o projeto, eu fiquei frustado por estar "fugindo" do Next.js, só porque tudo deu muito errado no inicio eu simplesmente apaguei o projeto que me ajudou tanto. Pensando muito nisso refiz tudo do zero com Next.js, desta vez com muita calma.
O que eu aprendi:
- Criação de rotas com Next.js App
- Manipulação de rotas
- rotas paralelas
- Lidar com erros de rota (404)
- Rotas dinâmicas
- Server-components
- Client-components
- Básico de Eslint
- O que era o prettier
- TypeScript
- TSX
- Tipagem de eventos (isso foi bem chatinho)
Atualmente
Eu refatorei muito o projeto, e depois do seu resultado final, eu não publiquei no github, algumas coisas eu retirei pois para mim não fazia sentido estar ali. O resultado final foi postado aqui, inclusive não foi tão bem recebido por aqui, mas melhores. O projeto hoje tem algumas pendências que não resolvi ainda por estar buscando o prejuízo que foi pular vários conteúdos. Como por exemplo onde tem "filtrar por prioridade", na verdade seria ordenar por prioridade!
Atualmente senti a necessidade de aprender sobre banco de dados, e escolhi um bem simples para começar que foi o indexedDB. Estou implementando ele neste exato momento inclusive.
O que eu aprendi hoje:
- O que é um banco de dados
- O que é ACID
- Como manter o banco de dados seguros
- Transactions
- Estratégias para manter os dados seguros
- Unit of Work
- Como manipular indexedDB
- Como manipular erros no IndexedDB
- como adicionar, remover e atualizar o indexedDB.
Conclusão
Como eu disse, não estou preso a apenas este projeto, mas de longe ele foi o que eu mais trabalhei. Me ajudou muito e muito deste aprendizado eu uso em outros projetos que estão privados pois estão inacabados no momento. Tenho projetos para criar algo com o intuito de contribuir mais com a comunidade Front-end.
Para quem quiser ver o resultado atual: To-do List
Aceitos todos os feedbacks! Podem criticar da forma mais cruel que quiserem. Eu estou aqui para evoluir e me tornar ainda mais erudito que sou hoje.