9 Projetos de Programação Que Farão de Você um Desenvolvedor Melhor

TThe Coding Koala
Computing/SoftwareAdult EducationInternet Technology

Transcript

00:00:00Sabe o que é mais frustrante do que construir um projeto? Não saber o que construir.
00:00:04Em algum momento da sua jornada como desenvolvedor, você chega a uma fase estranha.
00:00:08Criar outro app CRUD com um framework JavaScript parece entediante,
00:00:11mas criar um sistema operacional do zero parece impossível. Você está travado no meio.
00:00:16Você não quer algo fácil. Você não quer o impossível. Você só quer algo significativo.
00:00:21Algo desafiador o suficiente para subir de nível, mas não tão esmagador a ponto de desistir no meio.
00:00:26Acredite, eu já estive lá. Por isso, neste vídeo, vou te dar algumas ideias de projetos incríveis.
00:00:32Dividi estas ideias em três níveis. Nível um: construindo sua base. Nível dois: armazenamento,
00:00:38bancos de dados e sistemas de dados. E nível três: sistemas avançados e internos.
00:00:44Se você construir esses projetos, não vai apenas programar melhor. Você começará a pensar como um
00:00:49engenheiro. Vamos começar com o nível um. O primeiro projeto é criar seu próprio servidor HTTP
00:00:55do zero. Se você está assistindo a isto, provavelmente sabe o que é um servidor HTTP.
00:01:01Sempre que você abre um site ou chama uma API, há uma requisição e uma resposta nos bastidores.
00:01:06Mas, até agora, você só interagiu com isso através de frameworks como o Express. Criar seu próprio
00:01:12mini servidor HTTP te força a entender o que realmente acontece por baixo do capô. Você aprenderá como
00:01:19sockets TCP enviam e recebem dados, como requisições HTTP são analisadas, como as respostas são formatadas
00:01:25e como múltiplas requisições são tratadas simultaneamente. Se você já se sente sobrecarregado só de pensar
00:01:30em como encarar esses projetos, tenho uma solução para você no final deste vídeo. Não
00:01:35perca. Agora, vamos para o segundo projeto: criar seu próprio shell. Você já usou
00:01:40comandos como cd, ls e pwd centenas de vezes. Mas já parou para pensar no que realmente processa
00:01:46esses comandos? Ao criar seu próprio shell, você mesmo cria esse sistema. Você aprenderá coisas
00:01:52como ler e analisar entradas do usuário, executar processos, lidar com chamadas de sistema e
00:01:58entender conceitos de nível de SO, como processos e comandos. Ao construir seu shell do zero,
00:02:04você entenderá computadores de forma profunda. Agora a coisa fica interessante. Veremos quais são
00:02:09os projetos do nível dois. O primeiro aqui é construir seu próprio Redis. O Redis é um
00:02:15armazenamento de dados em memória usado como cache, banco de dados, mensageria e muito mais. É incrivelmente rápido.
00:02:21Mas até que você construa um, não entenderá realmente o porquê. Quando implementar seu próprio clone
00:02:26do Redis, você aprenderá como funcionam estruturas de dados em memória. Implementará comandos básicos do Redis.
00:02:32Entenderá o protocolo Redis e gerenciará múltiplas conexões de clientes de forma eficiente usando
00:02:38loops de eventos. Estes são apenas os pontos principais. Há muito mais para aprender quando começar
00:02:43a trabalhar nisso. Você perceberá que engenharia de software é muito mais do que criar aplicações CRUD.
00:02:48O próximo projeto é criar seu próprio GIT. Você usa o GIT todo dia, mas sabe como ele funciona?
00:02:54Quando você constrói um sistema de controle de versão simplificado, tudo faz sentido. Você entenderá
00:03:00como os commits são armazenados internamente. Implementará hashing e armazenamento endereçável por conteúdo.
00:03:05Organizará snapshots de arquivos em árvores de commit. E há muito mais que você aprenderá e implementará.
00:03:11E o legal de construir do zero é que você pode modificá-lo para funcionar como você quiser.
00:03:16Finalmente, nosso terceiro projeto é criar seu próprio banco de dados SQLite. O SQLite é um mecanismo de
00:03:22banco de dados sem servidor que armazena tudo em um único arquivo. Diferente do MySQL ou Postgres, não há
00:03:29um processo de servidor separado. É leve, mas incrivelmente poderoso. Ao construir sua própria versão,
00:03:34você entenderá como os dados são organizados usando estruturas como B-trees. Você vai analisar e executar
00:03:39consultas simples e implementar indexação para recuperação rápida. Como desenvolvedor, você não escapa
00:03:45dos bancos de dados. Mas quando entender como um funciona internamente, você estará em um nível superior.
00:03:52No nível três, vamos mais fundo. O primeiro projeto aqui é criar sua própria mini linguagem de programação.
00:03:58Sim, sua própria linguagem. Você criará algo que lê código, o entende e executa
00:04:04instruções. Embora pareça intimidador, é um dos projetos mais gratificantes que você pode fazer.
00:04:10Você aprenderá e implementará coisas como Lexer, Parser e Árvore de Sintaxe Abstrata (AST). Acima de tudo,
00:04:17entenderá como interpretadores e compiladores funcionam de verdade. É um ótimo projeto porque você finalmente
00:04:22entenderá como realmente nos comunicamos com os computadores. E você ainda pode ostentar que criou
00:04:27uma linguagem de programação e dar o nome que quiser. O segundo projeto é criar seu próprio
00:04:32cliente BitTorrent. É aqui que entram os sistemas distribuídos. O BitTorrent é um sistema de compartilhamento
00:04:38de arquivos ponto a ponto (P2P), onde usuários baixam partes de arquivos de vários nós em vez de um único servidor.
00:04:44Ao construir isso, você implementará descoberta de pares, gerenciará conexões entre nós, dividirá arquivos em
00:04:50pedaços, garantirá a integridade e lidará com comunicação distribuída. Não é um projeto fácil.
00:04:57Provavelmente você não entendeu nem metade do que eu disse. Mas isso ensina como sistemas distribuídos
00:05:02em larga escala funcionam na prática. E, por fim, nosso último projeto é criar seu próprio
00:05:08assistente de programação. Algo similar ao Claude Code. Ferramentas modernas de IA são ótimas,
00:05:14mas, por baixo do capô, são sistemas que integram modelos de linguagem (LLMs) com arquitetura de software tradicional.
00:05:20Ao construir um, você integrará a API de um LLM em uma aplicação. Irá analisar e indexar arquivos de projeto
00:05:27para fornecer contexto. Gerenciará prompts e controlará as respostas. Você projetará um sistema que
00:05:32mistura IA com princípios reais de engenharia. E, depois de começar a trabalhar nisso, você entenderá
00:05:38como essas ferramentas populares de codificação por IA realmente funcionam. E não só isso; como a IA está em
00:05:44alta hoje, este é um projeto excelente e desafiador que pode te destacar. Agora, sejamos sinceros:
00:05:50alguns desses projetos são difíceis. Criar seu próprio Redis, Git ou BitTorrent não é algo
00:05:55que você termina casualmente em um fim de semana. Você vai travar. Vai duvidar de si mesmo. Às vezes,
00:06:01nem saberá se está implementando corretamente. E é aí que a maioria das pessoas desiste.
00:06:05Para lidar com isso, existe uma plataforma chamada CodeCrafters. É uma plataforma de aprendizado baseada em projetos
00:06:11onde você reconstrói ferramentas como Redis, SQLite, servidores DNS e HTTP passo a passo. Eles não te
00:06:19dão a solução; eles te dão testes e marcos estruturados, e você implementa tudo por conta própria.
00:06:23Eu pessoalmente a usei ao trabalhar nestes projetos. E, honestamente, ter essa direção estruturada
00:06:29fez a diferença entre desistir e terminar. Se você gostou dessas ideias, mas quer orientação enquanto
00:06:34faz o trabalho real, deixarei um link na descrição. Mas, use uma plataforma ou vá sozinho,
00:06:39o importante é que você realmente construa algo. Se você também estava revirando a internet
00:06:45em busca do próximo projeto para criar, espero que isso tenha trazido clareza. Pode parecer assustador
00:06:51no início, mas a água fria só esquenta depois que você pula. Se gostou deste tipo de vídeo,
00:06:57não esqueça de curtir, se inscrever e me contar com qual projeto você vai começar.
00:07:02Vejo você no próximo!

