Existió un brillante científico especializado en física llamado Richard Feynman. No fue un físico convencional, ni quiso serlo.
Tenía una mesa reservada en un club de strip-tease cercano a su querido Caltech y sus clases se llenaban de estudiantes y colegas para escuchar cómo su mente enfocaba de manera diferente la física de toda la vida.
Tanto es así que incluso existe un modelo mental que lleva su nombre: El Método Feyman.
Es considerado el creador de la teoría de la Termodinámica Cuántica. Fue profesor de Física y ganó el Premio Nobel en 1965.
Feynman, consciente de las limitaciones de la física para ser comprendida por la mayoría, era un gran defensor de apoyarse en los primeros principios para explicarla.
¿Y qué son los primeros principios?,
Es la clave para entender conocimiento complejo y posteriormente explicarlo con simplicidad.
Razonar desde los primeros principios, es usar tu capacidad de pensar para filtrar las suposiciones demasiado alejadas de la realidad y poder construir algo nuevo desde unas bases sólidas, alejado de tecnicismos complicados de entender.
Eliminar el ruido que te aleja de comprender algo profundamente. Desmontar, quedarte con lo esencial, y montar desde ahí.
Cuando la mayoría de sus colegas explicaba lo superficial, asumiendo que se conocen las ideas que están por debajo, Feynman partía de lo más profundo.
Así conseguía que sus alumnos comprendieran mecánica cuántica, el funcionamiento de los átomos o la gravitación de forma sencilla.
No es lo habitual.
El problema de la forma de enseñar, que no parte de abajo, y que sigue siendo la dominante en el sistema educativo y en el desarrollo de software, es que es conocimiento muerto, inútil, que no se agarra a la mente y que olvidas a los pocos minutos. Resulta más complicado de aprender.
Feynman lo explicaba así:
Puedes estudiar el nombre de un pájaro en todos los idiomas del mundo, que cuando hayas acabado seguirás sin saber nada del pájaro.
En el desarrollo de software, un ejemplo sería algo así:
Puedes especializarte en Vue, React y Angular, que cuando hayas acabado seguirás sin comprender la programación declarativa.
Lo que marca la diferencia no es saberte la librería React de arriba a abajo porque eso está en constante cambio y no tiene sentido. Además, eso solo sirve para presumir en Twitter.
Lo que marca realmente la diferencia en este caso, es entender los primeros principios de la programación declarativa en sus diferentes formas y los porqués.
Entonces no tendrás que aprender APIs diferentes librerías como Vue, React y Angular. Verás mucho más allá, verás los mismos principios que hay detrás y la cómo lo ha implementado cada librería.
Asociarás y unirás los puntos. Es como Neo en Matrix.
Tú empezarás a ver lo que de verdad hay detrás, no la API de cada librería.
Esto te permite saltar de una librería declarativa a otra sin apenas esfuerzo. Y sobre todo poder explicárselo a otras personas de forma sencilla y eso te da un valor increíble.
Esto es solo un ejemplo con la programación declarativa, pero ocurre lo mismo con la programación orientada a objetos, la programación funcional, el testing, el código legado y el diseño de software.
Pero lo que hacía Feynman no es fácil de conseguir.
Solo cuando profundizas y llegas a dominar un tema, sabes comunicarlo de forma sencilla. Desde los primeros principios, consigues que la gente comprenda y recuerde ideas complejas.
Esto es fundamental:
Solo puedes considerar que enseñas cuando al otro lado alguien aprende.
Si no aprende no hay enseñanza.
Hoy en día hay mucho creador de contenido enseñando, pero muy pocas personas aprendiendo. El problema es que hay un exceso de información en internet que enseña desde el ruido, no desde la base.
Ponerse delante de una clase o pantalla es necesario, pero ni mucho menos suficiente.
Entonces, ¿qué es el método Feynman? A grandes rasgos, esta técnica consiste en la explicación de teorías complejas, a través de un lenguaje sencillo y comprensible por todos.
Lo importante es usar un lenguaje claro, sin tecnicismos. Deberías poder explicárselo a un niño de 12 años.
Para eso, es necesario conocer la base, los primeros principios y no quedarse en el ruido.
Si quieres aprender diseño de software de verdad y cómo se aplica en diferentes contextos, olvídate de modas, olvídate de la documentación de frameworks y librerías. Profundiza en los primeros principios, aléjate del ruido.
Es lo que yo hice desde hace muchos años y sigo haciendo. Por eso no me cuesta saltar de una tecnología a otra.
Y esto es lo que enseño en mi curso de Clean Architecture. Primeros principios sobre diseño de software por encima de implementaciones concretas.
Te enseño a interpretar el Matrix del diseño de software.
Para mí, lo más importante es que se entiendan los porqués detrás de todo lo que explico. Que no te quedes en la superficie y veas lo que hay detrás.
Esto te da un conocimiento profundo que te permitirá en el futuro tomar mejores decisiones y podrás decidir, con argumentos, diferentes implementaciones a usar.
Serás capaz de implementar Clean Architecture en React, Vue, Angular, Android, etc., donde necesites y de diferentes formas.
Te puedes apuntar a la lista de espera para la próxima edición en abierto:
Curso Clean Architecture en abierto - Lista de Espera
¿Te ha gustado esta newsletter?
El mejor regalo de agradecimiento que me puedes hacer es compartirla 👇
Te animo a que me des tu opinión, o me transmitas dudas en los comentarios de esta newsletter desde la web o respondiendo a este correo.
A veces tardo, pero siempre acabo contestando.