Etiquetas: ,

Ahora que estamos en verano es un buen momento para replantearse nuestra trayectora vital o medir en que punto de la que tenemos nos encontramos. Y seguramente muchos - probablemente incentivados por todo lo que se escucha ahí sobre los salarios altos y la buena de los desarrolladores - os estes planteando aprender a programar.

Otros, que ya estais en este mundillo, puede que queraís aprovechar el periodo estival para mejorar en vuestras habilidades. Probablemente pensando que el problema por el que no encontrais esos salarios altos y buena vida de la que tanto se oye hablar es porque os falta mejorar.

Esteis en el punto que esteis, os traigo algunos recursos que os pueden ser de ayuda:

Punto de partida

Punto de partida

A veces lo más dificil, seas nuevo o ya lleves tiempo en esto, es saber en que punto estas y que posibilidades tienes. Es tan abrumadora la cantidad de tecnologias, conceptos y areas de especialización que existen en este sector que en ocasiones, por mucho tiempo que lleves trabajando en esto, los arboles te impiden ver el bosque.

Es por eso que antes de nada os recomiendo entrar en la pagina roadmap.sh. Aquí puedes encontrar multitud mapas que te indican los conocimientos que deberías tener para ser un experto en el campo que decidas. ¿ Quieres ser un maestro del frontend ? Tiene tu guía, ¿te gusta más el backend? también puedes ver el camino, ¿eres más de Ciber seguridad? deberías revisar esto y así con multitud Roles y Skills como bases de datos, UX, K8s… De verdad que como ayuda para ver de una forma muy visual todo lo que deberías conocer dentro del campo que has elegido no tiene desperdicio.

Si te sirve de idea, yo hace años que imprimí mi roadmap en B&N y voy colocando aquellas casillas en las que siento que ya me desenvuelvo con soltura. De forma que siempre tengo una visualización del punto en el que me encuentro.

Para los nuevos en la programación

De acuerdo, has tomado tu decisión, elegiste la pastilla roja y ahora quieres verlo todo en código. Te diré algo que quizá no todo el mundo comparta, pero que para mi es una verdad indudable: A programar se aprende programando. Puedes ver muchos tutoriales y leer mucha teoria, pero al final es pegandote con el código como verdaderamente aprenderas a programar.

Punto de partida

Es como nadar, puedes ver muchos vídeos sobre el tema y leerte todo lo que se ha escrito sobre la técnica, la hidrodinamica, la mecanica de fluidos… hasta que no saltes a la piscina y des unas brazadas no descubrirás lo que verdaderamente implica nadar.

Pero eso no signica que sea una buena idea sentarte delante del ordenador e intentar crear tu primer programa “de cualquier manera”. Igual que, siguiendo con la metafora, no sería una buena idea saltar a una piscina en la que no haces pie para probar si verdaderamente sabes algo sobre mantenerte a flote y no ahogarte.

Dicho esto hay algunos recursos que te pueden ayudar a empezar, veamos algunos:

Cursos

En otros post ya hablé de algunos cursos que me habían gustado mucho, pero aquí te dejo una lista con los que hasta ahora considero que más me han servido:

Para evitar suspicacias, no, esto no es un post patrocinado por udemy ni por devtalles, simplemente las considero dos buenas plataformas para aprender. Y sí, hay muchos cursos impartidos por el mismo profesor (Fernando Herrera), pero cuando encuentras a alguien que explica bien y hace interesante el contenido que enseña, creo que es normal repetir. En ningún caso he monetizado estas recomendaciones, y sinceramente dudo de ninguno de los nombrados conozca de la existencia de este blog.

GIT

Siempre he dicho que si lo primero que vas a hacer en programación es un hola mundo lo segundo que debes hacer es aprender GIT. Punto de partida Git es un sistema de control de versiones que te permitirá tener tu código versionado y a salvo de cambios que puedan hacer que todo deje de funcionar, o de ideas peregrinas que te lleven a un callejón sin salida.

Resumiendo mucho, porque tengo pensado publicar una guía de GIT en la codeteca, antes de que existiese el control de versiones la unica forma que tenias de versionar y evitar romper cosas que funcionan era ir creando carpetas en tu ordenador, a las que en un alarde de originalidad terminabas llamando “version buena”, “versión mejor”, “versión mejor que la buena”. Esto, evidentemente, ni es sostenible ni práctico. Pero era lo que había. Por suerte los tiempos cambian y ahora puedes crearte una cuenta en github o gitlab (entre otros) y disfrutar de almacenamiento en la nube con versionado y muchas otras opciones más.

Existen muchos cursos sobre GIT, tanto de pago como totalmente gratuitos, vídeos en Youtube y un sinfin de formas de aprender a usarlo. Yo la verdad es que no he realizado ninguno de ellos, aprendí a usarlo a base de prueba y error. Pero es un camino que no recomiendo. Git es una poderosa máquina del tiempo, y los viajes en el tiempo nunca están carentes de problemas y peligros. Pero su uso es indispensable si quieres dedicarte a esto.

APIs