Key Takeaway

Para evoluir de um simples programador para um engenheiro de software, é necessário construir sistemas fundamentais do zero para compreender a mecânica interna que os frameworks ocultam.

Highlights

A transição de projetos CRUD básicos para engenharia de sistemas complexos.

A importância de construir ferramentas fundamentais como servidores HTTP e Shells do zero.

O entendimento profundo de armazenamento de dados através da recriação do Redis e SQLite.

Como o controle de versão funciona internamente ao implementar um clone do Git.

Desafios de sistemas distribuídos e comunicação P2P com o projeto BitTorrent.

A intersecção entre Inteligência Artificial e engenharia de software tradicional.

O valor de plataformas estruturadas como CodeCrafters para superar bloqueios técnicos.

Timeline

Introdução: O Dilema do Desenvolvedor Intermediário

O palestrante aborda a frustração comum de desenvolvedores que se sentem travados entre aplicações CRUD repetitivas e projetos impossíveis como sistemas operacionais. Ele explica que existe um meio-termo significativo onde o aprendizado real acontece através de desafios moderados. O objetivo do vídeo é apresentar nove projetos que transformam a mentalidade de um codificador em um engenheiro. As ideias são organizadas em três níveis de dificuldade progressiva, focando em base, dados e sistemas internos. Este início estabelece a motivação necessária para quem busca subir de nível na carreira técnica.

