Como aprender a programar se ha convertido en una profesion que cualquier persona puede aprender, es normal que la oferta de desarrolladores este saturada de Programadores de todo tipo, desde Juniors hasta personas que ya llevan varios años programando.
Pero esto no quiere decir que no puedas ponerte a la par, porque dependiendo de a que habilidades le dediques tiempo a mejorar esto te puede ayudar a obtener empleos o incluso darte un gran ventaja cuando estes compitiendo por algun trabajo.
Así que en este video te voy a listar 5 habilidades que todo programador deberia tener, adicionalmente de solo saber escribir en algun lenguaje de prgoramacion, lo que le dara una ventaja sobre muchos otros que solo copian y pegan codigo.
Se Resolutivo
Cuando estas en un equipo de desarrollo quizas has notado que hay por lo general una persona a la que siempre se le consulta o se le considera que puede resolver más problemas que el resto, y esto no es asi que porque se crea que esa persona pueda resolverlo todo sino porque tiene mas recursos a su favor o al menos sabe usarlos más beneficiosamente
Es decir puede encontrar sus soluciones, ejemplos, ideas y resolver dudas en sitios como
- StackOverflow
- Github Issues
- Leer la Documentación
- Leer Otros Repositorios de Ejemplo
- Consultar en comunidades como Discord o Discourse de cada proyecto.
- Saber cuando consultar a un compañero de trabajo
- ChatGPT
Estas personas cuando reciben un problema, no esperan que todo ya este dado, primero investigan en multiples recursos y sumando a la experiencia muchas veces es mas probable que lleguen a una solucion.
La razon es que para que puedan saber usar las webs anteriores han tenido que crear mas proyectos, y a medida que han ido resolviendo dudas, errores y generando codigo, ya han usado todos esos recursos continuamnete, por lo que se les es mas facil saber navegar entre ese mar de informacion y multiples recursos.
Y de hecho esto de buscar multiples recursos es mucho más valioso ahora, sobre todo en esta epoca en donde muchos desarrolladores Juniors creen que todo lo puede hacer solo usando ChatGPT. Y Aunque por supuesto que es util, el ser resolutivo tambien consiste estos dias en saber como darle un prompt correcto al chat, saber en que tipo de temas es bueno respondiendo, y ser precavido en tomar las respuestas de este.
Eficiencia de código
Cuando hablo de eficiencia en codigo estoy hablando de codigo que tenga buen rendimiento, que sea entendible y sea consistente.
El que tenga buen rendimiento esta mas relaciona a algoritmso y estructura de datos. Y yo se que no siempre vas a necesita implementar un Linked List o Heap, pero cuando una aplicacion genera muchos datos y se necseita leerloso manipulares es alli donde nos damos cuenta que estas consumen muchos recuros como memoria o espacio de almacenamiento.
Asi que el entender que tipo de algoritmo o estructura de dato que esta usando nos puede ayudar a detectar de donde viene ese consumo de recursos o mejorarlo.
Si trabajas mucho en el backend puedes que necesites muchas veces crear este tipo de Estructuras, crear indexes methods, y si conoces cosas como esta te da una ventaja sobre el resto al poder implementar codigo que se ejecuta velozmente a medida que la cantidad de datos pueda seguira aumentando
y En cuanto a codigo entendible, este esta relacionado a tus herramientas que puedes usar en tu propio editor de codigo como Pueden ser herramientas de refactorizacion, de Linting, o de formateo de codigo.
Y en cuanto a codigo consistente podriamos hablar de utilizar un mismo paradigma de codigo a lo largo de todo el proyecto, por ejemplo si tu aplicaicon backend usa el paradigma Orientado a objetos y toda tu aplicacion esta lleva de clases, decoradores, y propiedades, el resto del nuevo codigo lo debes seguir escribiendo de esa forma, respetando y adaptandote al estilo que se decidio para esa aplicacion.
El entender esto puede ayudarte a que no solo te sea mas facil tomar nuevos proyectos, sino que te valoren mas al poder seguir los mismos lineamientos de un proyecto.
Automiza tareas repetitivas con Scripts
Por mas moderna que sea la empresa en la que trabajas, es muy probable que tarde o temprano necesites automatizar tareas, el responder correos, el mover muchos archivos a carpetas o reorganizarlas, el generar documentos con reportes, o comandos que tipicamente ejecutas en tu trabajo.
Todo esto se puede automatizar con cualquier lenguaje de programacion, Aunque por supuesto esto tambien requiere conocer como funciona un poco mejor tu sistema operativo, el sistema de archivos y comandos del sistema, pero el entenderlo no solo te va a ayudar a ser mejor programador sino que puedes ahorrar tiempo.
Los desarrolladores que pueden hacer esto son muy valiosos, porque no solo demuestran que pueden ser eficientes, sino por que tienen muy metida la idea que casi cualquier cosa se puede resolver con codigo, y esto demuestra tambien su habilidad tecnica al crear proyectos de software.
Y como te dije puedes usar cualquier lenguaje de programacion para automatizar tareas, pero en lo personal te recomendaria los que tipicamente se usan para esto, que son los lenguajes de Scripting, como puede ser Python, Javascript con Nodejs y Bash Script, que son bastante popular y hay mucha informacion para poder aprenderlos.
De hecho aqui te he hablado de Scripts del sistema operativo, pero hay quien tambien crea scripts de automatizacion para el navegador desarrollando extensiones de chrome o crea scripts para recolectar informacion usando WebScrapping y pasandole esta informacion a Modelos inteligentes como ChatGPT, todo de forma automatica, lo que seria unos pasos extras a lo que te menciono.
Git a profundidad
Git no estoy hablando de las bases sino de como usarlo en profundidad, como resolver conflictos cuando se hace un merge, hacer un rebase cuando sea necesario, y evitar hacer un desorden en el historial de commits,
Es decir cualquier desarrollador que pueda entender Git y pueda:
- Hace un Cherry-pick commit, que significa escoger un commit de una rama y aplicarlo a otra
- Mover camios a ramas de producción o Staging
- Restarurar Commits o mover commits especificos de una area a otra
Todo desarrollador que pueda dominar Git más alla de lo basico, es un plus muy grande porque en un proyecot real cuando se trabaja con multiples cambios y multiples desarrolladores el que pueda llegar a resolver o darse cuenta de errores en el historial de cambios o de otros desarrolladores evitara muchos retrasos de entrega de proyectos.
Ademas que podra obtener mas habilidades de controlar el codigo y que pueden ayudarle a resolver algo más rapidamente si puede controlar el historial de cambios a lo largo del tiempo.
Aprende a comunicarte
Aunque pareciera que con escribir codigo es suficiente para obtener un empleo o ser valioso, en reliad tambien es necesario saber comunicar tus ideas, o al menos las relacionadas al proyecto, porque en un proyecto de software tipicamente se crea
requerimientos dudas problemas en codigo que pueden causar problemas a futuro
Conclusion
En fin habilidades tan simple de entender como esas pueden ayudarte a obtener un empleo simplemente porque si bien puede haber otros programadores alli afuera que llevan mas años que tu programando, los años por si solo no hacen la experiencia sino lo que has aprendido en esos años, y si aprendes a dominar esas habilidades utiles, es probable que puedan considerarte un elemento valioso para formar parte de un equipo de desarrollo.
Ahora estas no son las unicas habilidades, pero si son cosas que muchos programadores de a pocos no se preocupan en mejorar y solo se enfocan en generar codigo como si fuera lo unico importante, asi que en el error del resto, puedes encontrar tu ventaja. No lo desaproveches y estudia
Por supuesto todo esto, es adicionalmente a tus estudios del lenguaje como puede ser entender conceptos avanados como es asincornia, multithreading, y paradgimas, ademas tambien de a lo que ya se considera intrinsico a un desarrollador que es al adaptarse al cambio, es decri estar constantemente aprendiendo cosas nuevas ademas de tu area como puede ser saber herramientas CI/CD, herramientas de documentacion y testing.
Sumando todo esto a medida que vas a aprendiendo, te a alejando un poco de un desarrollador que solo crear apps a uno que realmente entiende lo que hace y eso es lo mas valioso en un profesional que desarrolla software.