Por qué programar en Spanglish es una mala idea

Es muy común, en los comienzos de la carrera profesional, la adopción de malas prácticas.

En este sentido los desarrolladores de habla hispana tienen una desventaja respecto de sus pares angloparlantes.

Para los segundos palabras como if, for o while tienen sentido por sí mismas.

Los primeros en cambio requieren un esfuerzo extra para hacer la traducción, por pequeño que sea.

El hecho de que no contar con el inglés como lengua materna lleva muchas veces a plasmar las ideas utilizando el vocabulario que resulta natural.

Sin embargo, las palabras reservadas del lenguaje utilizado, en este caso PHP, están tomadas del inglés.

Es por eso que es muy común encontrar construcciones como esta en el código producido por programadores latinos:

if (!empty($usuariosRegistrados)) {
  ...
}

Este código no tendrá problemas en ser ejecutado, sin embargo, encierra varios inconvenientes no siempre detectables a simple vista.

Aumento de la carga cognitiva

Este tipo de estructuras fuerza al cerebro a hacer un esfuerzo de traducción (sea de Español a Inglés o viceversa) que, por pequeño que sea, afecta el rendimiento.

De alguna forma es similar a la diferencia entre:

$verbose = $input->getOption('verbose');

if ( $verbose ) {
    $output->writeln('Importing from: '. $filename);
}

$f = fopen( $filename, 'r' );
$doctrine = $this->getContainer()->get('doctrine');
$em = $doctrine->getEntityManager();

$processed = $newAccounts = $newAgents = $changedAgents = $skipped = 0;
$limit = $input->getOption('limit');
if ( $limit && $verbose ) {
    $output->writeln('Processing maximum '.$limit.' accounts');
}

Y:

$verbose = $input->getOption('verbose');if ( $verbose ) {    $output->writeln('Importing from: '. $filename);}$f = fopen( $filename, 'r' );$doctrine = $this->getContainer()->get('doctrine');
$em = $doctrine->getEntityManager();
$processed = $newAccounts = $newAgents = $changedAgents = $skipped = 0;$limit = $input->getOption('limit');if ( $limit && $verbose ) {    $output->writeln('Processing maximum '.$limit.' accounts');}

Dificultad para la colaboración internacional

Este punto se hace evidente cuando se requiere que desarrolladores que no hablan Español tengan una participación activa en el proyecto.

Comprender código escrito por otras personas (O por nosotros mismos habiendo pasado un tiempo considerable) resulta difícil. Si a esa complejidad se le suma la falta de significado de los identificadores, la tarea se volverá realmente ardua, cuando no directamente imposible.

Basta pensar en un código como:

if (!empty($a) && $bxbhg > 50 ) {
  ...
}

Independientemente de la experiencia y conocimientos que se tengan sobre PHP, trabajar sobre este código no será sencillo, mucho menos placentero.

Imposibilidad de aprovechar el potencial de herramientas

Los entornos de desarrollo (IDEs) modernos, los frameworks y demás herramientas a menudo incorporan caractetísticas de generación de código en forma automática.

Por ejemplo, un framework de testing automatizado como phpUnit puede generar sus resultados de esta forma:

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

..                                                                  2 / 2 (100%)

Time: 00:00.009, Memory: 6.00 MB

OK (2 tests, 2 assertions)    

O de esta:

PHPUnit 9.5.10 by Sebastian Bergmann and contributors.

Calculator
 ✔ Add adds

Time: 00:00.004, Memory: 6.00 MB

OK (2 tests, 2 assertions)

Según los parámetros pasados en la invocación del ejecutable.

Claro que, para que esto tenga sentido, el nombre del método a ser probado debe tener algún significado como frase escrita en inglés.

En este caso sería:

<?php

declare(strict_types=1);

use PHPUnit\Framework\TestCase;

final class CalculatorTest extends TestCase
{
        public function testAddAdds()
        {
                $sut = new Calculator();
                $this->assertEquals(8, $sut->add(5, 3));
        }
}

Entonces… ¿es necesario aprender inglés?

La respuesta depende en gran medida de los objetivos profesionales.

Para quien aspire a integrar equipos de desarrollo compuestos por profesionales de diversas nacionalidades, no dominar el inglés puede convertirse en un limitante importante.

Claro que un buen nivel de inglés no es suficiente para competir globalmente pero es un buen comienzo.

mchojrin

Por mchojrin

Ayudo a desarrolladores PHP a afinar sus habilidades técnicas y avanzar en sus carreras

4 comentarios

  1. Siempre es recomendable escribir identificadores en inglés, pero en la práctica no siempre es sencillo. Al programar la lógica de negocio, es inevitable encontrarse con terminología específica de la empresa. En esos casos, hay que considerar si traducir los términos al inglés realmente aporta claridad o si, por el contrario, se pierde parte del significado original. A veces, la traducción genera más confusión y termina haciendo que el desarrollador invierta más tiempo en entender el código.

    1. Hola Patricio:

      Gracias por tu aporte! Es interesante lo que planteas. Primero que nada: coincido en que no siempre es sencillo, es más arte que ciencia. Lo de la terminología específica de la empresa es 100% así, es lo que se conoce como lenguaje del negocio y es sumamente importante incorporarlo a nuestras aplicaciones.
      En nuestro caso, como hispano parlantes tenemos esa desvenataja respecto a nuestros pares angloparlantes y sí, hay que tomar una decisión.

      Personalmente prefiero tener todo en inglés por el hecho de que el lenguaje de programación ya me impone esa regla y, admitámoslo, habrá muchas más cosas expresadas en php (o java o lo que toque) que conceptos propios del negocio, con lo cual, considero que que es más ventajoso adaptarse en este lado que mezclar idiomas.

      Claro que todo depende del contexto. Me ha tocado trabajar con programadores que no tenían un buen dominio del inglés y, en ese caso coincido en que la confusión puede ser mayor, sin embargo, si existe la posibildiad de tener equipos internacionales (Algo cada vez más frecuente), la ventaja de usar el inglés como lengua vehicular se impone.

      Saludos!

¿Te quedó alguna duda? Publica aca tu pregunta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.