Echando la vista atrás. Mi 2016
Como soy un poco despistado, se me ha acabado 2016 sin haber hecho retrospectiva del año. Aunque, siendo estrictos, hasta que no acaba no debería hacerse la retro, porque todo puede cambiar en el último minuto ;) En cualquier caso, vamos a ello.
Durante 2016 he estado dedicado a mis tareas docentes en la Universidad Rey Juan Carlos. Llevo ya algunos años impartiendo una asignatura de Programación Concurrente y otra Desarrollo Web en diversos Grados de Informática. La de Concurrente tiene un perfil más teórico, aunque nunca dejo de lado la aplicación práctica de los concetos y técnicas vistos en clase. Nos centramos sobre todo en el modelo de memoria compartida “mutable” y en Java. Aunque damos un repaso general a otros modelos de concurrencia: STM, Actores, Funcional, CSP… y también vemos las arquitecturas de diferentes tipos de aplicaciones desde el punto de vista de la concurrencia: Interfaces gráficos de usuarios, aplicaciones web, bases de datos. La asignatura de Desarrollo Web es muy diferente. Aquí el objetivo es que los alumnos se enfrenten a todos las fases del desarrollo de una web, o más bien, a un producto implementado como una web: Definición, Diseño de interfaces, implementación, etc. Es una asignatura que estoy puliendo todavía. El año pasado apliqué la técnica docente de “Aprendizaje basado en Proyectos”. Este año también quiero incluir la “Clase invertida”. Aquí tienes más información sobre este cambio metodológico y sus motivos.
Aunque esas son mis dos asignaturas principales, también realizo otras actividades docentes: Comparto con otros compañeros la asignatura de Computación en la Nube del Máster en Data Science de la URJC. También he impartido una asignatura online sobre Ingeniería del Software. Por otro lado, imparto las asignaturas de Programación Extrema y parte de la asignatura de Virtualización y Computación en la Nube del Especialista en Arquitectura y Desarrollo Software de la Universidad Politécnica de Madrid. Y también están los cursos de CodeURJC que impartimos Patxi (@fgortazar) y yo: Desarrollo backend con Spring, Desarrollo front con Angular2, etc. Como puedes ver, tengo motivos para definirme como profesor, no lo vamos a negar ;) Ah, se me olvidaba. He presentado una propuesta de mejora docente junto con mi compañero Patxi y nos han dado un premio y todo. Cómo mola ;)
Las retrospectivas no tienen como objetivo simplemente enumerar lo que has hecho, sino más bien reflexionar sobre lo que has conseguido. He de decir que la docencia me hace sentir muy bien. Lo primero porque es la excusa perfecta para aprender algo que te interesa, y ya te digo yo que lo aprendes de forma muy profunda, porque lo tienes que entender para poder explicarlo. Y por otro lado está la parte humana. Aprender para poder hacer la vida más fácil a los demás, para poder ayudarles en su proceso de aprendizaje. No hay nada más gratificante de ver la cara de un alumno que disfruta aprendiendo cosas nuevas. Un pena que no todos lo hagan ;)
El que me conoce sabe que no me conformo con la docencia. Me apasiona enseñar, pero también me considero desarrollador software y me gusta desarrollar. Pero no sólo hacer programas para preparar las clases, me gusta formar parte de un equipo de desarrollo creando un producto software que la gente use. Es decir, me gusta participar en la priorización de la funcionalidad ofrecida (quiero decir las historias de usuario ;)). Me gusta enfrentarme a los retos que supone hacer software “real”, es decir, libre de bugs, cumpliendo las planificaciones, colaborando con compañeros, discutiendo sobre arquitectura software. Y además de gustarme, creo que es mi responsabilidad como profesor de estas materias, conocerlas de primera mano, y no sólo por los libros. En mi faceta de developer formo parte del equipo de desarrollo de Kurento, una plataforma para implementar aplicaciones de videoconferencia vía web con WebRTC. Estoy en el stack de Java del producto. Este año me he dedicado sobre todo a trabajar con clientes y servidores de WebSockets, SpringBoot, AWS, Hazelcast para implementar ElasticRTC, un Kurento as a service en Amazon Web Services, autoescalable, tolerante a fallos, mágico ;) He aprendido mucho técnicamente sobre sistemas distribuidos tolerantes a fallos, pero sobre todo he aprendido a darme cuenta de lo importante que son los tests para garantizar un mínimo de calidad en tu trabajo y lo que marca la diferencia tener una buena herramienta para ayudarte en tu día a día. Por ejemplo, aunque usámos ElasticSearch para guardar los logs del sistema distribuido, Kibana no me parece adecuda para analizar problemas. Menos mal que los jefes nos dejaron implementar el Kurento Log Manager. En Septiembre Kurento fue comprado por Twilio, una startup americana. Como es un proyecto libre, en realidad “compraron” a casi todo el equipo y la parte privativa. A mi me ofrecieron también incorporarme a la plantilla de Twilio, pero tendría que dejar la universidad y los cursos. Estuve sopesando la idea, pero decidí quedarme en la universidad. Con la marcha de gran parte del equipo, Kurento no ha seguido desarrollándose estos últimos meses, pero en 2017 eso va a cambiar, os daré más detalles en otro post.
Este año también he sido un poco más activo asistiendo a eventos con compañeros de la profesión. Cada vez me gusta más hacerlo, porque aprendo mucho a nivel técnico y a nivel personal. Asistir a estos eventos me ha ayudado a darme cuenta de hay vida más allá de las cosas con las que habitualmente trabajo. Siempre he tenido a PHP como un “mal lenguaje”, pero he visto a gente de mucho nivel y que usan PHP como su mother tongue. Eso me ha ayudado a ser mucho más humilde en mis opiniones y ha declararme oficialmente torpe para poder contar las bondades que para mi tiene TypeScript, porque entiendo que para otros sólo aporta una complicación innecesaria. Siempre que puedo (y me la aceptan) me apetece dar alguna charla a los eventos que voy. Es mi forma de dar una pequeña parte de lo que recibo. Este 2016 he participado en unos cuantos “saraos”: MadridJUG+MadridJS, MadridJUG, Codemotion, T3chfest, PanelSistemas, Google Campus, Programa de Radio3 UNED. Y lo bueno es que he conocido a gente super maja y muy interesante, sobre todo en el Codemotion.
Y se me olvidaba. Un profesor universitario también tiene que investigar, publicar artículos, libros, asistir a conferencias de investigación, etc. La verdad es que este año he tenido esa faceta un poco aparcada para poder dedicarme a todas las demás que he contado. Aun así, he podido publicar un paper en el área de la optimización metaheurística y otro relacionado con Kurento. También ha habido contribuciones a congresos nacionales e internacionales. No está nada mal para ir al “tran tran” ;)
En resumen, 2016 ha sido un buen año a nivel profesional. El año 2017 viene con muchos retos, pero si todo sale bien, tiene pinta de ser mejor incluso que el 2016. Pero para el 2017, mejor otro post.