¡A la mierda la Programación!

Hubo una época en mi carrera como Programador donde sentía que me estaba quedando atrás en conocimientos, sentía que siempre había algo que aprender, y hasta sentía que era tonto por no saber todo lo que estaba saliendo, era frustrante no llevar el hilo de todo, sentir que era malo en lo que estaba haciendo, ya que me era imposible aprender todo lo que se escuchaba, y lo peor, cada semana que pasaba, nuevas cosas aparecían.

Hubo una época en mi carrera como Programador donde sentía que me estaba quedando atrás en conocimientos, sentía que siempre había algo que aprender, y hasta sentía que era tonto por no saber todo lo que estaba saliendo, era frustrante no llevar el hilo de todo, sentir que era malo en lo que estaba haciendo, ya que me era imposible aprender todo lo que se escuchaba, y lo peor, cada semana que pasaba, nuevas cosas aparecían.

Un día entendí que el problema no era yo, el problema era la creciente evolución de esta área, todo fue mejorando en mi cuando me di cuenta que en realidad, poco de todo lo que estaba saliendo, realmente era algo que necesitaba aprender.

Esto fue la parte difícil, aceptar que no tenemos que aprender todo, solo tenemos que aprender lo que necesitamos, pero: ¿Cómo saber que es lo que necesitamos? Probando por curiosidad, algunos minutos del día algo que nos llame la atención, y tener un juicio sin fanatismo para aceptar si eso nos servirá o solo es algo que tiene mucho hype.

Posterior a esto, al poder decidir que aprender y que no, todo se siente más relajado.

El aprendizaje debe estar orientado a objetivos, puedes tener hobbies de lectura sobre temas que te llamen la atención y no pasa nada, pero el querer aprender todo lo que esta saliendo solo por sentirse que te quedas atrás es un error que cometemos muchos que estamos dentro de la Programación.

He lanzado un video, donde las personas se han sentido identificadas, igual, quizá, puede servirte verlo:

Lo que se aprende al terminar un proyecto de software

A través de los años he terminado bastantes proyectos como programador líder o arquitecto de software, y he encontrado un patrón común en todos ellos, y el patrón común es el siguiente pensamiento: si uno comenzara nuevamente el proyecto, lo haría mejor.

Esto nos trae cierta confusión, ya que nos hace pensar que lo hicimos de una manera no correcta, y nos hace plantearnos si es que realmente no somos buenos.

En sí, esta situación es de lo más normal, siendo parte del aprendizaje, la experiencia es eso, aprender a través de errar, el errar no es malo, el errar siempre ayuda, y sobre todo, ayuda más cuando ya no erramos donde hemos errado.

Con la experiencia que vamos ganando, vamos mejorando en tomar decisiones correctas, que harán reflejo en nuestros nuevos software que haremos en el futuro.

También es importante la retroalimentación del equipo de trabajo, y porque no, del usuario final, ya que el usuario final es el que vestirá nuestra creación.

Con el tiempo nos daremos cuenta que nos costara menos trabajo hacer ciertas tareas que en su momento fueron nuestro martirio, encontraremos soluciones de manera intuitiva, y pareceremos artesanos esculpiendo código como maestros.

Al finalizar un proyecto, es de mucha ayuda analizar y pensar de que otra forma lo hubiéramos hecho, y  así, ver huecos donde nos los habíamos visto, y veras que esos huecos ahí están, esas oportunidades de ahorro de tiempo al trabajar (Una abstracción mejor, una implementación de clases más apta).

Al mirar atrás (al ver mis códigos viejos), hace algunos años me sentía asustado, en como un sistema parecido a un espagueti está ahí funcionando, en la espera a que alguien tumbe esa torre de jenga, pero ahora, al mirar esos códigos, los veo como fuertes cimientos los cuales han forjado la experiencia que tengo ahora, en lo mismo de párrafos arriba, en el errar y mejorar.

El consejo que le doy a toda persona que comienza a programar es: siempre hay distintas formas de llegar a la solución, y siempre hay unas mejores que otras, con los años encontraremos esos fósiles de abstracción, pero por ahora diviértete experimentando, escarbando, y pronto miraras atrás y dirás: ¡Mira ese jenga! Cuando lo he armado lo he dejado tan perfectamente balanceado que sigue de pie.

Si llegaste hasta aquí, te agradezco bastante.

¿Cómo aprender un nuevo lenguaje de programación?

