9 proyectos de programación que te harán un mejor desarrollador

TThe Coding Koala
Computing/SoftwareAdult EducationInternet Technology

Transcript

00:00:00¿Sabes qué es más frustrante que construir un proyecto? No saber qué construir.
00:00:04En algún momento de tu camino como desarrollador, llegas a esta fase extraña.
00:00:08Hacer otra aplicación CRUD con un framework de JavaScript se siente aburrido,
00:00:11pero crear un sistema operativo desde cero parece imposible. Estás atrapado en el medio.
00:00:16No quieres algo fácil. No quieres lo imposible. Solo quieres algo significativo.
00:00:21Algo lo suficientemente desafiante para subir de nivel, pero no tan abrumador como para rendirte a la mitad.
00:00:26Créeme, yo he pasado por eso. Así que en este video, voy a darte algunas ideas de proyectos geniales.
00:00:32Los he dividido en tres niveles. Nivel uno: construyendo tus cimientos. Nivel dos: almacenamiento,
00:00:38bases de datos y sistemas de datos. Y nivel tres: sistemas avanzados e internos.
00:00:44Si construyes estos proyectos, no solo mejorarás programando. Empezarás a pensar como un
00:00:49ingeniero. Empecemos con el nivel uno. El primer proyecto es construir tu propio servidor HTTP
00:00:55desde cero. Si estás viendo esto, probablemente sepas qué es un servidor HTTP. Cada vez que abres
00:01:01un sitio web o llamas a una API, hay una solicitud y una respuesta ocurriendo tras bambalinas.
00:01:06Pero hasta ahora, solo has interactuado con ello a través de frameworks como Express. Crear tu propio mini
00:01:12servidor HTTP te obliga a entender qué está pasando realmente debajo. Aprenderás cómo los sockets TCP
00:01:19envían y reciben datos, cómo se procesan las solicitudes HTTP, cómo se formatean las respuestas y cómo
00:01:25se manejan múltiples solicitudes simultáneamente. Si ya te sientes abrumado sobre cómo se supone
00:01:30que vas a abordar estos proyectos, tengo una pequeña solución para ti al final de este video. Asegúrate
00:01:35de no perdértelo. Ahora pasemos al segundo proyecto: construir tu propia shell. Has usado
00:01:40comandos como cd, ls, pwd cientos de veces. ¿Pero alguna vez has pensado qué es lo que realmente
00:01:46procesa esos comandos? Cuando construyes tu propia shell, creas ese sistema tú mismo. Aprenderás cosas
00:01:52como leer y procesar la entrada del usuario, ejecutar procesos, manejar llamadas al sistema y
00:01:58comprender conceptos de nivel de SO como procesos y comandos. Al construir tu propia shell desde cero,
00:02:04entenderás las computadoras a un nivel profundo. Ahora las cosas se ponen interesantes. Veremos cuáles
00:02:09son los proyectos del nivel dos. El primer proyecto aquí es construir tu propio Redis. Redis es un
00:02:15almacén de datos en memoria usado como caché, base de datos, gestor de mensajes y más. Es increíblemente rápido. Pero
00:02:21hasta que construyas uno tú mismo, no entenderás realmente por qué. Cuando implementes tu propio clon
00:02:26de Redis, aprenderás cómo funcionan las estructuras de datos en memoria. Implementarás comandos básicos de Redis.
00:02:32Entenderás el protocolo de Redis. Gestionarás múltiples conexiones de clientes eficientemente usando bucles
00:02:38de eventos. Estos son solo algunos puntos destacados. Aún hay muchas cosas que aprenderás una vez que comiences
00:02:43a trabajar en esto. Te darás cuenta de que la ingeniería de software es más que solo crear aplicaciones CRUD.
00:02:48El siguiente proyecto es construir tu propio GIT. Usas GIT todos los días. ¿Pero realmente sabes cómo funciona?
00:02:54Cuando construyes un sistema de control de versiones simplificado por ti mismo, todo encaja. Entenderás
00:03:00cómo se almacenan internamente los commits. Implementarás hashing y almacenamiento direccionable por contenido.
00:03:05Organizarás instantáneas de archivos en árboles de commits. Y hay mucho más que aprenderás e implementarás.
00:03:11Y lo genial de construir desde cero es que puedes modificarlo para que funcione como tú quieras.
00:03:16Finalmente, nuestro tercer proyecto es construir tu propia base de datos SQLite. SQLite es un motor de base
00:03:22de datos sin servidor que guarda todo en un solo archivo. A diferencia de MySQL o Postgres, no hay un
00:03:29proceso de servidor separado. Es ligero pero increíblemente potente. Cuando construyas tu propia versión,
00:03:34entenderás cómo se organiza la información usando estructuras como árboles B. Analizarás y ejecutarás
00:03:39consultas simples. Implementarás indexación para una recuperación más rápida. Como desarrollador, no puedes escapar
00:03:45de las bases de datos. Pero una vez entiendas cómo funciona una por dentro, estarás entre los pocos desarrolladores.
00:03:52Ahora, en el nivel tres, vamos más profundo. El primer proyecto aquí es crear tu propio mini lenguaje de programación.
00:03:58Sí, tu propio lenguaje. Crearás algo que lea código, lo entienda y ejecute
00:04:04instrucciones. Y aunque suene intimidante, es uno de los proyectos más gratificantes que puedes construir.
00:04:10Aprenderás e implementarás cosas como un Lexer, un Parser y un árbol de sintaxis abstracta. Lo más importante, lo
00:04:17entenderás cómo funcionan realmente los intérpretes y compiladores. Este es un gran proyecto porque finalmente
00:04:22entenderás cómo nos comunicamos realmente con las computadoras. Y también puedes presumir de que creaste
00:04:27un lenguaje de programación y ponerle el nombre que quieras. El segundo proyecto es construir tu propio
00:04:32cliente de BitTorrent. Aquí es donde entran en juego los sistemas distribuidos. BitTorrent es un sistema
00:04:38de intercambio de archivos peer-to-peer donde los usuarios descargan fragmentos de archivos de múltiples pares en vez de un solo servidor.
00:04:44Cuando construyas esto, implementarás el descubrimiento de pares, gestionarás conexiones entre nodos, dividirás archivos en
00:04:50fragmentos, asegurarás la integridad de los archivos y manejarás la comunicación distribuida. Este no es un proyecto fácil.
00:04:57Seguro que ni siquiera has entendido la mitad de lo que acabo de decir. Pero te enseña cómo funcionan realmente
00:05:02los sistemas distribuidos a gran escala. Y finalmente, nuestro último proyecto es construir tu propio
00:05:08asistente de programación. Algo similar a Claude Code. Las herramientas de IA modernas se sienten geniales, pero por dentro,
00:05:14son sistemas que integran modelos de lenguaje grandes con arquitectura de software tradicional. Cuando construyas
00:05:20uno tú mismo, integrarás la API de un LLM en una aplicación. Analizarás e indexarás archivos de proyecto
00:05:27para proporcionar contexto. Gestionarás prompts y controlarás las respuestas. Diseñarás un sistema que
00:05:32mezcle la IA con principios de ingeniería reales. Y después de empezar a trabajar en esto, entenderás
00:05:38cómo funcionan realmente estas populares herramientas de programación con IA por debajo. Y no solo eso, dado que la IA
00:05:44está tan de moda hoy en día, este es un proyecto excelente y desafiante que puede hacerte destacar. Seamos
00:05:50honestos. Algunos de estos proyectos son difíciles. Construir tu propio Redis, Git o un cliente BitTorrent no es
00:05:55algo que termines casualmente en un fin de semana. Te atascarás. Dudarás de ti mismo. A veces
00:06:01ni siquiera sabrás si lo estás implementando correctamente. Y ahí es donde normalmente la mayoría
00:06:05se rinde. Así que, para lidiar con esto, existe una plataforma llamada CodeCrafters. Es una plataforma de
00:06:11aprendizaje basada en proyectos donde reconstruyes herramientas como Redis, SQLite, servidores DNS o servidores HTTP, paso a paso. No
00:06:19te dan la solución. Te dan pruebas y hitos estructurados. Y tú implementas todo
00:06:23por tu cuenta. Personalmente la he usado al trabajar en estos proyectos. Y honestamente, tener esa dirección
00:06:29estructurada marcó la diferencia entre abandonar y terminar. Así que si te gustan estas ideas de proyectos pero
00:06:34quieres guía mientras sigues haciendo el trabajo real, dejaré un enlace en la descripción. Pero ya sea que uses
00:06:39una plataforma o lo hagas totalmente solo, lo importante es que realmente construyas algo tú mismo. Si tú también
00:06:45has estado buscando por todo internet el próximo proyecto que construir, espero que esto te haya dado claridad.
00:06:51Puede dar miedo al principio, pero el agua fría no se calienta hasta que saltas dentro. Si te gustó este
00:06:57tipo de video, asegúrate de darle a like, suscribirte y dime con qué proyecto vas a empezar.
00:07:02Nos vemos en el próximo.

