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:
- Escriba un código que refleje el lenguaje ubicuo en el idioma natural del dominio.
- Traduzca el idioma ubicuo al inglés y deje de comunicarse en el idioma natural del dominio.
- 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.