Una de las escisiones más longevas en la programación es la de tipado estático frente a dinámico. He escuchado un millón de argumentos de ambos lados a lo largo de toda mi carrera, pero muy pocos han convencido a alguien de algo. Como rara vez ocurre con racionalizaciones que se hacen pasar por razón en cuestiones de fe. El jinete siempre justificará el camino del elefante. Eso no quiere decir que no haya personas que hayan cambiado de bando. De hecho, estas personas suelen gritar las racionalizaciones más fuertes de todas. A menudo con el encanto de un omnívoro de toda la vida que de repente se vuelve vegano o de un banquero tradicional que ha tenido suerte con las criptomonedas. Cuanto más corta la fe, más brillante es la llama. Personalmente, sin vergüenza soy un tipo dinámico que tipifica. Por eso quiero tanto a Ruby. Aprovecha al máximo la tipificación dinámica para permitir la sintaxis poética que da lugar a un código tan bello. Para mí, Ruby con una escritura explícita y estática sería como una ensalada con una bola de helado. Simplemente no van juntos. También confieso haber adoptado la posición evangélica de la tipificación dinámica en el pasado. Hasta el punto de sufrir una afección de Proposición Única Verdadera. Ver la falta de entusiasmo por la mecanografía dinámica como un reflejo de la falta de educación, experiencia o quizás incluso competencia. Vaya locura. Como intentar convencer a un introvertido de que le gustarían mucho las fiestas si se relajara un poco. Que en realidad es muy divertido estar en salas llenas de gente, durante horas, gritando para comunicarse, ¡porque qué tal ese rollo! Hoy en día, he llegado a apreciar la magnificencia de la multiplicidad. Programar sería una tarea terrible si todos estuviéramos confinados al mismo paradigma. La naturaleza humana es demasiado variada para aceptar tal limitación a su creatividad. ¿Te imaginas si todo el arte visual tuviera que representarse en el estilo del cubismo? ¿O realismo? ¿O todas las novelas escritas en la versión corta y directa de Hemingway? ¡Qué aburrimiento sería todo esto rápidamente! Arruinaría la magia de la programación. Esta fusión única de arte e ingeniería. Pero me costó un tiempo llegar a estas conclusiones. Soy un solucionista en recuperación. Así que cuando veo a la gente cruzar el corazón por la incredulidad de que alguien, en cualquier lugar, pueda preferir JavaScript en lugar de TypeScript, sonrío y recuerdo los días en que reconocía su entusiasmo en el espejo. Eso no quiere decir que todos los enfoques de programación se reduzcan a mentalidades iguales pero diferentes. Este relativismo tiene límites. Pero la tipificación dinámica frente a la estática es cierta dentro de sus límites. También lo es la programación funcional frente a la orientada a objetos. Los postes de ambos ejes han demostrado ofrecer software excelente a lo largo de las décadas (¡y cosas horribles también!). Ahora las personas tienen la suerte de expresarse igual de bien desde ambos lados. Sin embargo, semejante naturaleza ambidiestra parece rara, como lo demuestra la absoluta incredulidad que expresa con frecuencia cualquiera de los dos bandos al pensar que el otro podría sostener una postura razonable. No soy ambidiestro. No me gusta escribir estáticamente, y los objetos animan mi mente en el ojo de la mente. Pero he llegado a apreciar el hecho de que otros iluminan su creatividad con tanta intensidad como yo la mía, usando restricciones de programación funcional y tipos explícitamente detallados. Mientras no tenga que ensuciar mi Ruby con consejos de tipo ni escribir todo el código front-end en TypeScript, puedo convivir felizmente con quienes adoran Go o no soportan JavaScript. ¡Viva la diferencia!