Nível 1: Construindo a Base Técnica

Nesta seção, o foco está em entender os fundamentos da comunicação e do sistema operacional. O primeiro projeto sugerido é um servidor HTTP do zero, explorando sockets TCP, análise de requisições e formatação de respostas sem depender de frameworks como Express. O segundo projeto é a criação de um Shell próprio para processar comandos como 'cd' e 'ls', lidando diretamente com chamadas de sistema (syscalls). Ao implementar essas ferramentas, o desenvolvedor aprende como o software interage com o hardware e a rede. Essas tarefas eliminam a 'magia' por trás das ferramentas que usamos diariamente no terminal.

Nível 2: Sistemas de Dados e Controle de Versão

O nível intermediário foca em como a informação é armazenada, recuperada e gerenciada. O autor propõe construir um clone do Redis para entender estruturas de dados em memória e loops de eventos eficientes. Em seguida, o desafio é recriar o Git, o que revela a lógica de hashing, armazenamento endereçável por conteúdo e snapshots de arquivos. O último projeto deste nível é o SQLite, focando em estruturas de B-trees e execução de consultas em um banco de dados sem servidor. Compreender esses mecanismos internos eleva o desenvolvedor a um patamar superior na manipulação de dados complexos.

Nível 3: Sistemas Avançados e IA

O nível avançado mergulha em interpretadores, sistemas distribuídos e tecnologias emergentes. O primeiro desafio é criar uma mini linguagem de programação, envolvendo conceitos de Lexer, Parser e Árvores de Sintaxe Abstrata (AST). O segundo projeto é um cliente BitTorrent, que introduz a complexidade de redes P2P, descoberta de pares e integridade de arquivos distribuídos. Por fim, o vídeo sugere um assistente de codificação por IA, integrando LLMs com arquiteturas de software tradicionais para indexar projetos. Estes projetos são descritos como altamente recompensadores e capazes de destacar qualquer profissional no mercado atual.

Estratégias de Execução e Conclusão

O autor reconhece honestamente que esses projetos são difíceis e que muitos desenvolvedores podem desistir ao encontrar obstáculos. Para mitigar isso, ele recomenda a plataforma CodeCrafters, que oferece testes e marcos estruturados para guiar a implementação de ferramentas complexas. Ele enfatiza que a direção estruturada pode ser a diferença entre abandonar o projeto ou concluí-lo com sucesso. O vídeo encerra incentivando a ação imediata, comparando o início de um projeto difícil ao choque inicial de pular em água fria. O palestrante reforça que a clareza e o crescimento profissional vêm apenas através da construção prática.

Community Posts

View all posts