¿El idioma hablado nativo afecta la calidad del código?

9

Existe una escuela de pensamiento en lingüística que dice que la resolución de problemas está muy ligada a la sintaxis, la semántica, la gramática y la flexibilidad del propio idioma hablado nativo.

Al trabajar con varios equipos de desarrollo internacional, puedo ver claramente una cultura mental (si lo desea) en la base de código. Dejando a un lado el lenguaje de programación, la codificación alemana es bastante diferente de la de mis colegas en la India. Además, el código es claramente diferente en América Central como lo es en la Costa de América (en realidad, IBM lo notó hace años).

¿Te das cuenta con tus colegas internacionales (de CUALQUIER país) que el estilo de codificación y la resolución de problemas están en línea con las lenguas nativas?

Jé Queue
fuente
Puede haber algunas diferencias, pero lo que sí sé es que hay malos programadores de todos los países.
ozz
¿Cómo saber si las diferencias son causadas por la lengua materna o por antecedentes culturales?
Mouviciel
@mouviciel, los dos son en su mayoría inseparables, sin embargo, anecdóticamente veo que la sintaxis del lenguaje hablado impulsa la semántica del lenguaje de programación; El ejemplo alemán a continuación en mis comentarios es solo uno. Puedo ver claramente la diferencia en el estilo de codificación incluso entre las regiones de EE. UU. A pesar de un lenguaje muy similar que (como usted dijo) debería atribuirse mucho más a las diferencias culturales.
Jé Queue

Respuestas:

5

Hasta ahora, con mi experiencia, he notado que mi compañero internacional nativo hizo el mismo trabajo en comparación con el no nativo. El problema surge cuando intentan explicar el concepto o el requisito. De lo contrario, supongo que el nombre de sintaxis no juega mucho papel hasta que lees lo que hacen exactamente. Una vez que un programador adquiere el conocimiento de la sintaxis, entonces no cuenta cuál es el significado real de la palabra utilizada para la sintaxis.

Zerotoinfinity
fuente
1
Verán, encuentro que la traducción del idioma hablado nativo (y el proceso de pensamiento) a un lenguaje de programación diferente tiene diferentes resultados materiales. No es bueno ni malo de ninguna manera, solo bastante diferente. Observo una gran cantidad de declaraciones de variables globales / heap y preparación de datos y luego conjuntos de llamadas a procedimientos por parte de alemanes, frente a estadounidenses que tienden a emplear en línea o anónimamente variables / funciones según sea necesario. Resultados finales = igual, solo enfoques diferentes.
Jé Queue
+1 para el resumen inteligente Resultados finales = igual, solo enfoques diferentes
Zerotoinfinity
3

No he visto mucha diferencia aparte de en los comentarios del código . A veces puedo decir claramente que este fragmento fue escrito por alguien cuyo primer idioma no es el inglés.

Marcie
fuente
66
Yo también, la falta de errores ortográficos es una pista fuerte. :)
biziclop
3

¿Te das cuenta con tus colegas internacionales (de CUALQUIER país) que el estilo de codificación y la resolución de problemas están en línea con las lenguas nativas?

Absolutamente. Este es un hecho difícil. La cadena causa-efecto es, sin embargo, más compleja.

La región, su ecosistema, las condiciones climáticas, la vida vegetal y animal han influido en el desarrollo de la religión de la cultura local como parte de ella.

La cultura y la religión han influido en la formación y el desarrollo de los idiomas locales.

La cultura y el idioma han dejado huellas en el modelo de sociedad para este grupo étnico en particular.

El modelo de sociedad ha definido el modelo de comportamiento: estilo de vida, actitud laboral, relaciones sociales, prioridades y valores de las personas. Esa es la parte que queremos.

Las personas de diferentes culturas se acercarán a resolver un problema con el bagaje de su patrimonio cultural: cómo piensan al respecto, qué actitud aportan al trabajo, qué metodología y patrones de resolución de problemas aplicarán, qué prioridades y valores establecen.


