11 pontos por GN⁺ 2026-01-02 | 1 comentários | Compartilhar no WhatsApp
  • Com 73 ideias de projetos de programação, a proposta permite que desenvolvedores vivenciem ao mesmo tempo aprendizado e desafios criativos
  • Cada projeto abrange áreas diversas, como redes, sistemas, IA, gráficos, segurança e bancos de dados
  • A maioria das ideias foi pensada para que você implemente diretamente os princípios técnicos centrais, permitindo aprender teoria e prática em conjunto
  • Cada item inclui artigos acadêmicos, documentação oficial e links para tutoriais, deixando o caminho de aprendizado mais claro
  • Oferece uma oportunidade de enxergar a programação não como simples escrita de código, mas como uma arte de investigação e criação

Visão geral

  • Muitos desenvolvedores querem começar um projeto paralelo sem saber exatamente o que construir
    • Há muitas ideias comuns e sem graça na internet
  • Este texto apresenta 73 projetos divertidos e com alto valor de aprendizado
    • Cada projeto foi estruturado para permitir aprender implementando diretamente conceitos técnicos específicos

Projetos de redes e sistemas

  • Cliente BitTorrent: implementar um cliente de download de arquivos para aprender como funciona o networking P2P
  • Servidor DNS: construir um servidor com recebimento de consultas, parsing de pacotes, resolução de domínio e cache
  • Runtime de contêineres: aprender namespaces do kernel, chroot e isolamento de processos sem usar Docker
  • Pilha TCP/IP: implementar diretamente o protocolo TCP/IP no espaço de usuário do Linux
  • Balanceador de carga: implementar distribuição de requisições entre servidores backend, verificação de saúde e persistência de sessão

Dados e sistemas distribuídos

  • Protocolo RAFT: implementar um sistema com suporte a consenso distribuído e recuperação de falhas
  • Clone do Redis: construir um banco de dados em memória com comandos básicos, persistência RDB, replicação e transações
  • Broker Kafka: implementar um sistema de log distribuído que processa criação de tópicos e requisições de produção/consumo de mensagens
  • Engine SQL e otimizador: aprender execução e otimização de consultas imitando a estrutura do SQLite
  • Sistema de CI: construir um sistema integrado que automatiza monitoramento de repositórios Git, execução de testes e relatório de resultados

Inteligência artificial e algoritmos

  • Solver de Wordle: programa de dedução de palavras usando teoria da informação e conceito de entropia
  • Gerador de deepfake: implementar transformação facial usando Optimal Transport
  • Random Forest: resolver problemas de classificação implementando diretamente árvores de decisão e random forests
  • Framework de redes neurais: construir um framework de deep learning com tensores, autograd e otimizadores
  • Projeto evolutivo: simulação que faz estruturas mecânicas evoluírem automaticamente usando algoritmos genéticos

Gráficos e desenvolvimento de jogos

  • Ray Tracer: renderizar uma cena 3D composta por esferas, planos e iluminação
  • Renderizador OpenGL: implementar um mini renderizador para aprender os fundamentos da programação gráfica
  • Remake de Dangerous Dave: recriar o jogo clássico usando SDL
  • Engine de xadrez: implementar um jogo de xadrez com engine UCI
  • Palavras cruzadas procedurais: gerar automaticamente palavras cruzadas usando propagação de restrições

Segurança e criptografia

  • Servidor de autenticação (JWT/Sessions): implementar criptografia, expiração de tokens e gerenciamento de sessões
  • Sistema de votação anônima: projetar votação criptografada com provas de conhecimento zero (ZKP)
  • VPN: construir uma VPN em malha que retransmite tráfego sem servidor central
  • Experimento com malware: testar resposta de firewall em ambiente de máquina virtual
  • Arquivador Zip: implementar diretamente compressão, criptografia e empacotamento

Desenvolvimento web e de aplicações

  • Servidor web: processar requisições HTTP, servir arquivos estáticos, fazer roteamento e dar suporte a proxy reverso
  • Editor colaborativo: implementar um editor de texto distribuído baseado em CRDT
  • Engine de navegador: construir uma engine simples que faz parsing e renderização de HTML/CSS
  • Editor de vídeo: editor client-side executado dentro do navegador
  • Extensão de navegador: armazenar e preencher automaticamente senhas, formulários e estado da área de transferência

Visualização de dados e busca

  • Googlebot: criar um crawler web para aprender a estrutura básica de um sistema de busca
  • Mecanismo de busca da Wikipedia: implementar indexação, tokenização e algoritmo de ranking
  • Grafo de conhecimento: visualizar relações entre entidades e atualizar automaticamente a partir da web
  • Engine do Google Maps: sistema de mapas que indexa dados de estradas, terreno e lugares
  • Sistema de cache CDN: projetar uma estrutura de cache que evita requisições duplicadas para ativos estáticos

Hardware e embarcados

  • Sistema de laser tag: sistema de detecção em tempo real usando codificação IR e comunicação MQTT
  • App de casa inteligente: projeto IoT com controle de dispositivos IR, agendamento e automação
  • Emulador de Game Boy Advance: recriar a estrutura de CPU, memória, gráficos e entrada

