miércoles, 2 de noviembre de 2011

[7 de 97] Aprende un nuevo lenguaje.


Post publicado originalmente entre Mayo del 2009 y Enero del 2011 en mi anterior blog.
Pertenece a una serie sobre arquitectura de software, replicaré los comentarios ya que, a mi parecer, son lo más importante de la serie.

Puedes encontrar el listado de esta primera entrega en este enlace.

El axioma de hoy (tomado del libro 97 things Every Software Architech Should Know) dice:

"Learn a new language"
Burkhardt Hufnage.

Burkhardt Hufnage es arquitecto de software lider en LexisNexis. Recientemente participó en el JavaOne del 2008 con el tema "building better user experiences".


Tower of Babel from the Bedford Book of Hours, 1423

---

To be successful as an architect, you must be able to make yourself understood by people who don’t speak your native tongue. No. I’m not suggesting you learn Esperanto or even Klingon, but you should at least speak basic Business, and Testing. And, if you aren’t fluent in Programmer, you should make that a top priority.

...
Neither group understands how the other thinks, or what half of the words they use means. This leads to mistrust and miscommunication. It’s a basic psychological principle that people are more comfortable with those who are similar to them as opposed to those who are different from them.
Imagine how the above scenario might change if the architect were able to explain the issues to the business folk in terms they understand and relay the business issues to the programmers in terms they understand. Instead of surprise and mistrust, the result would be agreement and approval.

I’m not saying that learning multiple languages will cure all your problems, but it will help prevent the miscommunications and misunderstandings that lead to problems.

---

Quisiera abordar la importancia de este axioma desde dos perspectivas distintas, por un lado la que comenta Burkhardt Hufnage, y por otro, algo que creo muchos hemos escuchado con respecto a la importancia de aprender un nuevo lenguaje de programación.

La ventaja de aprender un nuevo lenguaje:

Como "facilitador" para la comunicación entre distintos "capas", reduciendo con ello el efecto "telefono descompuesto".

Haciendo un poco de memoria, y a manera de anécdota/ejemplo, recuerdo que hace varios años durante un proyecto para un canal de televisión, el usuario, ademas de darnos reflexiones existenciales interesantes, de repente nos hablaba en su "lenguaje" y esperaba que nosotros entendiéramos perfectamente lo que decía:

    "Pues bueno, la parrilla de programación esta quedando bien; no se les olvide que requiero un reporte con los targets más solicitados; remarquen  ABC+CD+. 
    Para las agencias, quiero algo que les recuerde que: compras por CPM no aplican en PRIME TIME .  Ya la próxima semana veremos como meter la conciliación en la siguiente versión."

Los primeros meses del proyecto fueron días en los que teníamos que combinar la codificación de la aplicación con clases express de mercadotecnia! XD

Recuerdo también que en algún libro leí que "para comprender una unidad de conocimiento, primero debemos conocer su terminología básica."

Con seguridad a todos nos ha tocado un escenario similar, un escenario en dónde nos percatamos que, mientras más dominemos el "lenguaje" del cliente evitamos errores de interpretación y nos acercamos más a sus requerimientos. En ocasiones el vocabulario es tan complejo que tenemos que reconocer que requerimos de un interprete para lograr ese entendimiento y es cuando, nos gustaría poder hablar directamente con ellos. Ahora mismo me ha tocado tener que quedarme callado en un par de reuniones para iniciar un proyecto cuyo vocabulario es un poco complejo.

Como "agente incentivador" para crear escenarios favorables o elementos de respuesta para resolver algún problema.

Para comentar esta acepción del axioma que ahora consumimos, debo evocar un hilo abierto por Vekman en debug_mode=on:
¡Aprende un nuevo lenguaje! ¡Ahora!.

En ese hilo, Vekman nos comparte la Hipótesis de Sapir-Whorf (grosso modo: el lenguaje determina la forma en que pensamos.) y le da más valor teórico a esto que hemos escuchado ya varias veces: debemos aprender un nuevo lenguaje(de programación) cada cierto tiempo para incrementar el número de paradigmas en nuestras mentes y con ello poder resolver mejor los problemas.
(Si quieres algunas ideas de que lenguajes podrías aprender te puede interesar este otro hilo.)

Algo de lo que me he dado cuenta en todos estos años es que, realmente el axioma va más allá de sólo conocer el lenguaje del cliente o incrementar nuestra caja de herramientas laboral, en ocasiones conocer cualquier otro lenguaje, puede llegar a ser de mucha utilidad, no sé, uno nunca sabe y quizá algún día nos toque en un proyecto lidiar con alguien que entiende perfectamente  élfico o incluso (mi sueño se haga realidad) y conozcamos a alguien que hable  sánscrito.

