7 lecciones obtenidas de Anders Hejlsberg, diseñador de C# y TypeScript
Patrones que se repiten en los 40 años de carrera de Hejlsberg:
retroalimentación rápida > elegancia, compatibilidad y practicidad > pureza, trade-offs transparentes > decisiones opacas
1. La retroalimentación rápida es más importante que casi cualquier otra cosa
- Desde la época de las restricciones iniciales de 64 KB, la ejecución rápida y la detección de errores fueron clave
- Tanto Turbo Pascal como TypeScript ponen énfasis en la comprobación incremental y la retroalimentación inmediata
- Retroalimentación lenta → más trabajo de rodeo, menor confianza de los desarrolladores
→ fomenta la experimentación y el refactoring, y maximiza la productividad
2. Escalar software = dejar de lado las preferencias personales
- Fue algo que comprendió al pasar de proyectos personales a proyectos de equipo y de gran escala
- Factores del éxito de C#: coexistencia de afinidad con VB + potencia de C++ + practicidad de Windows
- Antes que la pureza teórica, priorizar código que más personas puedan entender y mantener
→ aceptar la diversidad es la clave del éxito a largo plazo
3. Por qué TypeScript no reemplazó a JavaScript, sino que lo extendió
- No era posible desechar el ecosistema, las herramientas y los hábitos existentes de JS
- En lugar de un reemplazo total, se eligió una mejora gradual (agregar tipos)
- Esto hizo posible el análisis estático y el refactoring necesarios para aplicaciones a gran escala
→ un compromiso realista puede traer un avance mayor que la innovación por sí sola
4. La clave del éxito del open source es la visibilidad
- Tras mover TypeScript a GitHub en 2014, los PR, issues y debates quedaron abiertos
- El proceso de decisión, los trade-offs y las prioridades se expusieron de forma transparente
→ aumenta la confianza de los usuarios y las contribuciones basadas en comprensión
→ no solo importa el código, sino también compartir el “por qué” detrás de las decisiones
5. Por qué se abandonó la idea de mantener el compilador en JavaScript
- El compilador self-hosted basado en JS llegó a límites de rendimiento (hilo único, lentitud en proyectos grandes)
- Se portó a Go: conservando la semántica y los quirks, se obtuvo rendimiento nativo y paralelización
- En vez de un lenguaje nuevo como Rust, se priorizaron al máximo la consistencia del comportamiento y la compatibilidad
→ se eligió una evolución estable antes que un cambio disruptivo
6. En un entorno de desarrollo impulsado por IA, lo más importante es el grounding
- En la IA, más que la generación, importan la exactitud y las restricciones
- Los type checkers y las herramientas de refactoring actúan como guardrails para validar código generado por IA
- Un sistema de tipos fuerte = prevenir errores plausibles en la salida de la IA
→ el código estructurado es la clave para una revisión eficiente en la era de la IA
7. Por qué la colaboración abierta es importante
- Historial público de discusiones y decisiones = preservación de la memoria institucional
- Contexto searchable → facilita el onboarding de nuevos integrantes y permite la evolución a largo plazo
- A diferencia de los sistemas cerrados, permite acumular y transmitir conocimiento compartido
→ fortalece la sostenibilidad y la capacidad de adaptación del sistema
1 comentarios
Como era de esperarse del maestro Hejlsberg..💜