A língua falada nativa de alguém afeta a qualidade do código?


9

Existe uma escola de pensamento em lingüística em que a solução de problemas está muito ligada à sintaxe, semântica, gramática e flexibilidade da própria língua falada nativa.

Trabalhando com várias equipes de desenvolvimento internacional, posso ver claramente uma cultura mental (se você quiser) na base de código. Linguagem de programação à parte, a codificação alemã é bem diferente dos meus colegas na Índia. Além disso, o código é distintamente diferente na América Central e na América Costeira (na verdade, a IBM notou isso anos atrás).

Você percebe com seus colegas internacionais (de QUALQUER país) que o estilo de codificação e a solução de problemas estão alinhados com as línguas nativas?


Pode haver algumas diferenças, mas o que eu sei é que existem programadores ruins de todos os países.
ozz 31/01

Como você sabe se as diferenças são causadas pela língua materna ou pelo contexto cultural?
Mouviciel 31/01

@mouviciel, os dois são principalmente inseparáveis, no entanto, eu vejo anedoticamente a sintaxe da linguagem falada impulsionar a semântica da linguagem de programação; o exemplo alemão abaixo nos meus comentários apenas um. Eu posso ver claramente a diferença no estilo de codificação, mesmo entre as regiões dos EUA, apesar de uma linguagem amplamente semelhante que (como você afirmou) deve ser muito mais atribuída às diferenças culturais.
31411

Respostas:


5

Até agora, com minha experiência, notei que meu colega internacional fez o mesmo trabalho em comparação com o não-nativo. O problema surge quando eles tentam explicar o conceito ou o requisito. Senão, suponho que o nome da sintaxe não desempenhe muito papel até você ler o que exatamente eles fazem. Depois que um programador adquire o conhecimento da sintaxe, ele não conta qual é o significado real da palavra usada para sintaxe.


11
Veja, acho que a tradução da linguagem falada nativa (e do processo de pensamento) para uma linguagem de programação diferente tem resultados materiais diferentes. Não é bom ou ruim de qualquer maneira, apenas bem diferente. Observo muitas declarações de pilha / global e preparação de dados e, em seguida, conjuntos de procedimentos por alemães, versus americanos que tendem a incorporar ou anonimamente empregar variáveis ​​/ funções conforme a necessidade. Resultados finais = iguais, apenas abordagens diferentes.
Jé Queue

+1 para o resumo inteligente Resultados finais = mesmo, apenas abordagens diferentes
Zerotoinfinity

3

Não vi muita diferença além dos comentários do código . Às vezes, posso dizer claramente que esse trecho foi escrito por alguém cuja primeira língua não é o inglês.


6
Eu também, a falta de erros ortográficos é uma pista forte. :)
biziclop

3

Você percebe com seus colegas internacionais (de QUALQUER país) que o estilo de codificação e a solução de problemas estão alinhados com as línguas nativas?

Absolutamente. Este é um fato difícil. A cadeia de causa-efeito é, no entanto, mais complexa.

A região, seu ecossistema, condições climáticas, vida vegetal e animal influenciaram o desenvolvimento da religião da cultura local que faz parte dela.

A cultura e a religião influenciaram a formação e o desenvolvimento dos idiomas locais.

A cultura e a língua deixaram suas marcas no modelo da sociedade para esse grupo étnico em particular.

O modelo da sociedade definiu o modelo de comportamento - estilo de vida, atitude no trabalho, relações sociais, prioridades e valores dos indivíduos. Essa é a parte que queremos.

Pessoas de diferentes culturas estarão abordando a solução de um problema com a bagagem de sua herança cultural - como pensam sobre isso, que atitude trazem para o trabalho, que metodologia e padrões de resolução de problemas serão aplicados, quais prioridades e valores eles estabelecem.


