¿Eres un buen programador?
Tags: improvement, software, habits, activities
Published: 2020-07-20 02:43:26

Desde que comencé a desarrollar software siempre he temido al hecho de no ser un buen programador, un miedo que se basaba en la curiosidad de comparar mis habilidades con el resto de mis colegas, de saber si seré capaz de completar las tareas que me designen, si mis soluciones serán las correctas, de saber si mi velocidad de desarrollo es la óptima, e inclusive, antes de ser contratado en algúna empresa o comenzar algún proyecto, el hecho de cuestionar si mis conocimientos eran suficientes.

Probablemente a ti te haya pasado algo similar, este proceso de dudar de tus capacidades para llevar a cabo cierta actividad es conocida como `síndrome del impostor`, en el podcast [chile, mole & tech](https://twitter.com/chilemoleytech) tienen un [episodio completo](https://anchor.fm/chilemoleytech/episodes/S1E14---El-Sndrome-del-Impostor-eghl20) respecto al tema por si te gustaría saber más al respecto.

En éste blog te compartiré un ciclo de actividades que me han hecho superar el síndrome del impostor a lo largo de mi carrera, inclusive si no sufres del síndrome del impostor, podrían ayudarte a mejorar bastante:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/16f7b6cnllerjsdvb80m.png)

## Aprende algo nuevo de tu tecnología favorita

Ya sea que tu rama sea backend, frontend, desarrollo móvil, ciencia de datos o cualquier otra, elije un lenguaje y/o un framework y aprende lo más que puedas de esa tecnología, intenta leer su documentación oficial, si se te complica demasiado, busca blogs o videos en youtube e intenta seguir los tutoriales que encuentres.

> En internet hay información gratuita de todo lo que necesites, sin embargo, si tienes la posibilidad, intenta invertir en recursos que te ayuden a aprenderlo, por ejemplo un curso de paga, no dudes en invertir en ellos, regularmente son recursos que te ayudan a aprender y a mejorar notablemente.

 

Si ya conoces las bases del lenguaje o tecnología, ahora céntrate en aprender buenas prácticas, intenta aprender patrónes de diseño y profundiza lo más que puedas respecto al lenguaje.

> Mi colega Juan Perdomo, esta escribiendo blogs de [patrones de diseño](https://kanabos.wordpress.com)) por si estás interesado en ellos.



## Practica

Con cada cosa nueva que aprendas, intenta crear un mini-proyecto en dónde utilices lo que aprendiste, intenta que tu propuesta de proyecto no sea muy complicada, por ejemplo, si aprendiste cómo crear e invocar funciones, entonces plantea un reto en dónde tengas que crear una serie de funciones, con diversos tipos de parámetros, con diversos valores de retorno y asegurate de llamarlas en algún lado.

> Si te sientes seguro de lo que sabes hasta ahora, en vez de crear un proyecto, intenta contribuir a algún proyecto open source, ésta es una de las mejores maneras que existen para dejar de lado el síndrome del impostor.



## Comparte

Hay una diferencia enorme entre un proyecto que se queda en un ambiente local y uno que es compartido en internet. En internet recibirás críticas de todo tipo, pero estoy seguro de que sabrás interpretarlas para mejorar lo que hiciste.

Si tu mini-proyecto es un script sencillo, no tienes que crear una págna web o un ejecutable perfecto, basta con que subas tu código a un repositorio como GitHub o GitLab. 

>  Para este paso, tendrás que dedicar un poco de tiempo para aprender a los comandos básicos de herramientas de control de versiones como lo es `git`. Por fortuna, hay muchos recursos gratuitos y de paga en los que te puedes apoyar para aprenderlo, si no encuentras algo, sientete libre de preguntar en los comentarios.

Crear el hábito de subir tu código a un repositorio, además de servirte como respaldo en caso de que algo suceda con tu computadora, te permite medir los avances que has tenido desde que comenzaste, y también podrías utilizar esto como un portafolio para alguna entevista de trabajo.

Por otro lado, no solo puedes compartir código, si conoces alguna manera de hacer las cosas, puedes escribir un blog o crear un apunte y compartirlo en tus redes sociales, esto también te deja mucho aprendizaje.

## Retroalimentación

Hazle llegar tu código a tus compañeros de trabajo, amigos programadores o si te sientes con un poco más de confianza, a grupos redes sociales como Facebook o algúna comunidad de la tecnología y pide algún mensaje de mejora, siempre mencionando tu tiempo de conocer la tecnología, esto ayudará a tus colegas a saber que tan duras pueden ser las críticas contigo.

No solo puedes preguntar si tu código esta bien o mal, puedes preguntar que podrías mejorar o de qué manera podría hacer más complicado tu mini-proyecto. Esto te dará ideas para seguir creando retos.



> A veces es muy complicado encontrar a alguien que te pueda apoyar dado que las personas tienen otras cosas que hacer, si gustas, pregunta por feedback en los comentarios y con suerte, yo o alguien con mayor experiencia en tu área pueda ayudarte.



Al igual, si tienes más experiencia, tomate un tiempo apra revisar el código de otras personas y brindale los mejores consejos.



## Escribe pruebas automatizadas

En general, éste punto es uno de los que yo he aprendido recientemente y, siendo honesto, no es fácil adquirir una cultura de programación de pruebas, sin embargo, tiene muchísimos beneficios. Concéntrate en entender cuál es el propósito de una prueba unitaria, cómo se programan y cómo ejecutarlas.

Intenta agregar pruebas para cada uno de los mini-proyectos que has desarrollado, esto te dará la pauta para comenzar desde cosas sencillas hasta lo más complejo que hayas hecho.

 

## Mejora (Refactoriza)

De vez en cuando, vuelve a alguno de tus proyectos anteriores y con ayuda de las pruebas automatizadas, mejora el código que tenías, ya sea que mejores el performance, mejores la forma en que se hizo o que le des estílo a tu código, este hábito te permitirá medir el progreso que has tenido a lo largo de tu carrera y te dará la confianza necesaria para afrontar nuevos retos.



## Conclusión

Este ciclo de actividades es una forma de llegar a tu siguiente versión de programador, en mi caso logré hacer de estas actividades un hábito e implementarlas en proyectos open source ha sido la mejor manera de mejorar la confianza en mi mismo.

Espero que  el contenido de este blog te haya sido de mucha ayuda. Recuerda que tus comentarios siempre son bienvenidos, si tienes algo que agregar o necesitas ayuda en un punto específico, con gusto te ayudaré.

¡Hasta la próxima!