Bueno, la reflexión final es que, nunca esta demás aprender un  nuevo lenguaje (en el sentido amplio de la palabra); así seguramente veremos utilidad a artilugios tan raros como estos:


CALCULATOR


O al menos entenderemos más chistes:

sandwich


¿Alguna anécdota o comentario que quieras compartir?  ;)

Saludos!!!

RuGI
Isaac Ruiz Guerra.


Comentarios:

¡Excelente! Recordé mis días de Introducción a la Lingüística, donde decían que cada idioma es una cosmovisión, la manera como una sociedad organiza el mundo en su mente. Cuando aprendes un nuevo idioma (natural o artificial) entiendes una forma distinta de matar las pulgas.

Por ejemplo, las bromas tipo "buenas las tengas" y "mejores las pases" denotan conocimiento parcial del náhuatl: el verbo marca con sílabas, como si incluyera el artículo dentro del verbo, sobre la información siguiente. Cuando conocí a Python supe qué eran los "closures", más aptos en muchos casos.

En este, tu espacio, conocí pequeños trucos para hacer cosas distintas. Esto ayuda no sólo en el entorno laboral, sino en todos los ámbitos. Cada lenguaje tiene una especialidad, y sus técnicas y atajos nos nutren, pues fueron soluciones para problemas específicos y ante circunstancias muy distintas.

Por último, te recuerdo que ya conoces algo de sánscrito: la frase "lo que no mata me hace más fuerte" viene del sánscrito. Haber entendido el sánscrito fue primordial para el mayor logro de la lingüísitca: obtener el indoeuropeo, la raíz del tronco de mayor número de idiomas en la tierra. Te dejo tu nick en sánscrito, ???? y tu nombre de pila, ????.

Enviado por Miguel Zúñiga González (miguel~1.mx) en junio 28, 2009 a las 03:58 PM CDT #
---
Este consejo ya aparece en Pragmmatic Programmer, y aunque estoy muy de acuerdo con él (nos metimos en esto porque queríamos aprender cosas nuevas, ¿no?) yo recomendaría que primero la gente aprendiera SU lenguaje ;-). Y me explico por las dos mismas vertientes:

- No hay nada que de peor impresión que recibir un email, informe, presentación, lo que sea con faltas de ortografía. Por otro lado, alguna documentación escrita por técnicos SI que parece escrita en sánscrito ;-)
Y por favor, que nadie diga la estupidez de "yo es que soy de ciencias...."

- De un tiempo a esta parte, muchos programadores noveles se han lanzado a aprender lenguajes obsesivamente. No es malo, pero a veces no llegan a dominar uno completamente, conociendo todas sus posibilidades, y se lanzan a criticarlo y/o menospreciarlo en comparación a otros lenguajes en los que determinadas cosas se hacen de forma más fácil o clara. Y no, no estoy hablando de Ruby vs. Java (a la cabeza me venía más bien Strings en python vs Strings en Java, cuando apache-commons te puede hacer la vida más fácil).
Asi que el consejo es bueno, pero en la práctica habría que definir "estudiar". Mucha gente aún no sabe que significa ;-)
Salu2

PD:
Sánscrito no, pero si quieres puedes practicar el Euskera conmigo. Para algunos es tan incomprensible como el sánscrito ;-)

Enviado por ibon en junio 29, 2009 a las 01:39 AM CDT #
---
como siempre muy bueno cabe mencionar que aprender un lenguaje nuevo de alguna manera conocer una tierra nueva, un país nuevas posibilidades ,diferente perspectiva . Esto último es tarea casi cotidiana de un arquitecto de software y a decir verdad va mucho más allá . Saludos y buen inicio de semana

Enviado por israel gaytan en junio 29, 2009 a las 10:55 AM CDT #
---
@miguel1mx !! Sabía que este post al menos llamaría tu atención :), un verdadero placer leerte por estos lares.

@isragaytan esa analogía de "tierra nueva" me emociona :), un saludo!!!

@Ibon "alguna documentación escrita por técnicos SI que parece escrita en sánscrito" XD totalmente deacuerdo contigo!! jeje

Creo que mencionas algo que adolecemos muchos, a veces en ese afán de aprender cosas nuevas se nos olvida que tenemos un lenguaje "por omisión" y que, sobre todo ese, deberíamos dominar "al derecho y al reves"
....
Albo honetatik itsasoaren..Besarkada bat !!!!

Enviado por RuGI en junio 29, 2009 a las 12:16 PM CDT #
---
Muchos años después de terminar mis estudios de básica y enseñanza media, me dí cuenta de que aprender inglés conlleva aprender la cultura del país / nación donde se habla inglés, o sea, que no basta con aprender las palabras, sino que también hay que aprender la forma de pensar y de comprender el mundo de parte de la gente que habla dicho idioma.

