9 Reflexiones Controversiales Acerca De La Programación

En este artículo comentaremos algunas reflexiones que servirán de respuesta a ciertas creencias y mantras que oigo repetirse infinitamente entre los programadores, no importa a que “bando” de lenguaje de programación pertenezca. También expongo ciertas actitudes que tienen muchos programadores que, en contra de la creencia popular de que son beneficiosas, van en contra de sus propios intereses y no le aportan nada profesionalmente.

Man Working With Computer And Laptop

Debo aclarar que algunas de las siguientes reflexiones son producto de conversaciones que he tenido con mis amigos programadores —algunos son dueños de empresas de desarrollo de software— otras las he leído en diferentes fuentes y unas cuentas son el resultado de mi propia experiencia personal.

Así que, a todos los haters, por favor, antes que descarguen su furia contra mi lean bien el artículo y sopesen bien su respuesta. Estas reflexiones están soportadas por años de experiencia en el campo, y además, bastante investigación en la materia.

Los programadores que NO escriben código por diversión en su tiempo libre NUNCA serán tan buenos como quienes sí lo hacen.

He conocido programadores que escriben código como un medio para ganarse “el pan de cada día” y otros que lo hacen por pasión. Indiscutiblemente, no importa el talento o el nivel de inteligencia de la persona, si lo hace por pasión o no, aquel que escribe código en su tiempo libre, sea en un proyecto puramente personal o contribuyendo al mejoramiento de algún software Open Source, desarrolla mejores habilidades de programación.

La mayoría de los programadores en su trabajo de 8:00 am 5:00 pm trabajan desarrollando softwares aburridos que no les motiva. Muchos están forzados por políticas de la empresa a utilizar un lenguaje de programación que no les gusta. Bajo un escenario como este es muy difícil desarrollar un verdadero talento para la programación. Por el contrario, hay otros que si trabajan desarrollando software que los estimula intelectualmente y dentro de un ambiente laboral productivo.

En ambos casos el resultado en la mayoría de los casos es similar. Si no escribes código en el tiempo libre estás limitado tu crecimiento. Escribir código en el tiempo libre estimula la mente a pensar fuera de las “fronteras” mentales impuestas por el entorno laboral. Las grandes soluciones y los software innovadores casi siempre terminan siendo desarrollados por un individuo en el dormitorio de su casa en su “tiempo libre”.

La mayoría de los comentarios dentro del código son simplemente una duplicación de código.

Gran parte del tiempo de un programador es empleado entendiendo, manipulando o reescribiendo código escrito por otro. Los comentarios son una herramienta que sirven de guía para poder entender la “lógica” empleada por otra persona al escribir un pedazo de código. El problema está en que muchos programadores desarrollan una pésima y desordenada lógica de programación que, al cabo de unas semanas, ni ellos mismos entienden lo que escribieron.

Entonces, tipos así piensan que con colocar algún comentario dentro del código le facilitarán la vida al siguiente programador que se haga cargo del código. ¡No hay nada más estúpido que tal práctica! Lo correcto es concentrase en escribir un código limpio, de fácil lectura, sin elementos innecesarios, ni duplicación de funciones.

Los comentarios dentro del código son importantes, pero un código limpio y ordenado lo es más. No hay sustituto para esta práctica.

No es un pecado “Googlear”.

Sé que a muchos les parecerá ofensivo, pero la simple realidad es que ¡NO necesitas saberlo todo! Los tiempos de la memorización de grandes subrutinas de código, algoritmos y sentencias se terminaron. Un programador no debe sentirse inferior o “menos inteligente” por buscar código en Google.

Lo primero es que todo el mundo en algún momento necesita referencia. Segundo, no es nociva la práctica de imitar y copiar código de otra persona. ¡Todo lo que está bien hecho es dignamente de ser copiado!

Al final, ¿A a tu cliente o empleador le importa si el código es tuyo o lo copias de otro? ¡NO! Lo que importa es el resultado entregado. Que el software realice la función esperada en el tiempo esperado. Punto.

No todos los programadores son creados iguales.

Sí, ya sé, no es políticamente correcto realizar una afirmación así, pero la realidad es que dentro de un grupo de programadores siempre hay uno o dos que son mucho más productivos que el resto. He sido testigo de observar como un programador Sénior —10 años de experiencia escribiendo código—  puede ser 10x, 50x 0 100x menos productivo que un programador Junior.

Es más, estoy cansando ver como programadores Sénior dependen enteramente de programadores Junio para que el trabajo se realice, y al final, ¿adivina quién se lleva el crédito? Ya sabes la respuesta.

Ya sabes la respuesta.

Si sólo conoces un lenguaje de programación, no importa que tan bien lo domines, no eres buen programador.

Tengo la firma creencia —hasta que alguien me demuestre lo contrario— que aquel programador que sólo domina un lenguaje de programación no es buen programador.

Dice Charlie Munger, uno de los hombres más inteligentes y mano derecha de Warren Buffett: “Si tu única herramienta es un martillo, todos los problemas te parecerán a un clavo.” Todos los lenguajes de programación tienen sus fortalezas y debilidades. No es verdad que un lenguaje de programación específico es “One-size-fit-all-solution” a todos los problemas. Un razonamiento como este es puramente mediocre y necio.

