- 73 ideas de proyectos de programación pensadas para que los desarrolladores experimenten al mismo tiempo aprendizaje y desafíos creativos
- Cada proyecto abarca distintas áreas como redes, sistemas, IA, gráficos, seguridad y bases de datos
- La mayoría de las ideas están diseñadas para implementar directamente los principios técnicos fundamentales, lo que permite aprender teoría y práctica a la vez
- Cada apartado incluye enlaces a artículos académicos, documentación oficial y tutoriales, dejando clara la ruta de aprendizaje
- Ofrece una oportunidad para ver la programación no como simple escritura de código, sino como un arte de exploración y creación
Resumen general
- Muchos desarrolladores quieren empezar un proyecto personal sin saber qué construir
- En internet abundan las ideas comunes y aburridas
- Este artículo presenta 73 proyectos divertidos y con alto valor de aprendizaje
- Cada proyecto está planteado para aprender implementando directamente conceptos técnicos concretos
Proyectos de redes y sistemas
- Cliente BitTorrent: implementar un cliente de descarga de archivos para aprender cómo funciona el networking P2P
- Servidor DNS: construir un servidor con recepción de consultas, parsing de paquetes, resolución de dominios y caché
- Runtime de contenedores: aprender namespaces del kernel,
chroot y aislamiento de procesos sin Docker
- Stack TCP/IP: implementar directamente el protocolo TCP/IP en espacio de usuario sobre Linux
- Balanceador de carga: implementar distribución de solicitudes entre servidores backend, health checks y persistencia de sesión
Datos y sistemas distribuidos
- Protocolo RAFT: implementar un sistema que soporte consenso distribuido y recuperación ante fallas
- Clon de Redis: construir una base de datos en memoria con comandos básicos, persistencia RDB, replicación y transacciones
- Broker de Kafka: implementar un sistema de log distribuido que procese creación de tópicos y solicitudes de producción y consumo de mensajes
- Motor SQL y optimizador: aprender ejecución y optimización de consultas imitando la estructura de SQLite
- Sistema CI: construir un sistema integrado que automatice monitoreo de repositorios Git, ejecución de pruebas y reporte de resultados
Inteligencia artificial y algoritmos
- Solver de Wordle: programa de deducción de palabras usando teoría de la información y entropía
- Generador de deepfakes: implementar transformación de rostros usando Optimal Transport
- Random forest: resolver problemas de clasificación implementando directamente árboles de decisión y random forest
- Framework de redes neuronales: construir un framework de deep learning con tensores, autograd y optimizadores
- Diseño evolutivo: simulación que hace evolucionar automáticamente estructuras mecánicas usando algoritmos genéticos
Gráficos y desarrollo de juegos
- Ray tracer: renderizar una escena 3D compuesta por esferas, planos e iluminación
- Renderizador OpenGL: implementar un mini renderizador para aprender fundamentos de programación gráfica
- Remake de Dangerous Dave: recrear un juego clásico usando SDL
- Motor de ajedrez: implementar un juego de ajedrez con motor UCI incluido
- Crucigrama procedural: generar crucigramas automáticamente usando propagación de restricciones
Seguridad y criptografía
- Servidor de autenticación (JWT/Sessions): implementar criptografía, expiración de tokens y gestión de sesiones
- Sistema de votación anónima: diseñar votación cifrada usando pruebas de conocimiento cero (ZKP)
- VPN: construir una mesh VPN que retransmita tráfico sin servidor central
- Experimentos de malware: probar respuestas de firewall en un entorno de máquina virtual
- Archivador Zip: implementar directamente compresión, cifrado y empaquetado
Desarrollo web y de aplicaciones
- Servidor web: procesar solicitudes HTTP, servir archivos estáticos, routing y soporte de reverse proxy
- Editor colaborativo: implementar un editor de texto distribuido basado en CRDT
- Motor de navegador: construir un motor simple que haga parsing y renderizado de HTML/CSS
- Editor de video: editor del lado del cliente que corre en el navegador
- Extensión de navegador: guardar y autocompletar estados de contraseñas, formularios y portapapeles
Visualización de datos y búsqueda
- Googlebot: crear un crawler web para aprender la estructura básica de un sistema de búsqueda
- Motor de búsqueda de Wikipedia: implementar indexación, tokenización y algoritmos de ranking
- Grafo de conocimiento: visualizar relaciones entre entidades y actualizarlo automáticamente desde la web
- Motor tipo Google Maps: sistema de mapas que indexa datos de caminos, terreno y lugares
- Sistema de caché CDN: diseñar una estructura de caché que evite solicitudes duplicadas de activos estáticos
Hardware y sistemas embebidos
- Sistema de laser tag: sistema de detección en tiempo real usando codificación IR y comunicación MQTT
- App de hogar inteligente: proyecto IoT con control de dispositivos IR, programación y automatización
- Emulador de Game Boy Advance: recrear la estructura de CPU, memoria, gráficos y entrada
Blockchain y finanzas
- Nodo de Bitcoin: implementar descarga y validación de bloques
- Bot de trading de acciones: realizar compraventa automática con un sistema basado en eventos
- Votación anónima y contratos inteligentes: sistema de votación confiable basado en blockchain
Cierre
- Los 73 proyectos enfatizan un enfoque experimental de aprendizaje mediante la implementación directa de tecnologías clave
- Cada idea conduce a documentación oficial, artículos académicos y tutoriales para impulsar un aprendizaje práctico
- Una propuesta práctica para redescubrir la programación como un arte de exploración y creación
1 comentarios
Opiniones en Hacker News
Algunos dicen que esta lista parece generada por IA, pero yo más bien creo que “hacerlo uno mismo desde cero” es la mejor forma de reducir la dependencia de la IA
En Japón a este proceso le llaman ‘shugyo (修行)’. Un artesano afila herramientas durante mucho tiempo no por eficiencia, sino para entender la naturaleza del acero
Hacer Redis o Git por tu cuenta no se trata del resultado, sino de construir un modelo mental a través de la fricción del proceso. Justo esa es la parte que la IA no puede reemplazar
Presenta mi recopilación de ideas de proyectos: Challenging programming projects every programmer should try
Es una lista de codecrafters.io. Esta plataforma te hace implementar proyectos paso a paso y ofrece pruebas de integración y comunidad
Yo también estoy haciendo el proyecto ‘Build your own Redis’ y está bastante divertido. No parece hecho por IA; más bien da la impresión de que reunieron ideas de la comunidad
Recomiendo fuertemente intentar hacer tu propio cliente de BitTorrent. La especificación es simple y los problemas de detalle son interesantes. Cuando lo terminas, da mucha satisfacción descargar tú mismo el kernel de Debian
Si además implementas enlaces magnet o funciones de seeding, puedes aprender todavía más. Gracias a esta experiencia me interesé por los sistemas P2P y por DHT (como Chord)
Esta lista está un poco rara. Por ejemplo, el #58 es implementar malloc, que ya es un tema bastante difícil para principiantes, y justo el siguiente, el #59, pide crear un protocolo de streaming desde cero. La variación de dificultad es demasiado grande
Me gustaría saber qué opinan del desafío de programación de /g/ de 4chan. La clasificación de dificultad me parece algo arbitraria. Por ejemplo, decir que un bootloader es más difícil que un compilador de C suena raro
Enlace a la imagen de referencia
.mdEstá bien crear por tu cuenta herramientas o protocolos pequeños y autocontenidos. Hay una gran satisfacción que viene no del tamaño, sino de la claridad y de sentirlo completo
Me hace preguntarme si esto será astroturfing (promoción manipulada)
Algunos proyectos se terminan en un día, pero otros tienen la escala de un trabajo final de licenciatura o incluso de una tesis de maestría
Ver esta lista me hace sentir que no soy un buen programador
Para empezar, conviene revisar trabajos previos en el área que te interese. Por ejemplo, puede servir mirar el trabajo de Adam Dunkels. Como es para sistemas embebidos, es pequeño y fácil de entender
Si hace falta, también recomiendo aprovechar herramientas de IA para ayudar a entender o generar código