Falando em exemplos, posso lhe dar dois. Se levarmos a Alemanha para onde eu moro atualmente, há certos padrões que observei.

  1. Planejar tudo com antecedência e a longo prazo é o caminho da vida. As reuniões noturnas com os amigos podem ser planejadas com semanas e meses de antecedência. Os jovens já se preocupam com a aposentadoria (seguros, etc.). A mudança de humor, a improvisação, a disposição e a capacidade de se ajustar conforme o uso é muito baixa. Naturalmente, é transferido para o modo de trabalho. Planejamento e ordem desempenham um grande papel. Ser ágil é considerado uma característica excepcional para descrever uma pessoa / equipe moderna com um pensamento progressivo. No entanto, a maioria dos processos ágeis que observei nas equipes alemãs parecem mais uma execução da máquina das etapas predefinidas (mesmo que as pessoas realmente tentem ser ágeis), mas nenhum espírito de ágil como tal.

  2. A previsibilidade de tudo é a norma da vida. As pessoas estão acostumadas a saber o que vai acontecer, onde e quando. Ela se estende da vida cotidiana ao longo do estilo de trabalho até as relações pessoais. Você pode ver, por exemplo, quando as pessoas atravessam a rua. Eles esperam a luz verde e começam a se mover sem olhar se os carros realmente pararam - porque esperam que eles parem. As pessoas se orgulham de poder controlar todos os aspectos de sua vida. Quando, porém, a vida reage com algo inesperado, quando as coisas saem do controle, as pessoas meio que surgem. Se transferido para a programação, vi que a codificação é feita de maneira bastante otimista, sem obsessãocom verificação de entrada, chaves estrangeiras para verificar a integridade dos dados e assim por diante. Também não há engenharia extra para manter o código, até certo ponto, resiliente a falhas e adaptável a certas mudanças futuras, apenas para satisfazer as expectativas de hoje (que provavelmente não mudarão, acreditam).

  3. Economizar dinheiro e otimizar seus gastos é extremamente importante na cultura. Isso se reflete nos artefatos de trabalho. Características e qualidade correspondem ao planejamento, mas não os excedem repentinamente (para torná-lo mais frio ou apenas "no caso"). Outro lado do jogo é a falta de vontade de investir em hardware e software modernos, de reestruturar o código de trabalho, de refatorá-lo, de melhorar as coisas apenas para se manter alinhado com o estado atual das coisas, para se preparar para o futuro. Como não há vitória imediata e ninguém paga pelas mudanças, ninguém vai se mexer.

  4. Empreendedorismo e criatividade são bastante baixos na cultura. A falta de vontade de correr riscos por conta própria é alta. Os resultados do trabalho raramente trazem as impressões de incomum, inesperado, criativo. As pessoas tendem a seguir o caminho trilhado, pouca experimentação ou configuração incomum "por curiosidade". As pessoas não gostam de tomar a iniciativa em suas próprias mãos, especialmente quando combinadas com a responsabilidade. Também ouvi dizer que os alemães que desembarcam na Holanda às vezes têm dificuldade, já que as pessoas costumam trabalhar de forma independente, sem orientação rigorosa. Em termos de programação, significa pouca experimentação com novas linguagens, ferramentas ou bibliotecas; novas versões não são adotadas por medo de mudança. As pessoas adotam padrões de design e os aplicam cegamente porque foram ensinados na universidade e não questionam sua aplicabilidade.

  5. Função sobre moda. É visto na vida cotidiana. Estilo urbano comum, design de edifícios, decoração de ruas, tudo se reduz ao mínimo necessário para que funcione, mas geralmente nada apenas para o estilo, a beleza. Em termos de programação, é visto na falta de um belo design de interface do usuário. A maioria dos sites corporativos e pessoais é bastante antiquada e chata. Você também não pode convencer o chefe e os colegas a fazer um polimento porque eles não vêem nenhum benefício tangível.

  6. Complexidade e burocracia fazem parte do estilo de vida. As pessoas vão além e aplicam-se a todos os lugares. Relações pessoais. detalhes do trabalho, decisões e soluções geralmente resultam em vários artefatos para documentar o que foi feito. O código de programação geralmente sai com elementos desnecessários, níveis de abstração e composições, porque parece ser mais sério para as pessoas. O princípio do KISS não é realmente popular.

  7. "Salvar o rosto" parece ser muito importante, parecer bem-sucedido, não mostrar sinais de fraqueza ou fracasso para mais ninguém (se você o tiver, quase certamente será usado contra você). Na prática do trabalho, admitir o fracasso é um tanto difícil, as pessoas fazem de tudo para não "perder a cara". Receber críticas também é difícil. Criticar alguém (com a boa causa ou não) é uma maneira de fazer um inimigo. Dizer o que se tem em mente não é praticado, o que torna bastante difícil entender quem fica onde.

Bottom line é, bons executores, planejamento e cronograma top, precisão é boa. Inovação e criatividade não são, no entanto, de esperar.