Por lo tanto, es fundamental para convertirse en buen programador el dominio de varios lenguajes de programación. Un dominio de varios lenguajes demuestra una actitud de explorativa e inquisitiva para la resolución de problemas. Lo contrario es una mentalidad cerrada y atrapada por una actitud dogmatica hacia un tipo de tecnología o lenguaje de programación en particular.

Esto es una advertencia a todos aquellos programadores que les gusta “cerrar filas” y casarse con un lenguaje de programación en particular.

“Java es lo mejor”, “.NET es lo mejor” o “Python es lo mejor”.

¡No repitas estos mantras!

No entiendo por qué para aprender programación hay que utilizar un lenguaje “fácil”.

Cuando estaba en la universidad el primer lenguaje de programación que aprendías era Pascal. En aquellos tiempos —finales de los 90’s y principio de los 2000’s—Pasacal era considerado el lenguaje idóneo para un principiante.

Pascal ocultaba algunas “complejidades” al programador como el manejo de memoria y punteros haciendole “la vida más fácil”. Hoy en día el pensamiento NO es diferente, sólo cambió de nombre: Python. Por todas partes que se que habla qué lenguaje debo utilizar para aprender a programar la respuesta es: Python o en su defecto Ruby. Estas dos son las opciones del momento. La supuesta ventaja de estos lenguajes de programación es que Python y Ruby proveen al programador miles de librería con miles de funciones prefabricas.

Por todas partes se habla: “¿Qué lenguaje debe utilizar un principiante para aprender a programar?”. La respuesta: Python o en su defecto Ruby. Estas dos son las opciones del momento. La supuesta ventaja de estos lenguajes de programación es que proveen al programador miles de librerías y funciones prefabricas. Ocultando la complejidad de realizar ciertas tareas.

¿No debería un aprendiz de programación aprender a construir sus propias funciones? Creo que la lógica es la siguiente: primero, “cómo construyo tal función”, luego, mucho después, viene el “cómo utilizo tal libraría”. No a la inversa.

El secuestro del código es un crimen.

Muchos programadores tienen la creencia que, si sólo ellos y nada más ellos conocen y son capaces de entender el código —muchos no escriben comentarios dentro del código con esta intención malsana— su valor ante un empleador aumentará.

La premisa es la siguiente:

“Si nadie más puede entender y modificar el código, la empresa estará “amarrada” a mí y no me pueden expulsar del empleo.”

No hay nada más estúpido que una actitud como así.

Primero, ese empleo no es de tu propiedad. Segundo, la empresa te paga para emplear tu tiempo en desarrollar código que al final tampoco es tu propiedad. Tercero, si por alguna razón no estás hábil para desempeñar tu trabajo, otro programador cogerá “la lucha del siglo” en tratar de descifrar qué hace tu código. Cuarto, si eres un “secuestrador de código” te estás condenando a ti mismo a no subir de puesto de trabajo. Indirectamente estás estancándote en esa posición, algo que a la larga no es rentable.

El desarrollo de software es un trabajo.

Sí sé que muchos programadores sienten pasión por esta actividad intelectualmente estimulante. Pero ciertamente veo una tendencia, principalmente entre los más jóvenes, de ver la programación como un fin y no como un medio.

Esta actitud se refleja de dos maneras: (1) En el ámbito laboral.  Al momento de pensar en una solución el enfoque del programador es meramente en los aspectos tecnológicos: qué lenguaje de programación utilizo, cuál IDE, etc.

(2) En el ámbito personal ponderan su pasión por encima de la familia, amigos, novio(a)s, esposo(a), hijos, etc. Una actitud como esta trae a la larga dolor y frustración.

¿Por qué?

(1) No es posible ser un programador productivo enfocándonos meramente en los detalles tecnológicos. Lo más importante es obtener un resultado de la forma más simple, elegante y económica posible. Sin importar la tecnología empleada.

(2) No es sostenible en el tiempo ser feliz si nuestros seres queridos son colocados en un segundo plano dentro del orden de prioridades. Sí yo sé que te gusta mucho estar pendiente de los foros online con tus amigos de la comunidad (Python Ruby, Java, .NET, etc.) y juntarte en bares a tomar cerveza para hablar de las últimas subrutinas y errores que estás enfrentando en tu último proyecto que va a “cambiar el mundo”.

Todo eso está bien pero en su debido tiempo. No es necesario sacrificar lo más importante que tenemos que son nuestros seres queridos.

Si eres desarrollador debes de ser capaz de escribir código.

La declaración anterior parece algo ilógica, pero aunque usted no lo crea, hay “programadores” que no son capaces de escribir un programa desde cero. Estos necesitan obligatoriamente tener un código de referencia para resolver cualquier problemita simple.

Hace un tiempo atrás, era empleado en una empresa de telefonía IP y parte de mi trabajo era entrevistar los nuevos candidatos que entraban a nuestro equipo. Recuerdo que en múltiples ocasiones entrevisté programadores que le decía: “Escríbeme en una hoja, en tu lenguaje favorito o si quieres en pseudocódigo, un programa que calcule el área de un cubo”. ¿Adivina? !No podían!

A veces les daba un programa sencillo de 15 líneas escrito en Java para que me dijeran qué hacía. No podían. Ciertamente eran incapaces de escribir o entender una línea de código sin utilizar algún elemento de referencia (manual, libro, Goolge, etc.) que les permitiera copiar la sintaxis. Y eso, que la mayoría traían copia de su título de Ingeniero en Sistema de la universidad.

Fuente: capacityacademy

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *