Eu sei que já existem algumas perguntas que estão intimamente relacionadas a esse assunto, mas nenhuma delas toma a Linguagem Ubíqua como ponto de partida, por isso acho que justifica essa pergunta.
Para quem não sabe: Linguagem Ubíqua é o conceito de definir uma linguagem (falada e escrita) que é usada igualmente entre desenvolvedores e especialistas em domínio para evitar inconsistências e falta de comunicação devido a problemas de tradução e mal-entendidos. Você verá a mesma terminologia exibida no código, nas conversas entre qualquer membro da equipe, nas especificações funcionais e outros enfeites.
Então, o que eu queria saber é como lidar com o idioma ubíquo em domínios que não sejam o inglês.
Pessoalmente, sou a favor de escrever completamente o código de programação em inglês, incluindo comentários, mas é claro, excluindo constantes e recursos.
No entanto, em um domínio que não seja o inglês, sou obrigado a tomar uma decisão:
- Escreva um código que reflita o idioma ubíquo no idioma natural do domínio.
- Traduza o idioma ubíquo para o inglês e pare de se comunicar no idioma natural do domínio.
- Defina uma tabela que define como o idioma ubíquo se traduz em inglês.
Aqui estão alguns dos meus pensamentos com base nessas opções:
1) Tenho uma forte aversão ao código de idioma misto, que é codificado usando nomes de tipo / membro / variável etc. que não são do inglês. A maioria das linguagens de programação 'respira' inglês em grande parte e a maioria da literatura técnica, nomes de padrões de design etc. também está em inglês. Portanto, na maioria dos casos, não há como escrever código inteiramente em um idioma que não seja o inglês, então você acaba com idiomas mistos.
2) Isso forçará os especialistas em domínio a começar a pensar e falar no equivalente em inglês da UL, algo que provavelmente não virá naturalmente para eles e, portanto, dificultará significativamente a comunicação.
3) Nesse caso, os desenvolvedores se comunicam com os especialistas em domínio em seu idioma nativo, enquanto os desenvolvedores se comunicam em inglês e, o mais importante, escrevem código usando a tradução em inglês do UL.
Tenho certeza de que não quero ir para a primeira opção e acho que a opção 3 é muito melhor que a opção 2. O que você acha? Estou faltando outras opções?
ATUALIZAR
Hoje, cerca de um ano depois, tendo lidado com essa questão diariamente, devo dizer que a opção 3 funcionou muito bem para mim.
Não era tão tedioso quanto eu inicialmente temia e traduzir em tempo real enquanto conversava com o cliente também não era um problema.
Também achei as seguintes vantagens verdadeiras, com base na minha experiência.
- A tradução do UL faz com que você preste mais atenção na definição do UL e até do próprio domínio, especialmente quando você não sabe traduzir um termo e precisa começar a procurar nos dicionários etc. Isso me levou a reconsiderar as decisões de modelagem de domínio algumas vezes.
- Isso ajuda você a aprofundar seu conhecimento do idioma inglês.
- Obviamente, seu código é muito mais agradável de se ver, em vez de ser uma obscenidade incompreensível.