Programación y lenguaje ubicuo (DDD) en un dominio que no está en inglés

59

Sé que ya hay algunas preguntas que están estrechamente relacionadas con este tema, pero ninguna de ellas toma Ubiquitous Language como el comienzo Punto así que creo que justifica esta pregunta.

Para aquellos que no lo saben: el lenguaje ubicuo es el concepto de definir un lenguaje (hablado y escrito) que se usa por igual entre los desarrolladores y los expertos en dominios para evitar incoherencias y falta de comunicación debido a problemas de traducción y malentendidos. Verá la misma terminología en el código, las conversaciones entre cualquier miembro del equipo, las especificaciones funcionales y otras cosas.

Por lo tanto, me preguntaba cómo lidiar con el lenguaje ubicuo en dominios que no están en inglés.

Personalmente, estoy totalmente a favor de escribir código de programación en inglés completamente, incluidos los comentarios, pero por supuesto, excluyendo constantes y recursos.

Sin embargo, en un dominio que no está en inglés, me veo obligado a tomar una decisión ya sea para:

  1. Escriba un código que refleje el lenguaje ubicuo en el idioma natural del dominio.
  2. Traduzca el idioma ubicuo al inglés y deje de comunicarse en el idioma natural del dominio.
  3. Defina una tabla que defina cómo se traduce el idioma ubicuo al inglés.

Estos son algunos de mis pensamientos basados en estas opciones:

1) Tengo una fuerte aversión contra el código de lenguaje mixto, es decir, la codificación utiliza nombres de tipo / miembro / variable, etc. que no están en inglés. La mayoría de los lenguajes de programación "respira" en gran parte del inglés y la mayor parte de la literatura técnica, los nombres de los patrones de diseño, etc. también están en inglés. Por lo tanto, en la mayoría de los casos, simplemente no hay forma de escribir código completamente en un idioma que no sea el inglés, por lo que de todos modos terminas con idiomas mixtos.

2) Esto obligará a los expertos en dominios a comenzar a pensar y hablar en el equivalente en inglés de UL, algo que probablemente no les resulte natural y, por lo tanto, obstaculice la comunicación de manera significativa.

3) En este caso, los desarrolladores se comunican con los expertos en dominios en su idioma nativo, mientras que los desarrolladores se comunican entre sí en inglés y, lo que es más importante, escriben el código utilizando la traducción al inglés del UL.

Estoy seguro de que no quiero optar por la primera opción y creo que la opción 3 es mucho mejor que la opción 2. ¿Qué opinas? ¿Me faltan otras opciones?

ACTUALIZAR

Hoy, casi un año después, después de haber tratado este problema a diario, debo decir que la opción 3 me ha funcionado bastante bien.

No fue tan tedioso como al principio temía, y traducir en tiempo real al hablar con el cliente tampoco fue un problema.

También encontré que las siguientes ventajas son ciertas, según mi experiencia.

  • Traducir el UL hace que prestes más atención a la definición del UL e incluso al propio dominio, especialmente cuando no sabes cómo traducir un término y tienes que empezar a buscar en diccionarios, etc. Esto incluso me ha hecho reconsiderar Decisiones de modelado de dominios unas cuantas veces.
  • Le ayuda a profundizar su conocimiento del idioma inglés.
  • Obviamente, tu código es mucho más agradable de ver en lugar de ser una obscenidad alucinante.
pregunta Sandor Drieënhuizen 29.01.2011 - 11:45

4 respuestas

10

He enfrentado este problema a menudo y, en mi opinión, la respuesta es: "no hay una única respuesta válida para todos los escenarios".

Pero tenga en cuenta que el lenguaje ubicuo no es un objetivo en sí mismo. Es una herramienta para reforzar la comunicación entre el equipo y los expertos en dominios y para hacer cumplir la coherencia conceptual del modelo implementado en código, pruebas y conversación.

Si puede hablar UL sin ambigüedades, está en el camino correcto. Si usted y sus compañeros están continuamente traduciendo del código a la conversación o del concepto al concepto, es probable que esté fuera de lugar.

En la práctica, no todos los dominios son iguales, ni los expertos en dominios. De todos modos, algunos dominios tienen una gran cantidad de terminología en inglés (dominios de tecnología, por ejemplo) y parece razonable optar por una opción de inglés completo. Sin embargo, algunas culturas pueden influir en esta elección (el francés viene a la mente) y la difusión de la terminología en inglés varía de un país a otro. En algunos otros dominios (legal, por nombrar uno) no hay manera de traducir algunos términos. O la traducción haría que fuera absolutamente más difícil para el Experto en Dominios seguir la conversación.

En general, estamos más interesados en lo que el experto en dominios tiene que decir. Así que queremos facilitarles las cosas. De lo contrario, podrían tomar una clase de UML y leer nuestros diagramas (que era una broma). Entonces, la única recomendación real aquí es: "preste atención al comportamiento del Experto en Dominios", si están involucrados en la conversación y la conversación continúa sin problemas, es probable que esté en el buen camino, mantenga ese idioma . Puede causar un poco de trabajo extra en el equipo, pero eso está bien. Como desarrolladores estamos algo entrenados para aprender palabras con un significado específico en un contexto.

