Sé que ya hay algunas preguntas que están estrechamente relacionadas con este tema, pero ninguna de ellas toma el lenguaje ubicuo como punto de partida, así que creo que eso justifica esta pregunta.
Para aquellos que no saben: el lenguaje ubicuo es el concepto de definir un lenguaje (tanto hablado como escrito) que se use por igual entre los desarrolladores y expertos en dominios para evitar inconsistencias y problemas de comunicación debido a problemas de traducción y malentendidos. Verá la misma terminología en código, conversaciones entre cualquier miembro del equipo, especificaciones funcionales y demás.
Entonces, lo que me preguntaba es cómo tratar el lenguaje ubicuo en dominios que no están en inglés.
Personalmente, estoy totalmente a favor de escribir completamente el código de programación en inglés, incluidos los comentarios, pero por supuesto excluyendo las constantes y los recursos.
Sin embargo, en un dominio que no es inglés, me veo obligado a tomar una decisión:
- Escriba código que refleje el Idioma ubicuo en el lenguaje natural del dominio.
- Traduce el idioma ubicuo al inglés y deja de comunicarte 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, que es la codificación usando nombres de tipo / miembro / variable, etc., que no están en inglés. La mayoría de los lenguajes de programación 'respiran' el inglés en gran medida y la mayoría 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 inglés, por lo que terminas con idiomas mixtos de todos modos.
2) Esto obligará a los expertos en el dominio a comenzar a pensar y hablar en el equivalente en inglés del UL, algo que probablemente no les resultará natural y, por lo tanto, dificulta la comunicación de manera significativa.
3) En este caso, los desarrolladores se comunican con los expertos del dominio en su idioma nativo, mientras que los desarrolladores se comunican entre sí en inglés y, lo que es más importante, escriben código utilizando la traducción al inglés de la UL.
Estoy seguro de que no quiero ir a 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, aproximadamente 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 temía inicialmente y traducirlo en tiempo real mientras hablaba con el cliente tampoco fue un problema.
También descubrí que las siguientes ventajas son ciertas, según mi experiencia.
- La traducción de la UL hace que preste más atención a la definición de la UL e incluso del dominio mismo, especialmente cuando no sabe cómo traducir un término y tiene que comenzar a buscar en los diccionarios, etc. Esto incluso me ha llevado a reconsiderar las decisiones de modelado de dominio unas pocas veces.
- Le ayuda a profundizar su conocimiento del idioma inglés.
- Obviamente, su código es mucho más agradable de ver en lugar de ser una obscenidad alucinante.