O segundo exemplo lida com a cultura russa à qual pertenço. É bem diferente.

  1. O cronograma e o planejamento não parecem ter um valor particular. Desvios menores não dizem respeito às pessoas, a menos que / até que comece a ameaçar o resultado maior. As pessoas não gostam de viver de acordo com o plano, preferem uma espécie de liberdade mental, fazem o que querem e quando sentem vontade de fazê-lo. Em termos de programação, eles podem ignorar o "não essencial", como escrever documentação e trabalhar com papelada. As pessoas são muito mais fáceis de ir e vir, se estão entediadas com o projeto, não gostam da atmosfera e assim por diante. Não se espera um compromisso de longo prazo por toda a vida, as pessoas não querem ficar vinculadas, não esperam que venham uma vez e fiquem até a aposentadoria. Isso é bem visto no mercado de telefonia móvel. Enquanto na Europa / EUA é onipresente ter contratos de dois anos, na Rússia isso não é praticado. As pessoas não

  2. As pessoas não gostam da burocracia e preferem relacionamentos informais. Pouco ou nenhum trabalho em papel, o menor número possível de discussões e reuniões, simplesmente faz o trabalho. Não se gosta de complexidade no código, são preferidas decisões simples e maneiras diretas. Rotina chata não é favorecida. Algumas tarefas "não essenciais", como comentários e documentação, podem ser ignoradas. As pessoas podem adiar certas coisas chatas e fazer coisas mais interessantes ou fazer a parte chata de uma maneira inesperada, que as manterá motivadas.

  3. Os custos não são tão importantes. As pessoas gostam de obter algo mais novo, mais interessante, mais interessante e mais moderno, sem um caso de negócios. Se oferecer satisfação, eles geralmente não ficarão preocupados com os custos extras incorridos.

  4. As pessoas estão muito entusiasmadas com tudo. Comida, música, roupas, artefatos e idéias de diferentes países e culturas passam pelas portas abertas. Pessoas inteligentes em programação experimentariam uma nova linguagem, ferramenta ou biblioteca apenas por curiosidade, com ou sem um caso de negócios. Diferentes filosofias e metodologias, todas são tomadas com prazer, tocadas, mordidas, experimentadas e misturadas de uma maneira descolada.

  5. Beleza e estilo são muito importantes. As pessoas gastariam tempo e dinheiro extras em algo que não traz benefícios tangíveis, mas apenas satisfaz algum senso artístico. Muitas vezes, eles preferem algo estiloso a algo mais funcional. O design bonito da interface do usuário é muito apreciado. As pessoas que trabalham com programação reorganizam o código que parece desajeitado e desestruturado, simplesmente para adicionar mais estilo a ele, mesmo que estivesse funcionando perfeitamente antes, resultando em tempo extra gasto.

  6. Prescrição e regras são muitas vezes desconsideradas e até desprezadas, as pessoas podem fazer algo totalmente diferente se forem convencidas de que será melhor (ou mais legal - não resiste a isso). Muitas decisões de cima serão questionadas e discutidas. E sim, todo mundo tem uma opinião forte sobre tudo.

  7. A previsibilidade da vida é bastante baixa, portanto as pessoas sempre planejam qualquer contingência. O mesmo se reflete frequentemente no código, em vez de uma atitude pessimista, com verificações duplas e planos de fallback. A arquitetura pode refletir a prontidão para futuras mudanças possíveis, mas não a superarquitetura do astronauta. O Agile não é uma metodologia moderna, mas o caminho da vida. As pessoas também estão acostumadas a mudanças e não tentam controlar todos os aspectos de suas vidas. Quando algo inesperado acontece, as pessoas apenas acenam com a cabeça, dizem "será melhor na próxima vez" e seguem em frente sem ficarem loucas, começando a beber, drogas etc. Uma falha no projeto não resulta em suicídios, é facilmente tomada.

  8. O politicamente correto é baixo, então as pessoas podem apenas dizer o que pensam quando você não está esperando. Esteja preparado.

Uma conclusão diferente é: esperar o inesperado, algo incomum e criativo, mas não esperar precisão da máquina, agendar e seguir as regras.


Qual é o melhor não pode ser facilmente respondido. Um tipo de trabalho é melhor coberto por uma categoria de trabalhador, o outro é por uma categoria diferente. Ruim se as pessoas receberem tarefas erradas para sua mentalidade. Suponho que seja um desafio para um gerente de equipe internacional reconhecer esse problema. Não sei se isso já foi discutido com aplicativos para o setor de TI.


11
Obrigado pelos comentários anedóticos. Vejo o estilo afetado muito e interessante ler seus comentários.
31411

Embora exista alguma verdade em sua observação sobre os alemães, eu precisei -1 porque essas são vastas generalizações excessivas que você está mencionando (nem todos os alemães são do jeito que você os descreveu - o mesmo para os russos, presumo).
Jas

