Mis razones para desarrollar software en español. Y cuándo no.
Mis razones para desarrollar software en español. Y cuándo no.
No han sido pocas las veces en las que me he visto inmerso en este debate infinito acerca del lenguaje en el que se deben desarrollar aplicaciones. La mayoría opina que el inglés debería ser el idioma universal para programar. Yo no lo veo tan claro y de hecho la mayoría de las aplicaciones que desarrollo van escritas en español, o mejor dicho, en una especie de ‘spanglish’ que queda al final cuando el código de la lógica de negocio se mezcla con la propia sintaxis del lenguaje que se esté utilizando. Antes de ‘fusilarme’, espera, tengo mis razones para ello y te las cuento a continuación.
En mi humildísima y a veces aventurada opinión, en general, el desarrollo de software debe traducir una idea, un modelo de negocio, la resolución de un problema…etc, al lenguaje de programación informático que estemos utilizando. Creo que el lenguaje que se utilice en el dominio del problema a resolver se tiene que ver fielmente reflejado en el código producido. Por ejemplo, bajo el paradigma de la programación orientada a objetos, muchos de los objetos diseñados tienen su correspondencia con objetos de la vida real. Es muy importante usar un ‘naming’ correcto para nombrar a dichos objetos de tal forma que un programador que no haya visto nunca el código sepa exactamente y sin ningún género de dudas cual es la relación entre dicho objeto programado y el objeto/idea del mundo real con el que se relaciona.
Nombrar a las clases, a sus atributos, a sus métodos...etc, de forma correcta requiere muchas veces de un conocimiento amplio del idioma, tener un ‘fondo de diccionario’ bastante solvente y conocer el léxico del problema y la solución para saber reflejar correctamente las ideas u objetos reales en los nombres de las clases, funciones, variables..etc, de nuestro código. Lógicamente, el léxico y el conocimiento del lenguaje más amplio de un programador será el propio idioma materno o algún otro lenguaje en el que se considere nativo.
¿Tendría sentido que un programador no utilice un ‘naming’ correcto en el desarrollo de una aplicación por no conocer el idioma en el que debe programar? En las diferentes lenguas existentes sabemos que una palabra puede tener una o varias acepciones o cambiar el significado dependiendo del contexto en el que se utilice, ¿podríamos asegurar sin conocer un idioma en profundidad que vayamos a usar la palabra que mejor defina a nuestra clase, método o variable?
La mayoría de los programadores que conozco programan para empresas más o menos grandes o pymes con residencia en España. Siempre que sale este tema pregunto la probabilidad que existe de que el código que generan pueda leerlo personas no nativas en español. La inmensa mayoría me responde que realmente dicha probabilidad es muy baja lo que significa que el código que escriben lo van a leer programadores nativos en español ¿tiene sentido que programadores no nativos en inglés programen en un lenguaje en el que se van a pasar más tiempo buscando en Google Translate una traducción que programando?
Un ejemplo. Entre otras, estoy desarrollando una aplicación para una bodega de vinos. Una bodega con varias décadas en funcionamiento, con unos procesos muy definidos y un dominio del lenguaje empresarial y del negocio muy específico y claro. En el día a día de esta empresa, dichos trabajadores utilizan una terminología en español para referirse a artefactos o a elementos de su trabajo y muchas veces utilizan palabras de forma tan singular que incluso la palabra utilizada para nombrar algo no es la que realmente se utiliza en el diccionario para definirlo. Es decir, han creado su propio idioma o vocabulario, totalmente válido dentro del ámbito laboral.
Ahora, la pregunta es, sin ser ( o tener un nivel ) nativo en el lenguaje natural en el que se expresan los trabajadores anteriores, ¿cómo va a ser capaz un programador de llevar dicho lenguaje del negocio al desarrollo de software que esté realizando?, ¿cómo va a ser capaz de traducir términos que puede que ni siquiera existan en inglés o que la misma traducción del español a inglés de esas palabras hagan que pierda todo el significado? ¿qué sentido tiene programar en un idioma que no dominas una solución en la cual expresar correctamente todo aquello que programas es de vital importancia?

En la anterior imagen, hay un concepto ‘Controles de Aforos’. Esta terminología es muy específica del negocio y tiene un significado con sentido dentro de la bodega, pero…¿valdría con traducir en dicho término? Google Translate nos da un ‘Capacity control’, ¿realmente es un control de capacidad?. Sin entrar en materia, ya os digo que no tiene que ver con lo que realmente expresa un ‘Control de un Aforo’. Si yo dejo esta aplicación y la sigue otro programador, una vez conocido el negocio, ¿entendería mejor ‘Control de Aforo’ o ‘ Capacity control’?, yo, creo que en español mucho mejor, más certero, específico y que expresa lo que el negocio necesita.
¡Ah! y si, reconozco que no queda ‘bonito’ esa mezcla de español e inglés pero dentro de 5 meses sabré perfectamente que hace esa función y con que proceso de negocio se relaciona. Incluso si lo lees tú, probablemente sepas al menos que hace sin conocer a fondo el negocio.
En mis más de diez años programando, en general, programar en inglés he visto que ha dado más problemas que aportar soluciones. He visto que ha codificado más las aplicaciones que describirlas correctamente. He visto utilizar palabras para definir una clase o variable que otra persona no ha entendido igual.
Cuando si considero programar en inglés.
Yo diría que tendría varios motivos para programar en inglés.
- Si fuera nativo o dominara el inglés con un nivel muy alto o al menos dominara el dominio del problema que voy a solucionar.
- El equipo de desarrollo en el que participe ha llegado a un acuerdo para programar en inglés, aún no siendo la lengua materna o la más conocida entre los miembros del equipo.
- El código que desarrolle va a ser leído por otros programadores que no conocen el español.
- El código que desarrolle va a ser público y expuesto en un repositorio como Github o similar.
Consejos
- Si tienes que programar en inglés y no sabe inglés…estudia inglés.
- Si programas en español y no sabes inglés…estudia inglés.
- Si sabes inglés…no lo olvides.
Deseos
Ojalá yo supiera el inglés suficiente como para poder programar todo en inglés.