Key Takeaway

Para dejar de ser un simple desarrollador y convertirse en ingeniero de software, es fundamental construir desde cero herramientas complejas que utilizamos a diario, entendiendo así sus mecanismos internos y arquitectura profunda.

Highlights

Propone 9 proyectos divididos en tres niveles de dificultad para evolucionar de programador a ingeniero.

El Nivel 1 se enfoca en los cimientos mediante la creación de un servidor HTTP y una shell propia.

El Nivel 2 aborda sistemas de datos replicando herramientas populares como Redis, Git y SQLite.

El Nivel 3 explora sistemas avanzados como lenguajes de programación, clientes BitTorrent y asistentes de IA.

Enfatiza que construir desde cero permite entender conceptos de bajo nivel como sockets TCP, procesos del SO y estructuras de datos.

Recomienda la plataforma CodeCrafters para aquellos desarrolladores que buscan una ruta estructurada y basada en pruebas.

Sostiene que la verdadera maestría surge de enfrentar proyectos que son desafiantes pero no imposibles.

Timeline

Introducción y el dilema del desarrollador intermedio

El orador describe la frustración de los desarrolladores que se sienten atrapados entre aplicaciones CRUD básicas y proyectos imposibles como sistemas operativos. Explica que existe un punto medio donde residen proyectos significativos que permiten subir de nivel profesional. Se presenta la estructura del video dividida en tres niveles de dificultad progresiva: cimientos, sistemas de datos y sistemas avanzados. El objetivo principal es transformar la mentalidad del programador hacia la de un ingeniero de software. Esta sección establece el contexto emocional y técnico para el resto de la presentación.

