Durante el mes de abril, la empresa PLURALSIGHT ofreció todos los cursos y videos GRATIS.
Como todos sabemos, en respuesta al creciente número de casos de COVID-19 durante la pandemia de este año 2020, muchos países -al igual que el mío- declaran estado de alarma, adoptando como principal medida, la imposición de una cuarentena nacional.
Varias empresas y plataformas (de todo tipo), se solidarizaron con la comunidad mundial, ofreciendo sus servicios gratis para quienes no tienen una suscripción activa, o mejorando los planes a clientes activos, en algunos casos solo para ciertas zonas geográficas y otros -más generosos- lo hicieron para con todos, sin excepción.
En mi anterior post, daba las indicaciones para aprovechar PLURALSIGHT Gratuito durante todo el mes de Abril; mi emoción se debió, principalmente, a que en lo personal considero que esta plataforma se diferencia de otras (hay muy buenas por cierto) por la calidad excepcional de sus cursos, los cuales son dictados por una variedad de autores que van desde Senior Developers hasta Software Advocates y Entrepreneurs, todos ellos excelentes profesionales.
Es así que lejos de considerar el confinamiento un problema (somos programadores, estamos acostumbrados a pasar mucho tiempo frente a la compu) me propuse aprovechar la cuarentena y sacar el máximo provecho a lo que considero el momento de hacer todo aquello para lo que no he tenido tiempo últimamente, debido a los diversos proyectos y demás actividades.
Estas son mis impresiones de los cursos que completé, luego de utilizar el #FreeApril de Pluralsight: hago notar que habiendo una cantidad increíble de cursos, me enfoqué específicamente en ciertos temas en los que quería profundizar, tener una actualización tecnológica y en otros casos por simple caduquera (chochera) de aprenderme hasta los shortcuts de teclado que (ahora si) me pueden facilitar la realización de tareas durante mi día a día desarrollando software; pero antes de seguir me gustaría hacer un paréntesis para más o menos resumir la interfaz de la plataforma:
Interfaz de Pluralsight
La interfaz es más o menos similar a la de otras plataformas como Udemy o edX, sobre la cual me gustaría hacer notar los siguientes recursos:
Learning Paths
Se tienen los Learning Paths -senderos, trayectorias, rutas o caminos de aprendizaje- que son colecciones de cursos cuidadosamente «curados» por expertos y autores de Pluralsight, es decir que proveen una ruta de aprendizaje para los diversos temas que nos pueden interesar, mismos que están divididos por el nivel de complejidad de los cursos (Principiante, Intermedio y Avanzado), mostrándonos de manera visual nuestro avance general en el dashboard del path escogido. Esto me parece sumamente útil para aprender y enfocarme en un conjunto particular de habilidades, además, teniendo todo clasificado y agregado nos da la sensación de que al completarlo ya se tiene lo que uno necesita para empezar a aplicar esas nuevas técnicas en el trabajo.
Skill IQ Assessments
Por aquí debí comenzar, pero sentí que primero tenía que comentar acerca de los Learning Paths, ya que esto aplica para ellos: los Skill IQ Assessments son exámenes de 20 preguntas que le permitirá a la plataforma saber en qué nivel de habilidad nos encontramos; si respecto a una ruta de aprendizaje estamos más cerca de ser novatos que expertos. ¿Para qué? Para que así nos brinde recomendaciones de contenidos personalizados y adecuados a nuestro nivel. Las preguntas son cronometradas de acuerdo a la complejidad de las mismas y lo bueno es que si creemos que pudimos hacerlo mejor, nos da la posibilidad de reintentarlos una vez para mejorar nuestro puntaje, en tal caso la plataforma siempre se quedará con nuestro score más alto.
Guías
Las guías –guides– son artículos de texto que nos pueden ayudar a resolver con mayor rapidez algunos problemas técnicos o blockers mediante recursos como fragmentos de código y ejemplos de implementaciones en el mundo real. Aparte de estar muy bien redactadas y esquematizadas, me gusta mucho el buscador, sumamente útil.
Bookmarks
Los bookmarks o marcapáginas, se utilizan para destacar contenido que nos interesa, se pueden añadir (y posteriormente filtrar) estos marcadores a los Cursos, Módulos y Videos. Para acceder a ellos tenemos un enlace en la barra superior al lado de nuestra imagen miniatura de perfil, muy conveniente cuando queremos volver a repasar un tema que vimos en una lección o por ejemplo volver a revisar quizá una serie de comandos o un fragmento de código que necesitamos recordar.
Canales
Los canales son listas personalizadas de cursos, las cuales podemos nombrar como deseemos, ya que en este el caso los curadores de la selección somos nosotros, útil para agrupar cursos por distintas temáticas o asuntos de nuestro interés: Testing, CI/CD, Mobile, etc.
Descargar los cursos
Mas que descargar los cursos, lo que ofrecen es la posibilidad de poder aprender en modo offline, para lo cual se debe descargar la app de Pluralsight disponible para MacOS, Windows, iPhone, iPad, Smart TVs (Apple TV, Amazon Fire TV & Roku) y dispositivos Android. Algo que me pareció curioso: ofrecen una extensión/plugin para Visual Studio Code que nos permite obtener recomendaciones de contenido y respuestas a preguntas, éstas respuestas pueden ser videos, cursos, guías que la plataforma ofrece. Yo no la he probado aún, si le echo una mirada les hago saber.
Transcripciones
Adicional a la tabla de contenidos y descripción que cada curso tiene, se cuenta con la transcripción completa de todos los videos, la mayoría son transcripciones realizadas por los mismos autores y en algunos casos son autogeneradas, el 99% de muy buena calidad, salvo en alguno que otro video que no se le entendía con claridad alguna palabra al disertante me la tradujo con «________» (tampoco digamos que tengo un «listening» espectacular). Sólo pude encontrar contenidos en inglés, pero se tienen los subtítulos autogenerados creo que para casi todos los idiomas.
Archivos prácticos o de ejercicios
Cada curso provee un archivo comprimido para descargar –Exercise Files-, que incluye las diapositivas presentadas en cada módulo y el código fuente que lo respalda cuando corresponde (esto depende del curso). En aquellos que vienen con código fuente, adicional a la descarga del archivo de ejercicios provisto por la plataforma, también es importante acceder al enlace que nos lleva al repositorio -la mayoría de las veces en GitHub- provisto por el autor al comienzo del contenido, para así trabajar los ejercicios con la versión más actualizada del proyecto.
Área de discusión
Cada curso cuenta con un foro de discusión donde el autor interactúa con los alumnos contestando dudas, complementando el contenido y a veces también aclarando algunas correcciones o fixes que se han realizado para que los ejercicios funcionen.
Cuestionario práctico
Se tienen cuestionarios prácticos con preguntas referentes al curso, éstas preguntas tienen mas o menos los lineamientos de las preguntas que hay en los exámenes de certificación, se pueden realizar varios intentos de éstos tests, la plataforma nos va almacenando un listado histórico de todos los cuestionarios que vamos pasando y la puntuación de los mismos.
Cursos Relacionados
Es un listado de cursos afines al que estamos realizando, ayuda bastante si por ejemplo estamos haciendo un curso de Unit Testing en JUnit 5, entonces nos recomienda otros acerca de TDD, Mockito, etc. Útil si no hemos buscado últimamente novedades en tecnología de desarrollo de software.
TL;DR
Resumen de cursos
Bueno, al fin, éstos son los cursos que completé (en total fueron 14) y ofrezco mi opinión personalísima de los mismos, por favor tomar en cuenta que no gano dinero por esto y hago este artículo como un agradecimiento con Pluralsight por el gesto de regalar todo un mes de delicioso aprendizaje, el cual he apreciado mucho, de todas maneras el enlace que proveo al sitio de la plataforma tiene mi código de afiliado 🙂 en caso deseen conocer la plataforma, al lado del título de cada curso está el nombre del autor y el enlace correspondiente a su perfil.
Tema: Infraestructura & Cloud
La mayoría de estos cursos son parte de la ruta de aprendizaje AWS Certified Developer – Associate (DVA-C01) de Amazon Web Services. Con los ejercicios provistos se llega a comprender los servicios principales y se debería ya tener la capacidad de desarrollar y desplegar una aplicación totalmente funcional en AWS, los contenidos más avanzados nos enseñan acerca de aplicaciones distribuidas y Serverless, así como también a monitorearlas y manejarlas correctamente.
- AWS Developer: The Big Picture
- AWS Developer: Getting Started
- AWS Developer: Designing and Developing
- Demystifying the AWS Certified Developer: Associate Exam
- Docker and Kubernetes: The Big Picture
Éste curso no es práctico, pero nos da una introducción a la vasta variedad de servicios esenciales de AWS (Amazon Web Services), que hasta el momento es el mayor proveedor de servicios de computación en la nube y lo utilizamos empresas de todo tamaño. Este corto curso es necesario si queremos saber más de cloud computing y cómo se lo puede usar.
Aquí ya se aprende la manera de desarrollar, desplegar e integrar aplicaciones web en AWS, viene con el código fuente de una fábrica de pizzas en Node.js, muy didáctico y entretenido, en este curso se configuran alarmas, se manejan instancias EC2 –Elastic Cloud Computing– se delimitan recursos con VPC –Virtual Private Clouds-, se aprende a implementar de manera fácil los muy versátiles buckets en S3 –Simple Storage Service– y se da una ligera implementación a 2 servicios de base de datos: RDS –Relational Database Service– y DynamoDB (que es una base de datos NoSQL), así también damos una mirada a Cloudfront para desplegar contenido de forma global.
Por si queremos avanzar un poco más en la ruta de AWS, aquí ya aprendemos a utilizar el SDK –Software Development Kit– de AWS, se implementa de manera mas avanzada el escalado de EC2 y el manejo de imágenes de disco AMI para despliegue bajo demanda con grupos de auto escalado y balanceo de carga elástico: ELB – Elastic Load Balancers-. Se profundiza en aspectos de seguridad y se aprende de almacenamiento elástico de bloques o EBS – Elastic Block Store-. Muy importante: se implementa el servicio de Route53 (DNS en la nube de Amazon) para crear un gateway para nuestra API (el código fuente del proyecto es de hámsters) y también se profundiza un poco en Cloudfront, Cloudwatch y Kinesis & SQS para la comunicación y alarmas. En este curso se programa un poco más que en el anterior.
Interesante para darnos una idea de cómo es el examen de certificación AWS Certified Developer – Associate exam. Se aprenden tips interesantes, aparte de los genéricos que pueden aplicarse a cualquier examen de certificación en general; me gustó cómo nos da una idea de ponderar las áreas en las que debemos mejorar nuestras habilidades.
Éste curso forma parte de la ruta Managing Containers with Docker. Los contenedores son una forma de virtualizar que para algunos escenarios se adecúa mejor que los tradicionales Hypervisors, me gustaría hacer toda esta ruta de aprendizaje en un futuro para conocer más a fondo todo lo que Docker tiene para ofrecer. Éste contenido es el ideal para introducirnos en los contenedores y Kubernetes, para desplegar nuestras aplicaciones modernas y también las heredadas.
Tema: Java & Spring
Éstos cursos forman parte de la ruta Core Spring Path, que si bien ya conozco y vengo implementando Spring desde hace un par de años, son contenidos que quería específicamente revisar, ya que es un framework que ha crecido con el tiempo y ahora también soporta Groovy y Kotlin como lenguajes alternativos para la JVM; en resumen fueron para darle una mirada rápida. Ambos cursos de contenido súper corto pero a la vez muy sólido, hago hincapié en que la autora de los mismos es una programadora que ha ganado algunos premios; personalmente me gusta mucho que las mujeres tengan un papel activo en el desarrollo de software y que sienten presencia en esta industria.
- Spring Boot Fundamentals
- Building Microservices REST APIs Using Spring Data REST
Cuando alguien habla de Spring, por lo general se refiere a toda la familia, pero en este curso se aborda la extensión Spring Boot, que ayuda a desarrollar aplicaciones de manera muy rápida y con menos código. Enseña de una manera muy didáctica temas como: anotaciones, propiedades, perfiles para entornos, acceso a datos con JPA, el patrón MVC y cómo se empaquetan los archivos para desplegar.
Me gustaron las lecciones que abordan la implementación de Aplicaciones Web RESTful, para quien desea aprender a construir productos basados en API; así también otra lección notable es la que enseña como implementar GraphQL: ese lenguaje Open Source de manipulación y consulta de datos para API; nos hace implementar sus esquemas, operaciones y mutaciones para que mediante el runtime realicemos consultas y operaciones con los datos existentes en nuestra base de datos, así también podriamos acceder a esos mismos datos que hemos expuesto utilizando middlewares y por supuesto backends. No quiero dejar de mencionar la implementación de los Actuators para obtener métricas y otros indicadores de salud de nuestra aplicación ya desplegada.
Por último, da un breve pantallazo a cómo realizar tests unitarios y de integración, muy ilustrativo.
Este curso aborda la creación de API REST para microservicios utilizando Spring Data REST, y sólo en cuestión de minutos ya convertimos un repositorio a microservicio RESTful, el cual está originalmente en Spring Data; luego progresivamente se lo va enriqueciendo con Paging (paginación), Sorting (ordenación) y Searching (búsqueda).
Importante la lección de Swagger, para quien quiere aprender acerca de esta herramienta de autodocumentación de APIs, que tiene una poderosa interfaz web y también nos ayuda a generar código, documentación y casos de prueba para nuestras API.
Por mi parte realicé un ejercicio desplegando la aplicación final en mis EC2 de AWS, con escalado de instancias de acuerdo a reglas establecidas en mi balanceador de carga.
Tema: Angular
Hace un par de años que no me dejo conquistar por alternativas como React, así que continúo trabajando con Angular: porque es un Framework completo para JavaScript, sigo convencido de que las aplicaciones dinámicas e interactivas que nos permite desarrollar, ya sean estas SPA Single Page Application, MPA Multi Page Application, Client Side o Server Side Rendering, son robustas, fáciles de depurar y testear a cambio de una curva de aprendizaje moderada.
- Angular CLI
- Angular Forms
- Angular Architecture and Best Practices
- Unit Testing in Angular
Este curso nos enseña como crear, generar, depurar, testear, compilar y en general construir aplicaciones que sigan los Lineamientos de Estilo de Angular o Angular Style Guide. Pareciera una exageración hacer un curso de algo que pareciera trivial como el CLI, que bien se puede aprender con la misma documentación técnica (así lo aprendí yo); pero saqué algo bueno de esto: como este curso es desde cero e incluye instalar Node.js, npm y configurar los entornos, descubrí que tenía una chipazón (todo un enredo) mis versiones locales, ya que mi sistema operativo es MacOS Catalina actualizado desde El Capitán y utilizo nvm para versionar Node por proyecto, gracias a este curso dejé saneado mi entorno tanto de Node como de Angular y Typescript, con las dependencias correctas por cada versión y para cada proyecto.
Plus: Casi al final hay un módulo jugoso de Unit Tests & End to End Tests que nos enseña a configurar, ejecutar y testear nuestras aplicaciones, así también nos da pautas importantes para verificar la Cobertura de Código (Code Coverage) de nuestro desarrollo.
No aprendí mucho en este porque el contenido del mismo ya lo hice en otro curso, pero para quien está comenzando con Angular le ayudará con lo fundamental para trabajar con formularios basados en plantilla o Template Based, desde crear, agregarles estilo y utilizar validación y data binding. Este curso no aborda formularios reactivos.
Curso interesante y útil para aprender cómo desarrollar aplicaciones en Angular con una arquitectura sólida que sea fácil de refactorizar y mantener. Es necesario adoptar las propuestas de cómo organizar nuestro código, componentes, módulos y la comunicación entre sí, también el uso de la librería RxJS, el manejo de estado y en general muchas buenas prácticas, todas siguiendo la ya mencionada Angular Style Guide.
Las lecciones son la versión avanzada del curso Angular CLI, ya que se profundiza en aprender a organizar los módulos y librerías, luego unificarlas, aplicar estilos, implementar algunos patrones como Inmutable (muy importante), la comunicación utilizando el servicio Event Bus Service (si no conocen los Observables, es el momento), y manejo de estado usando NgRx entre otros temas de interés, como las consideraciones de seguridad. Recomiendo este curso para cualquiera que desee trabajar con Angular, o que ya esté trabajando con el framework y desee ampliar sus conocimientos, el contenido es un poco pesado, pero definitivamente necesario.
Este curso está centrado en Unit Testing para proyectos en Angular, comprende desde tests «Aislados» y menos complejos para Pipes, Servicios y Componentes, hasta tests de integración superficiales y profundos (Shallow & Deep) utilizando los objetos nativos y de depuración para realizar pruebas a componentes con o sin hijos (childs). Así también nos enseñan a realizar pruebas en los componentes de ruteo, cómo lidiar con el código asíncrono y verificar la Cobertura de Código (Code Coverage) de nuestro proyecto.
Tema: Tools & Design
Aquí de todo un poco -caduqueras en realidad- como el cursito de VS Code, el de Gradle (para construcción de proyectos y manejo de ciclo de vida usando Groovy y Kotlin), y uno de diseño de interacción para aplicaciones.
- Gradle Build Tool Fundamentals
- Interaction Design Fundamentals
- Visual Studio Code
Curso bien básico de Gradle, que es una herramienta para construir proyectos en Java, permitiendo definir los archivos de configuración tanto en Groovy como en Kotlin, ambos son lenguajes de programación orientada a objetos implementados sobre la plataforma Java. Ésta herramienta reemplaza a Maven y también nos permite compilar, testear nuestro código, crear jars y wars para desplegar nuestras aplicaciones y generar Javadocs, entre muchos otros usos; todo esto utilizando plugins, definiendo tareas y adicionando dependencias. Brinda ejercicios tanto en Groovy como en Kotlin.
Contenido necesario para quien desea aprender a configurar builds multi proyecto; también se hace una breve introducción al Testing con JUnit (4 y 5) y nuevamente saqué algo bueno de él: mi Gradle Wrapper estaba sucio (mal configurado), así que fue una buena oportunidad para sanearlo.
Éste es un curso súper corto, quedé con sabor a poco, no pude encontrar otro curso más avanzado del mismo autor que continúe con lo que se aprende con éste contenido. En resumen nos ayuda a los desarrolladores a comprender el concepto de diseño de interacciones, nos enseña un par de principios fundamentales (patrones y anti-patrones), algunos tips de navegación, define las micro-interacciones y en general cómo todos estos conceptos pueden ser utilizados para generar experiencias de usuario significativas. Punto a favor acerca de como crear interfaces de usuario Accesibles.
Mi nuevo consentido, ese súper-liviano, ultra-rápido y multi-plataforma entorno de programación llamado Visual Studio Code; desde que lo conocí dejé todos los demás. Nos permite programar aplicaciones web y de escritorio; tenemos integración con el control de versiones y prácticamente soporte para todos los lenguajes y librerías que podamos necesitar: si aún no hubiera, entonces podemos programarlo nosotros y compartirlo con la comunidad de felices usuarios 🙂 -y es que no tiene nada que envidiarle a otros entornos con licencia paga-. Bueno, al grano: en este curso se aprende a configurar proyectos, a depurar, refactorizar, realizar busquedas inteligentes dentro del código, multi selección (un espectáculo), intellisense y auto-completar. Viene con unos ejemplos de código en Node.js ideales para el propósito del curso; una de las características más útiles es aprender a desarrollar tus propios Snippets (fragmentos de código) y personalizar la paleta de comandos. Plus: se aprende a integrar nuestro código fuente con herramientas externas a través de tareas, se lo realiza de manera muy didáctica con un ejercicio de transpilación de Typescript utilizando Babel.
Espero que disfruten de este post tanto como yo disfruté redactarlo, sé que se alargó un poco, pero mi intención es que se animen y quizá no solo hagan alguno de los cursos que detallé, sino también busquen más información acerca de esos temas en tantos otros sitios gratuitos o de documentación técnica oficial que existen y si quieren los conversamos. Les confieso que aprendí mucho más haciendo esta compilación.
Recuerden que el conocimiento que no se comparte pierde por completo su valor.
Saludos.