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.
- Un ejemplo de Laravel React sobre Docker que funciona - 10/01/2025
- ¿Puede tener éxito una aplicación en PHP estructurado? - 06/01/2025
- Cómo enviarencabezados SOAP desde PHP - 09/12/2024
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.
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!