Extrañamente, esta pregunta siempre está acompañada por la suposición de que todo el código debe hablar un idioma. Eso también podría ser desafiado. No soy un inglés nativo, y el conocimiento de un idioma extranjero no es plano: mi cerebro se acelera al hablar de nombre , apellido , coche y similares, omite algunos detalles cuando se habla de código postal , se ralentiza cuando se habla de préstamo y definitivamente pide una explicación tranquilizadora cuando se habla de hipoteca .

Nuevamente, elija la mejor combinación que hará que fluya la conversación clave y proporcione la mayor cantidad de información y comentarios del experto en dominios.

    
respondido por el ZioBrando 17.11.2011 - 13:12
4

Por lo general, considero que ciertas palabras técnicas son neutras en cuanto al idioma, incluso si hay una traducción en el otro idioma.

Por ejemplo, cuando se habla de codificación en alemán, sigo utilizando el vocabulario técnico en inglés como si fueran palabras en alemán, incluso si hay un equivalente en alemán.

En tu caso yo haría lo contrario. Importe ciertas palabras técnicas de su idioma nativo al inglés al igual que las palabras extranjeras se han importado durante siglos. Haz que se comporten gramaticalmente como palabras en inglés. Al principio se siente extraño, pero te acostumbrarás.

    
respondido por el CodesInChaos 30.01.2011 - 00:24
3

Estoy de acuerdo con el comentario de La mayoría de los lenguajes de programación 'breathe' English , que siempre se convierte en un problema con los esfuerzos de desarrollo en varios idiomas

Normalmente tendría el UL en el lenguaje de su equipo de programación

Lo que hemos hecho en el pasado es inventar nuevas palabras que expresen mejor los temas del dominio. Con un proyecto en francés / inglés, las palabras inventadas se basaban principalmente en inglés pero con un sabor francés (no es tan difícil, ya que muchas palabras en inglés son francesas de todas formas), pero esto podría aplicarse a cualquier combinación de idiomas

por ejemplo

  

"cantidad bois"

En inglés es "Cantidad de madera" o "cantidad de madera", en francés es "quantité de bois", por lo que es lo suficientemente cerca para ambos altavoces. Esto debería reducir la cantidad de palabras nuevas que cada hablante tiene que aprender

¿Qué tan grande es tu dominio UL? Esto se convierte en el problema. Si tiene menos de 100 frases clave, entonces puede usar un lenguaje de estilo compuesto híbrido, y si fuera más grande, usaría el lenguaje predominante de los desarrolladores, ya que generalmente tienen que lidiar con él más intensamente

Publique un diccionario wiki / diccionario de sinónimos para que todos puedan consultar también según sea necesario para que no haya excusas para la comprensión

    
respondido por el TFD 29.01.2011 - 22:48
2

Recientemente trabajé en un proyecto de DDD en Suiza, donde el dominio era impuestos (específicamente el IVA y otro tipo de impuesto ... que no es fácilmente traducible al inglés ...).

Escogieron la primera opción: UL en alemán, que también se usa en el código en alemán.

Antes de trabajar en este proyecto, tenía exactamente la misma aversión que tú por el código de idioma mixto. Me gusta (aún) tener todo en inglés, aunque no soy un hablante nativo de inglés. Tampoco soy un hablante nativo de alemán. Así que cuando comencé a explorar el código base, me horroricé.

Después de un año trabajando en ese proyecto, debo admitir que creo que fue la decisión correcta en este caso (también podríamos haber usado francés o italiano, las otras lenguas oficiales suizas, pero la mayoría de los actores en el proyecto eran hablantes nativos de alemán).

Muchos de los términos específicos del dominio realmente no se podían traducir al inglés de manera significativa. De todos modos, tenía que aprender los términos en alemán para comunicarme con el resto del equipo. Hubiera sido más complicado tener que aprender también las traducciones al inglés, que de todos modos se habría inventado de la nada.

Así que supongo que realmente depende del dominio. Algunos dominios serán realmente difíciles de traducir al inglés y no tendrá mucho sentido.

Probablemente también depende del idioma nativo. El alemán es un idioma en el que puede componer palabras aproximadamente de la misma manera y especialmente en el mismo orden que en inglés. Por ejemplo, una declaración de impuestos sería una Steuerdeklaration . No sorprendentemente diferente.

No sé cómo haría un nombre de clase equivalente en francés, por ejemplo, si fuera el término natural que se denomina "déclaration d'impôts", con el orden opuesto y una preposición extra en el medio ... Y Eso es solo un ejemplo simple. Me interesaría mucho si alguien tiene experiencia con ese tipo de nombres en idiomas latinos (francés, español, italiano, portugués ...).

Otro desafío fueron las formas plurales, que en alemán a veces casi no se distinguen del singular (mientras que en inglés casi siempre tiene un s al final).

Los caracteres acentuados estaban bien, ya que en alemán todos tienen un equivalente no acentuado ( ü - > ue y así sucesivamente). Es otro punto donde los franceses serían más problemáticos ...

    
respondido por el Pierre Henry 25.05.2018 - 22:32

Lea otras preguntas en las etiquetas