Generalmente cuando empezamos a desarrollar algo, especialmente si es algo meramente academico, lo primero que echamos en falta son los recursos, datos, soporte en forma de imagenes… etc. O usar funcionalidades de terceros, como la validación de datos. Lo ideal sería poder atacar a una API que nos devolviese esto, pero no siempre son fáciles de encontrar. Por eso quiero presentarte este repositorio de github en el que mantienen actualizada una lista de APIs publicas que puedes usar en tus proyectos, ya sea para hacer pruebas o para añadir valor en tu entorno productivo.

Aquí podrás encontrar de todo y muy bien organizado por categorias. Desde validadores de información que no siempre es evidente, como si un código postal existe o no,diccionarios, recursos de ML, música… pasando por cosas tan útiles como una API que te devuelve un gato en función del código de error que le envies como parámetro.

Evaluador de expresiones regulares

Os confesaré algo, a día de hoy, despúes de tantos años en esto, las expresiones regulares siguen siendo algo que de vez en cuando me trae de cabeza. Por eso esta herramienta me resulta tan útil. Colocas la expresión regular, el texto de prueba y comprubas en tiempo real si funciona o no. Además de proporcionarte multiples implementación en distintos lenguajes.

Validador de JSON

El formato JSON se ha impuesto como un gran estandar para el envío y la recepción de información. Pero seguramente alguna vez encontrarás en alguno de estos dos casos:

  • Alguna herramienta, compilador, analizador de código… lo que sea, te dirá que hay un erro en tu JSON y tu por más que lo mires no darás con él.
  • Te llegará un JSON de mil sin ningún tipo de indentación ni orden y no podrás ver absolutamente ninguno de los datos que contiene.

Para esto te traigo la solución, este validador de JSON on-line y gratutio que además te formatea el JSON para permitirte que lo veas de una forma rápida y sencilla.

Para los no tan nuevos en esto de programar

Si ya no llevas la L, pero aun estas aprendiendo - vamos, si eres JR - estás en un punto complicado. No es sencillo dar con elementos que estén en el punto justo como para que no te aburran por resultarte demasiado sencillo o básico, ni te abrumen por ser excesivamente técnico y complejo. Vamos a intentar ver algunos recursos que puedan venirte bien:

Bases de datos

Si antes comentaba que cuando estas empezando, inmediatamente despúes de aprender a hacer lo más básico lo siguiente tiene que ser GIT, cuando estas en este punto te recomiendo encarecidamente que te formes minimamente en Bases de datos.

No es necesario que te conviertas en DBA o DBD, pero si que tengas unas nociones básicas de lo que puede hacer una base de datos más allá de guardar y recuperar filas en una tabla.

Muchas veces me encuentro, especialmente en desarrollos realizados por JR, con desarrollos que se podrían haber simplificado enormemente o que se ejecutarían mucho más rápido si se le pidiesen más cosas a la base de datos en lugar de hacerlo todo en código. Una sentencia de JOIN (para unir información de varias tablas), de COUNT(para contar registros) o simplemente mejorar los WHERE y SELECT para pedir solamente la información que nos interesa pueden hacer que una aplicación se vuelva mucho más liviana y rápida.

Cuando me encuentro estas cosas, siempre intento usar el mismo racionamiento con quién lo ha desarrollado: Las bases de datos son tecnología de los 70. Y a pesar de ello empresas como Oracle siguen manteniendo enormes plantillas para mejorar sus productos y optimizarlos al máximo. No pretendas hacer en un sprint lo que cientos de personas han logrado a lo largo de 60 años de desarrollos. Aprovecha lo que ya tienes que es muy potente.

Compresor/Descompresor de CSS

En el punto en el que estás, deberías empezar a pensar en optimizar tu código. Si te dedicas al desarrollo web uno de los puntos dónde más puedes mejorar tus sitios con un esfuerzo muy bajo es mediante la compresión del CSS. Esto hará que tus ficheros de estilo pesen menos y por lo tanto todo sea más ligero a la hora de cargar.

El problema es que si luego quieres hacer cambios, no hay quien encuentre nada en un fichero CSS comprimido. Por eso esta herramienta es capaz de realizar las dos funciones, comprimir un fichero CSS para usarlo en producción o descomprimirlo para poder hacer modificaciones.

Existen muchos online, a mi por su simplicidad me gusta este: codebeautify

Ser limpio no cuesta nada

No, no voy a volver a hacer referencia al famoso libro de Clean Code de Robert C. Martin (aunque tampoco estaría de más que le echases un vistazo). Pero si te recomiendo algún curso sobre como refactorizar y hacer código más limpio. Yo, personalmente, te recomiendo este: Principios SOLID y Clean Code. Pero puedes encontrar mucho más en la web.

Mejorar tu dominio sobre las herramientas que usas

Por ponerte un ejemplo de mí día a día, controlar los atajos de teclado y las funcionalidades extra del Visual Studio Code me supone un ahorro tremendo de tiempo todos los días y hace que tareas aburridas puedan ser algo más rápidas.