Puxa, parece uma instanciação dos conceitos "Clássico" e "Romântico" do livro "Zen e a Arte da Manutenção de Motocicletas" em duas populações inteiras! Surpreendente.

2

Não tenho certeza da qualidade do código, mas é certo que cada programador faz seu trabalho de maneira diferente.

Já foi dito que as linguagens naturais influenciaram nosso pensamento (então eu acho que isso influenciaria a programação), essa escola de pensamento levou ao desenvolvimento de linguagens artificiais com diferentes paradigmas, na tentativa de provar isso: Loglan , por exemplo. Não sei se muito disso resultou.

No entanto, tenho certeza de que a educação (na qual a língua desempenha um papel, mas outras coisas também) certamente afeta o ponto de vista de alguém sobre um problema dedicado.

Eu tenho colegas que frequentaram escolas "técnicas" e aprendem o intestino do C / C ++ enquanto estudam, e eles tendem a ter uma abordagem técnica para os problemas, enquanto eu tenho a tendência de me sentar, pensar nisso (às vezes por um bom tempo) antes de sentir que tenho um entendimento profundo o suficiente para chegar a isso ... e ainda assim fomos criados no mesmo país (principalmente), falamos o mesmo idioma e temos mais ou menos a mesma cultura (apenas um formação educacional diferente).

Minha única experiência com colegas "estrangeiros" foi um espanhol (dois anos atrás) e um italiano (até hoje), e ambos trabalham mais ou menos como o resto da equipe (francês). Talvez se eu encontrasse um lugar de origem não latina, eu pudesse encontrar uma diferença.

Como tal, não tenho certeza de que o idioma seja a principal causa das diferenças de estilo. Eu acho que educação e caráter podem ter pelo menos tanto impacto.


+1 por apontar que a individualidade é muito mais importante que a nacionalidade.
Jas

1

Não é linguagem, mas algum tipo de formação cultural, "caráter nacional". O que parece funcionar de maneira geral (por exemplo, os ingleses são legais, os alemães são precisos etc.), mas falha em pessoas individuais.

De qualquer forma, cabe a você descobrir o sistema de medição, escolher projetos em repositórios de código aberto, examinar o código e fazer algumas estatísticas.

Seria melhor se você pudesse coletar alguns outros atributos dos autores: idade, educação, indústria etc.


Não tenho certeza do objetivo de algumas de suas declarações. Você está dizendo que NÃO acredita que a linguagem falada nativa afeta as abordagens de resolução de problemas na programação?
Jé Queue

11
Sim, não acredito que o idioma afete. Eu acho que "caráter nacional" conta mais. E acho que esse "caráter nacional" não é um bom nome, "influências culturais" deveriam ser melhores (e pelo menos menos parecem / são racistas). Pense na metrópole de VS da aldeia, somos apenas um pesadelo de 40 anos de comunismo-pesadelo VS democracia por 200 anos.
ern0

Ele disse que você tem que absorver TUDO, não apenas a semântica da linguagem em exclusão de tudo o mais. Voto positivo ao homem pelo menos para neutralizar a ignorância de algumas pessoas.
Filip Dupanović

+1. Eu moro na Áustria, falamos alemão aqui, mas o estilo típico de codificação dos meus colegas de trabalho alemães é radicalmente diferente do dos meus colegas de trabalho austríacos.
precisa saber é o seguinte

0

O idioma nativo de uma pessoa não afeta a maneira como você codifica. Porém, ser capaz de entender inglês é muito importante, pois a maioria dos livros de programação, blogs, sites de controle de qualidade, como SO, etc. tendem a estar em inglês

As diferenças culturais podem ser um fator no entanto. Universidades em diferentes países podem ensinar de um ponto de vista diferente. Alguns países podem ter um movimento ágil mais forte do que outros países. Por exemplo, as fábricas japonesas são conhecidas por sua fabricação Lean, que muitas estão tentando copiar, mas falham porque não compreendem os valores subjacentes fundamentais.


0

Eu acho que a educação (quero dizer o estilo dela, e não a qualidade) é um fator muito mais forte. Até a matemática básica (que alguém pensaria ser bastante universal) é ensinada de maneiras completamente diferentes ao redor do mundo, sem falar em algo tão intangível e confuso quanto a solução de problemas.

Portanto, se existe um efeito de linguagem (que duvido pessoalmente, com base em minhas experiências), ele é ofuscado pelo estilo de educação.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.