Nivel 1: Construyendo los cimientos técnicos

En este segmento se presentan los dos primeros proyectos: un servidor HTTP y una shell personalizada. Al construir un servidor HTTP desde cero, el desarrollador aprende sobre sockets TCP, el formato de las respuestas y el manejo de múltiples solicitudes simultáneas. Por otro lado, crear una shell propia permite entender comandos como "cd" o "ls" y conceptos de bajo nivel del sistema operativo como los procesos. Estos proyectos obligan a interactuar con las computadoras a un nivel más profundo que el de los frameworks tradicionales. Es el primer paso para dejar de usar herramientas como cajas negras y empezar a entender su funcionamiento interno.

Nivel 2: Almacenamiento y sistemas de datos

El segundo nivel se centra en herramientas de manejo de datos que los desarrolladores utilizan diariamente: Redis, Git y SQLite. El autor explica que recrear Redis enseña sobre estructuras de datos en memoria, protocolos de comunicación y bucles de eventos eficientes. Al construir una versión simplificada de Git, se comprenden conceptos como el hashing, el almacenamiento direccionable por contenido y los árboles de commits. Finalmente, desarrollar un motor SQLite introduce al programador en el mundo de los árboles B y la ejecución de consultas SQL sin servidor. Entender estas herramientas por dentro diferencia a un desarrollador promedio de uno excepcional que domina la persistencia de datos.

Nivel 3: Sistemas avanzados e internos

Este bloque aborda los proyectos más complejos y gratificantes del video: un lenguaje de programación, un cliente BitTorrent y un asistente de IA. Crear un lenguaje implica implementar un Lexer, un Parser y un árbol de sintaxis abstracta para entender cómo la computadora interpreta instrucciones. El cliente BitTorrent introduce al desarrollador en los sistemas distribuidos, la gestión de conexiones peer-to-peer y la integridad de archivos fragmentados. El último proyecto consiste en integrar modelos de lenguaje (LLM) con arquitectura de software tradicional para crear asistentes de programación similares a Claude Code. Estos retos están diseñados para destacar en el mercado laboral y dominar tecnologías de vanguardia.

Recursos, consejos finales y conclusión

El orador reconoce con total honestidad que estos proyectos son difíciles y que es normal sentirse estancado o dudar de la implementación. Para mitigar esta frustración, recomienda CodeCrafters, una plataforma que ofrece una ruta estructurada con pruebas automatizadas para guiar al usuario. Destaca que tener una dirección clara puede ser la diferencia entre abandonar el proyecto o completarlo exitosamente. El video concluye con un mensaje motivador sobre la importancia de "saltar al agua fría" para aprender y ganar claridad profesional. Se invita a la audiencia a elegir un proyecto, suscribirse y compartir sus avances en los comentarios.

Community Posts

View all posts