Blockchain e finanças

  • Nó de Bitcoin: implementar download e validação de blocos
  • Bot de trading de ações: realizar operações automatizadas com um sistema orientado a eventos
  • Votação anônima e contratos inteligentes: sistema de votação confiável baseado em blockchain

Encerramento

  • Os 73 projetos enfatizam uma abordagem experimental de aprendizado por meio da implementação direta de tecnologias centrais
  • Cada ideia leva a documentação oficial, artigos acadêmicos e tutoriais, incentivando um aprendizado prático
  • É uma proposta prática para redescobrir a programação como arte de investigação e criação

1 comentários

 
GN⁺ 2026-01-02
Opiniões no Hacker News
  • Algumas pessoas dizem que esta lista parece gerada por IA, mas eu penso justamente o contrário: “fazer do zero com as próprias mãos” é a melhor forma de reduzir a dependência de IA
    No Japão, esse processo é chamado de shugyo (修行). Um artesão passa muito tempo afiando suas ferramentas não por eficiência, mas para entender a essência do aço
    Construir algo como Redis ou Git por conta própria não é sobre o resultado final, e sim sobre desenvolver modelos mentais por meio do atrito do processo. Essa é justamente a parte que a IA não pode substituir

    • O foco japonês nos detalhes sempre me impressiona. Também tento aplicar essa postura na minha vida
    • Fico me perguntando se isso implica repetição. Tipo, reconstruir o Redis umas 20 vezes?
    • Tem um certo elemento de marketing, mas ainda acho positivo recomendarem a documentação oficial do Redis em vez dos próprios tutoriais pagos
    • Citar em todo comentário que isso é usado no Japão parece um pouco exagerado. Pela idade da conta, dá até uma leve impressão de bot
    • Muitos dos melhores diretores de fotografia vieram da equipe de iluminação. Acho que é o mesmo princípio
  • Apresenta a coletânea de ideias de projeto que eu montei: Challenging programming projects every programmer should try

    • Esta lista é bem mais enxuta e explica claramente o que se aprende em cada projeto, então achei muito melhor. Já o post original parece mais uma coisa de “100 livros que você precisa ler”, mais enumeração do que prática
    • Na graduação, implementei Space Invaders num Zync FPGA, e foi muito divertido projetar separando hardware e software. Um colega chegou a criar um bloco de análise de frequência de microfone e controlava o jogo com uma flauta doce
    • Gostei mais desta lista. Ainda não tentei implementar uma planilha, mas também não é algo que eu faça questão de fazer
    • Legal rever esse texto, eu já tinha deixado salvo nos favoritos
  • A lista veio de codecrafters.io. A plataforma faz você implementar projetos passo a passo, oferecendo testes de integração e comunidade
    Eu também estou fazendo o projeto “Build your own Redis” e está sendo bem divertido. Não parece algo feito por IA; parece mais uma coletânea de ideias recebidas da comunidade

  • Recomendo fortemente tentar implementar um cliente BitTorrent por conta própria. A especificação é simples, e os problemas de detalhe são interessantes. Depois de terminar, baixar você mesmo o kernel do Debian dá uma sensação ótima
    Se você implementar também links Magnet ou seeding, dá para aprender ainda mais. Essa experiência me levou a me interessar por sistemas P2P e DHTs (como Chord)

    • Na faculdade, fiz um projeto de criar um “cliente P2P”, e foi realmente divertido implementar coisas como handshaking e o design do tamanho dos chunks
  • Esta lista é meio estranha. Por exemplo, o item #58 é implementar malloc, um tema bem difícil para iniciantes, e logo em seguida o #59 manda criar um protocolo de streaming do zero. A variação de dificuldade é grande demais

    • Lá pela metade da leitura começa a surgir um estilo de escrita que parece feito por IA. Não soa natural
  • Queria saber a opinião do pessoal sobre os desafios de programação do /g/ do 4chan. A divisão de dificuldade parece meio arbitrária. Por exemplo, dizer que um bootloader é mais difícil do que um compilador C soa estranho
    Link da imagem de referência

    • O link não abre a imagem diretamente. Seria melhor apontar para um arquivo .md
  • Vale a pena criar por conta própria ferramentas ou protocolos pequenos e fechados. A satisfação vem mais da clareza e sensação de completude do que da escala

  • Fica a dúvida se isso não é astroturfing (promoção manipulada)

    • No CodeCrafters, não seria a primeira vez. Veja este caso anterior
  • Alguns projetos podem ser concluídos em um dia, mas outros têm escala de trabalho de conclusão de curso ou até de dissertação de mestrado

  • Olhando essa lista, dá a sensação de que eu não sou um bom programador

    • A maioria dos projetos parece pesada no começo, mas se você quebrar em partes menores, eles ficam totalmente viáveis
    • Na verdade, há muitas tarefas difíceis até para desenvolvedores experientes. Mas esse é justamente o motivo de serem desafiadoras. Em vez de se comparar com os outros, é melhor focar no processo de aprendizagem
      Para começar, vale olhar trabalhos anteriores na área que te interessa. Por exemplo, dá para se inspirar no trabalho de Adam Dunkels. Como é voltado para embarcados, é pequeno e fácil de entender
      Se necessário, também recomendo usar ferramentas de IA para ajudar a entender ou gerar código