En este sentido te recomindo visitar la entrada de Mis Atajos de VSCode, pero también este curso gratuito sobre el tema

Test, Test, TEST

Estas en un gran momento para formarte en los grandes olvidados de todos los proyectos: Los Test. Testar el código es algo fundamental que ayuda a detectar y prevenir errores, hace nuestro código más robusto y evita problemas y malas experiencias para los usuarios. Pero en algunas ocasiones los plazos de entrega y las peticiones de cliente nos hacen dejarlos de lado. Ahora que estas haciendo desarrollos, pero también te estas formando, es el momento ideal para que aprendas sobre ellos y los integres en tu ADN.

En este punto, ahora mismo, solo te puedo ofrecer dos recursos:

  • Nuestra entrada sobre como crear datos de prueba para que puedas crear tus test como quieras.
  • Un Spolier: Espero publicar muy pronto toda una serie de test explicando desde cero como testear tu backend.

Y por mucho que me encataría recomendarte más cosas, no puedo porque no he encontrado recursos para aprender sobre el tema que de verdad sienta que son útiles. Normalmente los tutoriales que encuentras en internet se limitan a ejemplos del tipo “2 + 2” espero “4”. Pero no sé a vosotros, a mi a veces me piden hacer cosas que no son calculadoras… y estas cosas se me quedan un poco cortas. Así que espero poder aportar algo más sobre este tema dentro de poco.

Para los programadores veteranos que quieren mejorar su kung fu

Porque si, seamos sinceros, quien más o quien menos ha querido poder decir la famosa frase de Kevin Mitnick - más popularizada por Rata en la pelicula The Core de 2003 - “My kung fu is stronger than yours”. Pero no es tan fácil, requiere entrenar.

E igual que los cachitas del gimnasio tienen su maquina de musculación y los campeones de torneo de globos tienen… ¿globos? nosotros tenemos recursos que nos ayudan a códificar mejor.

Algoritmos

Punto de partida

Que sería de nuestra vida sin los algoritmos, ahí es dónde radica la clave del éxito o el fracaso de un programa. Y el problema es que muchas veces nos empeñamos a reinventar la rueda una y otra vez. Pero hay algo mejor: Utilizar algo que ya se sabe que funciona. Y para eso te propongo que le eches un vistazo a esta biblioteca de algorimos, dónde podrás encontrar practicamente de todo:

The Algorithms

Maching Learning

Estamos en un momento que da igual que tu scope sea y siempre haya sido el desarrollo y mantenimiento de herramientas para el envío de formularios en PHP. En algún momento alguien te dirá Y no podriamos usar ML para… y entonces agradecerás tener estos recursos a mano.

Punto de partida

Lo primero que te recomendaría es una introducción al tema, a mi particularmente me gusta mucho esta de juanbarrios.com.

Una vez tengas los conceptos, vas a necesitar los recursos. Por un lado los algoritmos de ML, puedes encontrar muchos de ellos (decir todos es no decir nada, continuamente aparecen más y más) con ejemplos y explicaciones muy visuales en esta scikit-learn. También necesitarás datos para hacer los entrenamiento, y ahí te recomiendo que visites kaggle.

Si realmente es para aplicarlo a tu trabajo de envio de formularios (o no, pero si para proyectos en los que el lenguaje natural sea la base) aquí podrás encontrar una guía muy completa

Framework de diseño que no son los de siempre

Si te dedicas a la creación de interfaces web, te recomendaría que probases otros framework que no son los de siempre. Si estas cansado de bootstrap y material-ui te recomiendo que le eches un vistazo a ant design.

Observabilidad

Este concepto se ha puesto muy de moda ultimanete, y es tarea de los desarrolladores instrumentalizar nuestras aplicaciones para que sean obserbables. Si hace algunas semanas hablabamos de mejorar la observabilidad de elemento como NGiNX ahora toca pensar en el propio desarrollo que estamos llevando a cabo.

Un proyecto muy interesante en esta línea es OpenTelemetry. Que permite instrumentalizar de manera sencilla tu aplicación. La documentación es bastante buena, aunque la implementación no siempre es sencilla.

Otra opción, si usas Python y más concreamente el micro-framework fastapi es usar la librería prometheus_fastapi_instrumentator, que como su propio nombre indica, permite volcar las metricas de la aplicación al prometheus de una forma sencilla.

Y si todo esto de la instrumentación, prometheus y observabilidad te suena a chino, te recomiendo que pruebes a adentrarte en este mundillo que cada vez se pide más en las empresas.

Mantente al día

Es muy dificil no quedarse atrás en este mundillo, hace falta una cantidad ingente de tiempo solamente para enterarse de novedades, nuevas versiones, tendencias y modas. Por eso te dejo algunos eventos que te ayudarán en este dificil reto.

  • Grafana (Observabilidad y Monitorización)
  • Python (Novedades en este popular lenguaje de programación)
  • DotCSV (Inteligencia Artificial)
  • Nerdearla (Varios temas relacionados con desarrollo, Devops, monitorización…)

Categorías: ,