¡No aprendas ningún lenguaje de programación!

Wuilliam Alexander Lacruz Moreno
PeYa Tech
Published in
4 min readMay 11, 2021

Aprender un lenguaje de programación y comenzar a dar tus primeros pasos es solo cuestión de días (muy pocos de hecho), pero hay muchos factores que lo hacen posible. La idea es repasar algunos de estos factores para que puedas enfocar tu aprendizaje en lo que realmente importa y con ello lograr un mejor atractivo para aquellas empresas que te necesitan(mos).

He sido desarrollador de software por más de 15 años, lo cual me ha llevado a ver una gran cantidad de código, unas veces obras maestras, otras que apenas lograba descifrar lo que miraba, ya que el código de programación requiere de técnica e ingenio, creatividad y una cuota de talento, como si se tratara de una obra de arte.

Lo que diferenciaba las buenas obras de las malas, siempre estaba en que las primeras eran fáciles de leer, con una organización simple e intuitiva, como leer un buen libro, con su introducción, con su desarrollo, dificultades, complicaciones y un gran final.

Aquellas obras no tan lindas, probablemente te lanzan en la cara un final inesperado, sin embargo la historia relata algo que no comprendes, que no sigue un hilo, que no te atrapa, o que te grita que lo dejes de leer.

En programación escribes instrucciones que una computadora interpreta, y no importa si es una mala historia, ella ejecutará estas instrucciones y lo hará bien.

Sin embargo, la historia en definitiva no es para ella, es para el YO del futuro, para el TI del futuro, para tu equipo de trabajo, y es muy probable que esté incompleta, necesitará un cambio de escena, nuevos personajes, nuevos paisajes, y estos deben encajar muy bien en la narrativa actual.

Entonces, ¿cómo puedes lograr esa buena historia? No importa en que lenguaje de programación escribas tu historia, debes hacer uso de un sin fin de técnicas para lograrlo, la buena noticia es que hoy vas a conocer las que, según mi criterio profesional, te van a garantizar mejoras sustanciales:

Lógica de programación: para desarrollar software se necesita un pensamiento abstracto, lógico, ordenado, ingenioso, y son las matemáticas una gran herramienta para desarrollar estas habilidades, así que debes tenerlas a la mano siempre. Debes ejercitar tu pensamiento matemático, matemáticas simples, nada fuera de este mundo pero sí orientadas al desarrollo de software como: sumar, restar, multiplicar, dividir (en sistema decimal/binario/octal/hexadecimal), teoría de números, sistema de coordenadas cartesianas, tablas de verdad, entre otras.

Estructuras de datos: organizar aquellos datos con los que trabajas es crucial.Una mala decisión pudiera significar en mala performance, mala utilización de tus recursos, costos innecesarios, desperdicio de tiempo. Existen numerosas estructuras, pero debes familiarizarte con algunas como: Diccionarios o Mapas, Listas Enlazadas (Linked Lists), Doblemente Enlazadas (Double Linked Lists), Grafos (Graphs), Arreglos (Arrays), Cadenas (Strings), Pilas (Stacks), Colas (Queues), por mencionar algunas.

Algoritmos: trabajar con las estructuras que mencioné antes ha sido una constante durante años, y nos ha demostrado que solucionan muchos problemas que has tenido y que tendrás en el futuro. Son un tema tan recurrente que hay libros que lo explican con gran detalle. Debes instruirte en los algoritmos más populares y aprender a escribirlos por ti mismo, eso te dará una nueva perspectiva diferente del problema y aprenderás mucho en el camino. Estos algoritmos pueden ser buscar, ordenar estructuras de datos, recorrer Grafos, entre otros.

Patrones de diseño: cuando se está desarrollando un software, una historia, un edificio, existen muchos procedimientos que son comunes. Las puertas tienen distribuciones parecidas, el ascensor, las escaleras, todos los libros tienen una estructura similar. Del mismo modo, el código tiene formas de escribirse, y estructuras comunes para expresar la intención del mismo. Existen entonces patrones que podemos seguir para solucionar problemas muy variados. Toma un libro de Patrones de Diseño e indaga acerca de: Singleton, Command, Factory, Adapter, Decorator, Facade, Mediator, Memento, Strategy, entre muchos otros. Si nunca has leído de ellos, es tu momento, créeme que te van a ser muy útiles.

Testing: todo el código que hagas, toda historia que narres, debe tener un soporte, una constancia de que lo se hace cumple con lo que se nos ha pedido. Tu código muestra cuán profesional eres para escribirlo y además cuán seguro y confiable es. Debe hacer una cosa, y esa cosa que haga debe hacerla muy bien. Debes familiarizarte con técnicas como: Unit Testing, Test Driven Development (TDD), Behavior Driven Development (BDD), Domain Driven Development (DDD) y como testear con DDD.

Predisposición para aprender sobre cualquier tema: la tecnología hoy abarca múltiples caminos y nos acompaña en todo momento, todo se tropieza en algún punto con el mundo digital. Es importante que este mundo tenga detrás una gran historia, contada por grandes profesionales cuyo trabajo deje expuesto lo bueno que es con solo darle una mirada a su relato. Deja que tu código hable por ti, pero esfuérzate para que sea cada vez mejor.

Y no te quedes con esto, el mundo está lleno de código por todos lados, grandes historias esperando a que las encuentres, ¿A qué me refiero? Lee el código de esa aplicación que tanto usas, mira las formas ingeniosas cómo han resuelto sus problemas, mira sus diseños y estructuras, sé pragmático y pruébalo tu mismo.

Entonces ¿aprendo algún lenguaje?

No. No aprendas ningún lenguaje de programación. Antes aprende bien a programar, aprende a solucionar problemas, aprende a desarrollarlos en papel, en un whiteboard, y solo entonces será momento de escribir, ya con el tiempo verás que tus habilidades van mejorando, tus decisiones toman distintos caminos, vas a notar que tus historias serán cada vez más profundas y detalladas. De esta forma, podrás ser el candidato perfecto para trabajar con los grandes equipos de esas empresas que admiras, ¿y lo mejor? podrás ser parte de ellos.

--

--