Hablando de ejemplos, puedo darte dos. Si tomamos Alemania donde resido actualmente, hay ciertos patrones que he observado.

  1. Planificar todo por adelantado y a largo plazo es la forma de vida. Las reuniones nocturnas con amigos se pueden planificar con semanas y meses de anticipación. Los jóvenes ya se preocupan por su jubilación (seguro, etc.). El cambio de humor, la improvisación, la disposición y la capacidad de adaptarse sobre la marcha son muy bajos. Naturalmente se transfiere a la forma de trabajo. La planificación y el orden juegan un papel importante. Ser ágil se considera una característica excepcional para describir a una persona / equipo moderno con un pensamiento progresivo. Sin embargo, la mayoría de los procesos ágiles que he observado en los equipos alemanes parecen más una ejecución de máquina de los pasos predefinidos (incluso si las personas realmente intentan ser ágiles), pero no un espíritu ágil como tal.

  2. La previsibilidad de todo es la norma de la vida. La gente está acostumbrada a saber qué sucederá, dónde y cuándo. Se extiende desde la vida cotidiana sobre el estilo de trabajo hasta las relaciones personales. Puedes verlo, por ejemplo, cuando la gente cruza la calle. Esperan la luz verde y comienzan a moverse sin mirar si los autos realmente se han detenido, porque esperan que lo hagan. Las personas se enorgullecen de poder controlar todos los aspectos de su vida. Sin embargo, cuando la vida golpea con algo inesperado, cuando las cosas se salen de control, la gente se asusta. Si se transfiere a la programación, he visto que la codificación se realiza de manera bastante optimista, sin obsesióncon entrada de verificación, claves externas para verificar la integridad de los datos, etc. Además, no hay ingeniería adicional para mantener el código hasta cierto punto resistente a fallas y adaptable a ciertos cambios futuros, solo para satisfacer las expectativas de hoy (que probablemente no cambien, creen).

  3. Ahorrar dinero y optimizar sus gastos es extremadamente importante en la cultura. Se refleja en los artefactos de trabajo. Las características y la calidad coinciden con la planificación, pero no las superan repentinamente (para que sean más frescas o "por si acaso"). Otro aspecto del juego es la falta de voluntad para invertir en hardware y software moderno, rediseñar el código de trabajo, refactorizarlo, mejorar las cosas solo para mantenerse en línea con el estado actual de las cosas, prepararse para el futuro. Como no hay ganancias inmediatas y nadie está pagando por los cambios, en realidad nadie se va a mover.

  4. El emprendimiento y la creatividad son bastante bajos en la cultura. La falta de voluntad para correr riesgos por cuenta propia es alta. Los resultados del trabajo rara vez llevan las huellas de lo inusual, inesperado, creativo. La gente tiende a seguir el camino pisoteado, poca experimentación o configuración inusual "por curiosidad". A la gente no le gusta tomar la iniciativa en sus propias manos, especialmente cuando se combina con la responsabilidad. También escuché que los alemanes que aterrizan en los Países Bajos a veces tienen dificultades, ya que las personas allí están acostumbradas a trabajar de forma independiente sin una guía estricta. En cuanto a la programación, significa poca experimentación con nuevos lenguajes, herramientas o bibliotecas, no se adoptan nuevas versiones por miedo al cambio. Las personas toman patrones de diseño y los aplican a ciegas porque se les enseñó en la universidad y no cuestionan su aplicabilidad.

  5. Función sobre la moda. Se ve en la vida cotidiana. El estilo urbano común, el diseño de edificios, la decoración de las calles, todo se reduce al mínimo requerido para que funcione, pero generalmente no es solo por el estilo, la belleza. En cuanto a la programación, se ve en la falta de un hermoso diseño de interfaz de usuario. La mayoría de los sitios corporativos y personales son bastante antiguos y aburridos. Tampoco puede persuadir al jefe y a los colegas para que hagan un poco de pulido porque no ven ningún beneficio tangible.

  6. La complejidad y la burocracia son parte del estilo de vida. La gente lo lleva más allá y lo aplica en todas partes. Relaciones personales. Los detalles del trabajo, las decisiones y las soluciones a menudo resultan en múltiples artefactos para documentar lo que se hizo. El código de programación a menudo sale con elementos innecesarios, niveles de abstracción y composiciones porque les parece a las personas más serias de esa manera. El principio KISS no es realmente popular.

  7. "Salvar la cara" parece ser muy importante, parecer exitoso, no mostrar signos de debilidad o fracaso a nadie más (si lo tiene, es casi seguro que se usará en su contra). En la práctica laboral, admitir el fracaso es bastante difícil, la gente hace todo lo posible para no "perder la cara". Tomar críticas también es difícil. Criticar a alguien (con una buena causa o no) es una forma segura de hacer un enemigo. Decir lo que uno tiene en mente no se practica, lo que hace que sea bastante difícil entender quién está parado en cada lugar.

En pocas palabras, buenos ejecutores, planificación y planificación superior, la precisión es buena. Sin embargo, no se puede esperar innovación y creatividad.


El segundo ejemplo trata de la cultura rusa a la que pertenezco. Es muy diferente

  1. El horario y la planificación no parecen tener un valor particular. Las desviaciones menores no afectan a las personas a menos que / hasta que comience a amenazar el resultado más grande. A las personas no les gusta vivir según el plan, prefieren una especie de libertad mental, hacer lo que quieran y cuando tengan ganas de hacerlo. En cuanto a la programación, pueden ignorar lo "no esencial" como escribir documentación y hacer papeleo. Las personas son mucho más fáciles de ir y venir, si están aburridas con el proyecto, no les gusta la atmósfera, etc. El compromiso a largo plazo por vida no es de esperarse, las personas no quieren ser atadas, no esperan que vengan una vez y se queden hasta la jubilación. Esto se ve muy bien en el mercado de la telefonía móvil. Mientras que en Europa / EE. UU. Es omnipresente tener contratos de 2 años, en Rusia esto no se practica. La gente no

  2. A las personas no les gusta la burocracia y prefieren las relaciones informales. Poco o nada de papeleo, tan pocas discusiones y reuniones como sea posible, simplemente haga el trabajo. La complejidad en el código no es del agrado, se prefieren decisiones simples y formas directas. La rutina aburrida no es favorecida. Se pueden ignorar algunas tareas "no esenciales" como los comentarios y la documentación. La gente puede posponer ciertas cosas aburridas y hacer cosas más interesantes o hacer la parte aburrida de una manera inesperada que los mantendrá motivados.

  3. Los costos no son tan importantes. A la gente le gusta obtener algo más nuevo, más fresco, más interesante y más moderno, sin un caso de negocios. Si proporciona satisfacción, generalmente no se inquietarán por los costos adicionales incurridos.

  4. La gente está muy entusiasmada con todo. La comida, la música, la ropa, los artefactos y las ideas de diferentes países y culturas pasan por las puertas abiertas. Las personas con conocimientos de programación experimentarían con un nuevo lenguaje, herramienta o biblioteca, por curiosidad, con un caso de negocio o sin él. Diferentes filosofías y metodologías, todo se toma con gusto, se toca, se muerde, se experimenta y se mezcla de manera funky.

  5. La belleza y el estilo son muy importantes. La gente gastaría tiempo y dinero extra en algo que no tiene ningún beneficio tangible pero que solo satisface un cierto sentido artístico. A menudo prefieren algo elegante sobre algo más funcional. Hermoso diseño de interfaz de usuario es muy apreciado. Las personas con conocimientos de programación rediseñarían el código que parece torpe y desestructurado simplemente para agregarle más estilo, incluso si funcionaba perfectamente antes, lo que da como resultado un tiempo extra dedicado.

  6. La prescripción y las reglas a menudo se ignoran e incluso se desprecian, las personas pueden hacer algo totalmente diferente si están persuadidas de que será mejor (o más fresco, no puede resistirse a eso). Muchas decisiones de arriba serán cuestionadas y discutidas. Y sí, todos tienen una opinión fuerte sobre casi todo.

  7. La previsibilidad de la vida es bastante baja, por lo que las personas siempre planean cualquier contingencia. Lo mismo a menudo se refleja en el código, más bien en una actitud pesimista, con doble verificación y planes alternativos. La arquitectura puede reflejar la preparación para futuros cambios posibles, pero no una sobrearquitectura similar a la de los astronautas. Ágil no es una metodología moderna sino el estilo de vida. Además, las personas están acostumbradas a los cambios y no tratan de controlar todos los aspectos de su vida. Cuando sucede algo inesperado, las personas simplemente asienten con la cabeza, dicen "será mejor la próxima vez" y continúan sin volverse locos, comenzar a beber, drogas, etc. Un fracaso del proyecto no resulta en suicidios, se toma fácilmente.

  8. La corrección política es baja, por lo que las personas simplemente pueden decir lo que piensan por adelantado cuando no lo esperan. Estar preparado.

Una conclusión diferente es: esperar lo inesperado, algo inusual y creativo, pero no esperar precisión de la máquina, programar y seguir las reglas.


Cuál es mejor no se puede responder fácilmente. Un tipo de trabajo está mejor cubierto por una categoría de trabajador, el otro es por una diferente. Malo si a las personas se les asignan tareas incorrectas para su mentalidad. Supongo que es un desafío para un gerente de equipo internacional reconocer ese problema. No estoy seguro de que alguna vez se haya discutido con la aplicación a la industria de TI.


fuente
1
Gracias por los comentarios anecdóticos. Veo que el estilo afectó mucho e interesante leer sus comentarios.
Jé Queue
A pesar de que hay algo de verdad en tu observación de los alemanes, tuve que -1 porque estas son generalizaciones excesivas que estás mencionando (no todos los alemanes son como los describiste, lo mismo para los rusos, supongo).
Jas
¡Dios, suena como una instanciación de los conceptos "clásico" y "romántico" del libro "Zen y el arte del mantenimiento de motocicletas" en dos poblaciones enteras! Asombroso.
2

No estoy seguro de la calidad del código, pero es seguro que cada programador hace su trabajo de manera diferente.

Se ha dicho que los lenguajes naturales influyeron en nuestro pensamiento (así que supongo que influiría en la programación), esta escuela de pensamiento ha llevado al desarrollo de lenguajes artificiales con diferentes paradigmas en un intento de demostrarlo: Loglan , por ejemplo. No sé si salió mucho de eso.

De lo que sí estoy seguro, sin embargo, es que la educación (en la que el lenguaje juega un papel, pero otras cosas también) ciertamente afecta el punto de vista de uno sobre un problema específico.

Tengo colegas que fueron a escuelas "técnicas", y aprendieron las entrañas de C / C ++ mientras estaban en la escuela, y tienden a tener un enfoque técnico de los problemas, mientras que tengo la tendencia a quedarme atrás, pensar en ello (a veces por un buen momento) antes de sentir que tengo una comprensión lo suficientemente profunda como para llegar a eso ... y, sin embargo, fuimos criados en el mismo país (en su mayoría), hablamos el mismo idioma y tenemos más o menos la misma cultura (solo un diferentes antecedentes educativos).

Mi única experiencia con colegas "extranjeros" ha sido española (hace dos años) e italiana (hasta el día de hoy), y ambos trabajan más o menos como el resto del equipo (francés). Quizás si tuviera que encontrar un lugar de origen no latino, podría detectar una diferencia.

Como tal, no estoy seguro de que el idioma sea la causa principal de las diferencias de estilo. Creo que la educación y el carácter pueden tener al menos el mismo impacto.

Matthieu M.
fuente
+1 por señalar que la individualidad es mucho más importante que la nacionalidad.
Jas
1

No es el lenguaje, sino algún tipo de trasfondo cultural, "carácter nacional". Lo que parece funcionar en general (por ejemplo, los ingleses son geniales, los alemanes son precisos, etc.), pero falla en personas individuales.

De todos modos, depende de usted encontrar el sistema de medición, elegir proyectos de repositorios de código abierto, examinar el código y hacer algunas estadísticas.

Sería mejor si pudieras recopilar algunos otros atributos de los autores: edad, educación, industria, etc.

ern0
fuente
No estoy seguro del punto de algunas de sus declaraciones. ¿Estás diciendo que NO crees que el idioma hablado nativo afecta los enfoques de resolución de problemas en la programación?
Jé Queue
1
Sí, no creo que el idioma afecte. Creo que el "carácter nacional" cuenta más. Y creo que este "carácter nacional" no es un buen nombre, las "influencias culturales" deberían ser mejores (y al menos, menos parece / son racistas). Solo piense en el pueblo VS la metrópoli, estamos a solo 40 años de comunismo-pesadilla VS democracia por 200 años.
ern0
Dijo que tienes que asimilar TODO, no solo la semántica del lenguaje en exclusión de todo lo demás. Vota al hombre al menos para contrarrestar la ignorancia de algunas personas.
Filip Dupanović
+1. Vivo en Austria, aquí hablamos alemán, pero el estilo de codificación típico de mis compañeros de trabajo alemanes es radicalmente diferente al de mis compañeros de trabajo austriacos.
user281377
0

El idioma nativo de uno no afecta cómo codifica. Sin embargo, poder entender el inglés es bastante importante, ya que la mayoría de los libros de programación, blogs, sitios de control de calidad, como SO, etc. tienden a estar en inglés

Sin embargo, las diferencias culturales pueden ser un factor. Las universidades en diferentes países pueden enseñar desde un punto de vista diferente. Algunos países pueden tener un movimiento ágil más fuerte que otros países. Por ejemplo, las fábricas japonesas son conocidas por su fabricación Lean, que muchas están tratando de copiar, pero fallan porque carecen de la comprensión de los valores subyacentes fundamentales.

Pete
fuente
0

Creo que la educación (me refiero al estilo de la misma, más que a la calidad) es un factor mucho más fuerte. Incluso las matemáticas básicas (que uno pensaría que son bastante universales) se enseñan de maneras completamente diferentes en todo el mundo, y mucho menos algo tan intangible y difuso como la resolución de problemas.

Entonces, si hay un efecto de lenguaje (que personalmente dudo, según mis experiencias), se ve eclipsado por el estilo de educación.

biziclop
fuente