Saludos y buen post ;D

Enviado por Germán G. en junio 29, 2009 a las 03:20 PM CDT #
---
Hola Germán!!

Sí, creo que precisamente ahí radica el "factor x" de esta ventaja..... tratar de ver el mundo de una manera distinta debe obligar a nuestra mente al "estado original".

SAludos!!!
RuGI

Enviado por RuGI en junio 29, 2009 a las 04:39 PM CDT #
---
Casi ;-):
"itsasoaren albo honetatik ..Besarkada bat !!!!"

Berdin!
:-D

Enviado por ibon en junio 30, 2009 a las 01:16 AM CDT #
---
¡No sólo llaman mi atención! ¡Siempre me dejan pensando tus reflexiones, sobre todo estas de las 97 cosas! Es sólo que como dice el dicho: "si no tienes algo bueno/inteligente que decir..." pero tenlo por seguro: soy tu fiel lector. Estoy de acuerdo con ibon, poder ordenar el mundo en la propia mente es el primer paso. Decía mi muy querida maestra Regina, de italiano, que al aprender un idioma se compara la manera como el nuestro comunica algo contra la cultura de aquél, pero si no se tiene claro cómo funciona el propio idioma... difícilmente...

Lo mismo aplica para la programación: es muy cómodo para muchos decir "no lo implementa" y quedarse muy horondos, cuando todo se reduce (citando tu opera de eufemismos) a un if y a una secuencia de acciones. Si no entendemos la magia y el poder de un if, estamos lejos de las abstracciones que sostienen los de la mentada campaña "anti if". Primero hay que caminar, luego trotar, y finalmente correr.

Por cierto, y sólo por aclarar el asunto: el sánscrito no es tan endiabladamente difícil como lo hacen ver: el devánagari (su alfabeto o silabario) es relativamente fácil de entender, y las grafías apantallan bastante (recompensa adicional); su evolución no tiene demasiadas rupturas, al ser un idioma para uso ceremonial; es cierto, tiene muchas declinaciones, pero es merced de su carácter. Donde sí te vas a complicar es en su fonología: 36 preciosos fonemas entre plosivos, aspirados y sonorantes harán delicias de tus primeras pronunciaciones (piensa en la dificultad para empezar a hablar francés). De allí en fuera, mucha suerte en tu encomienda sánscrita.

Enviado por Miguel Zúñiga González (miguel~1.mx) en julio 01, 2009 a las 03:13 AM CDT #
---
@Miguel: de acuerdo con tu comentario, en desacuerdo con tu ejemplo (en el caso concreto de un lenguaje orientado a objetos)
De hecho creo que si alguna vez tuviera que enseñar a alguien un lenguaje orientado a objetos, primero le mostraría la herencia, polimorfismo..., los conceptos OO, antes que enseñarle un if. Puede que ni se lo enseñase :-D para obligarle a pensar/diseñar OO, y que empezase a caminar correctamente.
Cuanto daño ha hecho el if a la OO... ;-)
Salu2

Enviado por Ibon Urrutia en julio 01, 2009 a las 09:14 AM CDT #
---
Por cierto, el otro día estaba viendo unas cosas de LINQ y me fijé en que tiene un detalle curioso. El detalle es la inversión de la construcción sintáctica de las queries: El verbo/acción va al final!

Y es curioso porque es un ejemplo bastante claro de cómo la estructura del lenguaje te hace organizar tus pensamientos de un cierto modo. Primero dices con qué vas a trabajar y luego dices lo que vas a hacer con ello, en lugar de al contrario. Y me pareció curioso porque me recuerda que es la misma estructura que sigue el Japonés (en parte también el latín). Y a veces ocurre con el Japonés, que una frase va diciendo muchas cosas (sujeto, objeto, complementos varios...) pero no llegas a la acción, al verbo hasta el final de la frase. Y hasta que no llegas a eso, no está definido qué es lo que ocurre.

En fin, divago un poco porque se me va la cabeza, pero... bueno, que me parece algo curioso e interesante :)

Enviado por Venkman en julio 06, 2009 a las 03:15 PM CDT #


------------------------------------------
Créditos:
La imagen de la torre de Babel es de:  IVSTINIANVS
http://www.flickr.com/photos/jjmg/20344463/
La imagen de la calculadora SQL fue tomada de:
http://www.orcldba.com/ace/2008/07/26/the-dba-calculator/
La tira es de:
http://www.xkcd.com/149/
------------------------------------------

No hay comentarios:

Publicar un comentario