Adentrarnos en un nuevo lenguaje de programación es un proceso que más de una vez va a pasarnos en nuestra carrera como programadores.

En mi historia he trabajado con más de 10 lenguajes de programación a lo largo de 20 años programando, y puedo decir que es ya un proceso común para mi aprender (o re-aprender) nuevos lenguajes de programación.

En mi experiencia puedo darte algunos consejos de cómo es que yo aprendo un nuevo lenguaje (no framework) de programación y es lo siguiente.

Fundamentos del lenguaje

Siempre, lo primero que hago es ir a ver los fundamentos del lenguaje, es decir, las cosas básicas del mismo, sin importar que tenga experiencia en otros lenguajes, es bueno no suponer, la suposición de creer que es igual una palabra reservada en un lenguaje que en otro es un error al cual no debemos caer (por ejemplo la palabra reservada var de javascript que es muy distinta a la misma palabra var en c# por ejemplo).

Los fundamentos van desde como declarar una variable, que paradigmas soporta el lenguaje (orientado a objetos, funcional, estructurado), como declarar una clase, si el lenguaje soporta interfaces o no, las cualidades únicas del lenguaje, las debilidades y ventajas del lenguaje son importantes también, pero sobre todo ir a este lenguaje nuevo como una persona que se adentrara sin suposiciones traídas de otros lenguajes de programación.

Documentación oficial

Para leer sobre los fundamentos, cuando aprendo un lenguaje de programación que tiene gran cantidad de apoyo, la documentación oficial siempre nos dará un camino sobre las cualidades de este.

La documentación oficial, sobre todo en inglés, ayuda dándonos lo correcto, lo oficial, y de primera mano la información correcta de cómo utilizar el lenguaje.

Antes de tomar un curso, te recomiendo ir a la documentación oficial.

Cursos

Una vez que se han leído los fundamentos, que se ha ido a la documentación oficial, ya podemos tener una base sólida para tomar un curso, ¿Por qué no antes? Pues porque necesitamos la base para poder tener un criterio del curso que tomaremos, hay cursos buenos y malos, pero para saber si estamos perdiendo el tiempo o no, necesitamos este criterio.

Los cursos son un complemento en el aprendizaje, pero es importante tener conocimiento por lo menos base antes de tomarlo, ya que algunos cursos podrían mal educarnos, o no darnos las bases que la documentación oficial ya a este punto nos habrá brindado.

Al tomar un curso ya sea de paga o gratuito hay que leer lo que comenta la gente, la ventaja de youtube es que podemos ir a los comentarios y leer sobre que va el curso, la ventaja en algunas plataformas de paga es que podemos ver lo que la gente dice del curso, es bueno antes de pagar saber si por lo que se va a pagar vale la pena.

Programar

Suena como algo obvio, pero lo he puesto ya que no se gana nada con solo leer, hay que darle al código, no hay buen corredor que sea buen corredor solo leyendo, hay que correr, hay que errar, hay que aprender de los errores, y un consejo es ir más allá del típico “Get Started” de la documentación, y puedes hacerlo vislumbrando algo que puedas hacer que sea utilizado por alguien, una aplicación básica que tenga la solución a algo básico.

Por ejemplo, si es un lenguaje para aplicaciones móviles, pues crear una app que resuelva alguna tarea de la vida diaria ya sea personal o de algún conocido, esto nos ira dando pautas de que ir investigando para ir solucionando las distintas partes de la aplicación. Esto ira forjando un camino orgánico de investigación, ya que tendrás un fin y objetivo por el cual puedes ir investigando, aprendiendo y sobre todo programando.

Comunidades

Las comunidades son parte esencial en el aprendizaje, ya que brindan un apoyo de compañerismo, apoyándonos en momento cuando caigamos en bugs endemoniados, o dudas sobre el lenguaje que estamos adentrándonos.

Por suerte, hoy en día las comunidades las podemos encontrar desde foro, hasta en slack, telegram o discord.

Es bueno involucrarnos con comunidades, ya que podemos tener varios puntos de vista extras, que nos podrán dar más objetividad a nuestro conocimiento.

Conclusión

Espero estos consejos te sirvan, y sobre todo, entender que para aprender un nuevo lenguaje de programación, se debe tener un propósito por el cual deseamos aprenderlo, ya sea laboral, ya sea por gusto, pero nunca que sea porque lo escuchamos como el lenguaje de moda, no caigamos en fanatismos.