15 cosas que me hubiera gustado saber cuando empecé

Esto me hubiera salvado tiempo y estrés.
Una ruta de aprendizaje de desarrollo de software puede ser bastante extensa, es natural querer saberlo todo desde que se va empezando, pero en el intento es fácil caer en el síndrome del impostor. El estar bien informado o al menos tener un buen punto de partida puede ser un punto clave en tu carrera.
Ya sea que estés contra tiempo con una tarea del colegio, un requerimiento del trabajo, o un proyecto personal, hay que informarse de las buenas prácticas y el estado en el mercado, para no crear herramientas irrelevantes o invertir nuestro tiempo aprendiendo una tecnología que de pronto no es la mejor para tu situación.
Personalmente me ha tocado buscar un bug por horas, tratar de migrar sistemas, cambiar partes replicadas del código, cambiar configuraciones de seguridad, y estar atrapado en stack overflow o YouTube viendo tutoriales toda la noche. Por eso te quiero brindar un par de tips.
1. Escoge la mejor herramienta para empezar
Cuando estaba en el colegio recuerdo que me dejaban proyectos y me permitían escoger la tecnología, cualquiera que vaya empezando diría que eso es bueno, el problema es que no sabía qué escoger.
Algunos decían "si es aplicación de escritorio debes usar Java o C#" o "si programas web deberías usar PHP" entre otras cosas... Esto me causó mucha confusión y perdí tiempo aprendiendo tecnologías que hoy en día no uso (no digo que sea malo del todo porque en el camino aprendí mucho) pero hay una cosa que necesitas saber.
Casi cualquier tecnología te ayuda a realizar el trabajo pero algunas te van a consumir mucho tiempo.
Analicemos la oración anterior. Mencioné que antes creía que sólo podía usar una tecnología para algo en específico, pero en realidad, con el mismo lenguaje de programación en algunos casos hubiera podido hacer muchas cosas.
Por ejemplo, JavaScript puede correr en el browser y en el servidor, puedes escribir backend y frontend, además puedes usar Electron para crear una app de escritorio, y si necesitas hacer una app nativa todo lo que necesitas sería React native, Ionic, Quasar u otras librerías pero el punto es que hay opciones y de haber aprendido JavaScript desde el inicio no hubiera perdido el tiempo.
Al salir del colegio me topé con herramientas con las que hubiera podido hacer el proyecto de Expo Tec en una semana! CMS y manejos de sesiones que ya vienen hechos, es nada más de buscar, y eso te va a ahorrar mucho tiempo.
Pd: Por favor ya no uses subllime o notepad, para eso está VS Code 😉
2. La consola es tu amiga
Cuando estaba en clases, todo iba bien hasta que el profesor sacaba la consola, le tememos y no sabemos lo que está pasando al principio porque estamos acostumbrados a interactuar con una interfaz.
Recuerdo que iba entendiendo y cuando sacaba la consola me distraía y ya no entendía más.
Hay herramientas de consola que te harán la vida más fácil, ya sea para generar código, manejar dependencias, control de versiones y hasta poner aplicativos en producción.
3. Verdaderamente sabes qué es backend y frontend?
El saber la diferencia entre backend y frontend te ayuda a comprender como funciona la web mejor, cuando vayas a poner tus proyectos en producción y entiendas que el sistema de archivos tuyo no es igual al del servidor, no vas a tener problemas con rutas de archivos y la comunicación entre unos y otros.
Entenderás la importancia de la seguridad, que hay código que nunca debe llegar al cliente, que la forma en que consumes los recursos del backend importa, y mucho. Entenderás cómo se puede segmentar y distribuir un sistema más grande y que puedes utilizar distintos protocolos para que se comuniquen.
Puede no sonar tan claro, pero créeme que es importante tener claro como funcionan desde el inicio.
4. Entiende los compiladores
A veces me pasaba que veía archivos con extensiones que me sonaban raras y desconocidas, me preguntaba cómo funciona TypeScript si el navegador interpreta JavaScript. 🤔
Me preguntaba como hacer que un sólo código fuera compatible con todos los browser, qué es LESS qué es SASS...
Estos son compiladores, y varían en su funcionalidad, ya sea para añadir una sintaxis distinta al lenguaje, o para hacerlo compatible con otros browsers o dispositivos.
Lo que necesitas saber, es que no debes perder tiempo tratando de ejecutar uno de estos archivos, estos necesitan ser compilados, para que luego puedan ser interpretados.
5. Publica tus proyectos
Durante el estudio creas proyectos que te ayudan a validar tu conocimiento, algunos de estos llevan meses de trabajo y muestran variedad de skills, en el futuro la única forma de mostrar experiencia es mostrando la aplicación de tu conocimiento.
Poner las cosas en producción no es difícil.
El miedo o desconocimiento para poner los proyectos en producción evitan que lo hagas, y hoy en día hay servicios como Netlify, Vercel y Heroku que nos hacen la vida mucho más fácil.
6. Utiliza controlador de versiones
Yo me gradué de técnico en desarrollo de software sin saber usar git 💀
Si supieras que ya no debes pasarte el código por llave maya, que puedes volver a algún punto del código en algún momento específico, que te ayuda a colaborar con tus compañeros y lo fácil que es, sería lo primero que aprendes y de hecho debería estar más arriba en la lista.
Por el miedo a la consola la gente no lo usa al principio, pero IDEs como VS Code y otros lo tienen integrado y no vas a tener que lidiar mucho con la consola!
Si debes olvidarte de todos los consejos y acordarte de uno, acuérdate de este.
7. Pon en práctica lo que vas aprendiendo
Al incio es tanto lo que quieres aprender que no tomas el tiempo de ponerlo el práctica.
Esto te lleva a invertir el doble de tiempo cuando tengas que volver a ver los tutoriales.
El ir practicando te permite tener código en tu máquina que puedes leer y reutilizar después, en lugar de tener que estar re-aprendiendo las cosas una y otra vez.
8. Aprende a debuggear
No más console.log a lo largo del código. El saber donde está el error, cómo va cambiando la información y analizar el código paso a paso te va a ahorrar horas tratando de encontrar un bug.
Por suerte los browsers modernos tienen muy buenas herramientas para debuggear de las que vas a ir conociendo poco a poco, y hasta puedes analizar el desempeño de tu aplicación.
9. No sólo vendas la idea de un sitio web
No sólo hagan proyectos de sitio web, crea un SaaS, vende un stack ya sea JAM stack, MERN stack, LAMP (mentira 😉), o untipo de aplicación SPA, PWA o algo distinto que llame la atención.
Crea una api y consúmela, crea una buena documentación con Postman y vende planes!
Hay mucha variedad en el mercado, y cosas que son fáciles de implementar como para sólo seguir haciendo páginas web.
10. Aprende convenciones y buenas prácticas
Cuando empieces a programar con algo, busca su styleguide, o convenciones, créeme que vas a pasar mucho tiempo leyendo código, o buscando información en internet, y hay herramientas que siguen "convención sobre configuración", por lo que necesitas conocerlas para entender su funcionamiento y prevenir errores.
Por favor aprende cómo funciona el código asíncrono cuando escojas tu herramienta.
11. Variables por referencia
Cuando utilizas variables por referencia, es importante saber exactamente dónde estás cambiando su valor, ya que a veces en el código por malas prácticas, hay alguna parte alterando el valor de una variable por referencia y no tenemos idea de donde viene un resultado.
Utiliza funciones puras que no tengan efectos secundarios difíciles de alcanzar.
12. Tienes mucho que aprender de seguridad
Créeme, enviar datos por post request en vez de get request no es toda la seguridad que necesitas implementar.
En la web estás muy expuesto a distintos ataques, infórmate y aprende cuáles son los más comunes y a cuáles has sido más vulnerable en el pasado.
Por suerte puedes escoger frameworks que ya tengan implementado un buen sistema de seguridad y no tener que preocuparte mucho por eso.
13. Utiliza buenas fuentes de información
Google está lleno de contenido, incluso es mejor si hablas inglés, ya que no hay tantos tutoriales populares y actualizados en español, pero hay creadores de contenido como Traversy Media, WDS, James Q Quick, Ben Awad entre otros, que tienen cheatsheets, cursos, explicaciones de conceptos y demás, suficientemente claros y de calidad.
Además escuelas en línea, por mucho mi favorita es Platzi y es donde he aprendido el 60% de lo que sé hoy en día, puedes usar mi link para subscribirte y así ambos obtenemos un mes gratis.
14. No inventes la rueda
Existen librerías para trabajar con fechas, para hacer requests, para trabajar con arreglos y objetos entre otra gran lista de librerías que puedes usar para tareas pequeñas, es nada más buscar, esto es más conveniente muchas veces que intentar hacer las cosas desde 0.
15. Mira gente programando
Es cierto que mientras que unos traen el talento, otros deben dedicar más tiempo para pensar como un desarrollador, y eso está bien.
En los canales y creadores de contenido que mencioné antes hay videos bastante avanzados y casos de la vida real que te van a ayudar a resolver problemas, después de un tiempo vas a notar que piensas de la misma forma que ellos.
Bonus tips
- Aprende poco a poco, al incio saber una sola tecnología y partir de ahí está bien.
- Sé paciente y aprende a tomar descansos para no frustrarte.
- Si ves términos que no conoces búscalos antes de que se te olviden.
- Encuentra el área que más te gusta, no todos deben ser full stack.
- Busca tener presencia web.
- Si estás en posibilidad de ayudar, hazlo. (A menos que estés en el trabajo, ten cuidado porque debes ser un recurso indispensable).
