Categories
Domain-Driven Design

Em qual língua você programa?

Muitas vezes fico em dúvida sobre qual língua usar nos meus sistemas. Sempre me sentí muito mais confortável programando em inglês do que em português mas nunca achei isso muito certo já que nossa língua nativa é o português. Já houveram casos de eu trabalhar com alguém que só sabia português e apesar de achar que nessa profissão quem não sabe inglês não vai à lugar nenhum não podia simplesmente inviabilizar o trabalho da equipe.

No último projeto que participei nossa equipe usou somente português. Algumas coisas boas aconteceram como o fato de termos incorporado a linguagem do negócio ao sistema. Isso é muito bom porque a grande maioria das entidades do sistema são coisas do mundo real e as discussões são sempre sobre coisas reais e não sobre metáforas (frequentemente mal feitas).

Porém também houveram pontos negativos. Por exemplo, uma determinada classe de serviços, que em inglês seria algo como MediaServices, teve que ser chamada de ServicosDeMidia. No fim das contas acabei optando por tirar a preposição (acho que o “de” é uma preposição, certo?) ficando somente ServicosMidias. Resolví retirá-la porque inúmeras classes ficaram com “De” no nome e ficou meio esquisito. O ruim é que não é exatamente assim que a gente fala naturalmente e fica um pouco estranho…

No fim das contas acho que o ideal é utilizar a língua do negócio, seja ela português ou inglês. Desta forma quando você for conversar com os clientes (product owners) você não terá o overhead de mapear todos os conceitos reais para a linguagem ou metáforas usadas no sistema. Com isso a conversa entre os clientes e os desenvolvedores fica muito mais produtiva já que todos estão falando sobre as mesmas coisas.

15 replies on “Em qual língua você programa?”

Até que você precise da ajuda de algum consultor ou programador que não saiba portugues ou decida vender o código fonte de seu aplicativo ou passar por uma auditoria realizada por orgão não brasileiro, etc.

Nunca vai acontecer comigo? Tem certeza?

Isso até poderia acontecer… Mas o fato é que de todos os 200 projetos que eu conheço dentro da minha empresa, NENHUM passou por isso. Incluindo todos que eu já trabalhei, que foram uns 15 eu acho. Sendo assim no meu caso essa preocupação é totalmente irrelevante e eu nem levo em consideração.

Acho besteira não fazer um software da melhor forma possível só por causa de alguma coisa que pode acontecer no futuro (que na maioria das vezes não acontece, isso é fato). Lembre-se que não devemos fazer nada pensando no que pode acontecer no futuro mas sim no que ESTÁ acontecendo no presente 🙂

Abraços,
Guilherme

Costumo usar o inglês para os conceitos do domínio de software(Patterns, algoritmos,etc). Assim, no seu exemplo o nome que escolhereria seria MidiaServices. A meu ver, a comunicação fica mais clara para os especialistas dos dois dominios: negócio e software.

Eu não costumo escolher uma língua definitiva.

Em casos os objetos de domínio dou grande preferência pelo português, ou o idioma mais usado para expressar o conceito que a classe representa.

No caso de classes utilitárias tenho usado mais o inglês. Não por gosto ou familiaridade com o idioma, mas pela facilidade de criar palavras novas.

[],
AC

Guilherme,
Prefiro ainda o portunhês que mistura os dois quando necessário. Ex: Não vejo nada de mais chamar a tal classe de MediaServices mesmo que as demais se chamem por nomes em português. Até porque geralmente quando conversamos costumamos misturar termos em inglês com português de forma naturar. Ex: “Você aplicou o Design Pattern Xpto no seu código ?”. Muito melhor que falar padrão de projeto não acha ? Sei que o exemplo talvez não tenha sido o melhor mas é o que costumamos fazer com naturalidade.

Abraço …

Acho que está havendo uma confusão aqui.

Quando eu falei de “MediaServices”, por exemplo, não estou propondo uma “programação orientada a infraestrutura” onde todas as classes tem o nome do design pattern utilizado no seu nome. Pra mim isso é desnecessário na maioria das vezes.

O ponto que eu estou querendo chegar é que se eu disser para o cliente que existe um “CachorroRepository” ele vai achar muito estranho mas um “RepositorioDeCachorros” com certeza têm uma semântica muito maior. Ele pode até não entender como funciona um repositório mas ele terá uma idéia de que é um lugar cheio de cachorros. E é esse o ponto 🙂

[ ]s, Guilherme

Exatamente, não houve confusão. Acho que eu é que me expressei mau. O que eu quiz dizer é que se o nome é mais comum em inglês tanto pra você quanto para o cliente não faz sentido traduzi-lo para o português mesmo que por padrão esteja sendo utilizado o português, você não concorda? O exemplo do Design Pattern foi pessimo 🙂

Pois é.. Esse é um caso complicado. Apesar de ser bem feio, optamos por utilizar a linguagem do domínio. Por exemplo, a Mídia é codificada usando um EncodingProfile. Quando tentamos introduzir PerfilDeCodificação no domínio, todo mundo estranhou MUITO. Ficou péssimo! Aí decidimos deixar em inglês mesmo.

Olha nomenclatura realmente é um dilema quando você faz outsource para outras empresas fora da esfera do seu idioma e tenta ao mesmo tempo re-utilizar o código de projetos nacionais desenvolvidos.

É o que nós costumamos enfrentar aqui internamente entre equipe.

Porém usamos os dois ao mesmo tempo, ja que tem semelhanças nos idiomas por derivarem de uma lingua mae a (anglo-saxãn).

Por isso ao caso de nosso colega ai do exercícios eu faria em psdeu-codigo:

Class ConfigExercicio {

function ByData():Date{};

function ByHora():Date {};

function ByTempo():int{};
}

As vezes sufixos ajudam nessa hora de definir a nomenclatura dos seus métodos, nesse caso adotamos termos em ingles (by = [por,de,do],get[pega],set[setar]).

Meus 2cents para a conversa.

Leave a Reply

Your email address will not be published. Required fields are marked *