{ Adrian.Matías Quezada }

CurrículumDescargar PDFDescargar PDF

This page is under development, please forgive any visual issue.

Ingeniero de Software Senior en PrimerLearning

UnityC#BashAutodirigidoAutogestionadoIniciativaTrabajo remoto
  • Desarrollé una capa en C# para simplificar considerablemente el uso de Unity Timeline API.
  • Diseñé el concepto de "Gnome" para maximizar la reutilización de componentes debido a la necesidad de navegación intensiva en la línea de tiempo para la producción de videos.
  • Desarrollé una biblioteca de gráficos basada en Unity para visualizar y explicar datos extraídos de simulaciones.

El canal de YouTube de Primer Learning requirió asistencia para adaptar el motor de juegos Unity a la producción de videos. Nuestra colaboración implicó identificar y abordar desafíos clave, seguidos por el diseño y desarrollo de herramientas para resolver estos problemas de manera efectiva.

Nuestra solución final permitió la definición programática de secuencias de eventos. Se integró perfectamente con Unity Timeline, lo que permitió una vista previa en tiempo real del video durante la producción, con la capacidad de navegar hacia atrás y adelante según fuera necesario.

Además, introdujimos el concepto de "Gnome", una clase que habilitaba y deshabilitaba dinámicamente GameObjects a medida que se navegaba por la línea de tiempo. También creaba GameObjects cuando era necesario, optimizando la utilización de recursos.

Después de nuestro trabajo, definir una escena se volvió tan sencillo como el siguiente ejemplo de código en C#:

class Scene1 : Sequence
{
  protected override IEnumerable<Tween> Define()
  {
    using var miBlob = new Gnome<Blob>("Mi blob");
    miBlob.SetScale(0);

    // Esto se convierte en un clip de timeline
    yield return miBlob.ScaleTo(1);

    // Otro clip de timeline
    yield return miBlob.MoveTo(x: 10, y: 10);

    // Dos tweens en el mismo clip
    yield return Parallel(
      miBlob.ScaleTo(0),
      miBlob.MoveTo(x: 0, y: 0)
    );

    // La instrucción "using" llama myBlob.Dispose() que desactiva el GameObject
  }
}

Ingeniero de Software Senior en Semble

TypescriptReactAWSUXCypressJestStorybookChakra UIFormikBitbucketMongoDBDatadogSlack botAccesibilidadTutoríaLiderazgoIniciativaTrabajo remoto
  • Identifiqué la necesidad de unificar la creación de la interfaz de usuario y inicié el desarrollo de Semble UI en React. En un trimestre, esto redujo el tamaño del código en un 40%
  • Co-diseñé una nueva arquitectura backend en Node.js
  • Mentoré y coordiné al equipo de desarrollo

Trabajé en el desarrollo y mantenimiento de un producto SaaS que permite a clínicas y doctores comunicarse con pacientes y hacer un seguimiento de sus datos. El enfoque estaba en la automatización y en mostrar solo la información más relevante de manera dinámica.

Poco después de unirme, me encontré sin un supervisor directo, lo que me motivó a tomar la iniciativa y contribuir a los objetivos de la empresa como parte de mis responsabilidades diarias.

Al reconocer la necesidad de liderazgo, asumí un rol más prominente durante la transición de una unidad única a múltiples equipos. Facilité la mayoría de las reuniones técnicas entre equipos, mentoré a desarrolladores junior e inicié el desarrollo de un bot de Slack para ayudar a otros departamentos en la finalización de tareas.

Proporcioné orientación al equipo en tecnologías específicas como ESLint y TypeScript para mejorar la calidad del código y la estabilidad del producto.

Lideré esfuerzos colaborativos con los equipos de Producto y Diseño para definir e implementar una interfaz de usuario unificada con un lenguaje de diseño consistente, lo que incluyó un extenso trabajo en lluvia de ideas, planificación, toma de decisiones, prototipado y la implementación real de una Biblioteca de Componentes de Interfaz de Usuario en React utilizando Chakra UI, Formik y algunas otras herramientas. También compartí conocimientos y mentoré al resto de la empresa sobre su uso y beneficios. Este enfoque innovador resultó en una reducción del 40% en el código de la aplicación y en un código más comprensible.

Formamos un equipo excepcional de individuos altamente capacitados que entregaron resultados sobresalientes de manera consistente. Su capacidad para colaborar eficientemente y abordar desafíos complejos hizo que nuestros esfuerzos colectivos fueran realmente destacados.

Desarrollador Líder Frontend en Hack&Craft

TypescriptAngular 7-11ReactBashC#F#SQLDockerKubernetesAzureDevOpsGithubGithub ActionsTutoríaTrabajo remoto
  • Diseñé e implementé un sistema de despliegue en Kubernetes en Azure para desplegar de manera consistente decenas de proyectos.
  • Diseñé y desarrollé de manera independiente un proceso que convertía datos de Excel en SQL, los inyectaba en una base de datos, los servía a través de una API de .NET y los mostraba en el frontend utilizando Angular 7+.

Trabajé en múltiples proyectos con duraciones que oscilaron entre 3 y 12 meses para destacadas marcas europeas como AkzoNobel y Schneider Electric. Frecuentemente asumí el rol de Desarrollador Líder Frontend y ocasionalmente fui el único desarrollador activo en un proyecto.

Mis responsabilidades incluían la estimación de proyectos, garantizar la entrega exitosa de los proyectos dentro de los plazos acordados, implementar y mantener herramientas internas de la empresa, realizar entrevistas, incorporar y mentorizar a otros ingenieros, y prototipar nuevas oportunidades de negocio.

Un proyecto destacado fue el Constructor de Especificaciones, una herramienta utilizada para componer documentos de especificación técnica. Los clientes podían definir opciones y contenido del documento a través de una hoja de cálculo de Excel, completa con reglas para evitar la selección de opciones conflictivas. Diseñé este protocolo de comunicación para simplificar la personalización de las herramientas por parte de los clientes, y se actualizaba con una nueva versión de la hoja de cálculo cada dos semanas.

Diseñé, desarrollé e implementé diversas herramientas internas y paquetes para su reutilización en nuestros proyectos, incluyendo:

  • Un paquete de .NET Core que contenía utilidades recurrentes como autenticación y acceso a la base de datos.
  • Una Biblioteca de Componentes de Interfaz de Usuario en AngularJS, Angular 2+ y React.
  • Configuraciones reutilizables de CI para la compilación de proyectos utilizando GitHub Actions.
  • Un sistema de despliegue adaptable a todos nuestros proyectos que creaba contenedores Docker desplegados en múltiples clusters de Kubernetes, construido utilizando Bash.

Quiero destacar el último logro por dos razones: en primer lugar, antes de este esfuerzo, cada proyecto tenía su propio sistema de despliegue personalizado, lo que se estaba volviendo cada vez más difícil de mantener. En segundo lugar, al principio no tenía experiencia previa con Kubernetes, pero en pocas semanas creé un sistema de despliegue personalizable que garantizaba el funcionamiento ininterrumpido de la aplicación incluso durante las actualizaciones diarias.

Desarrollador Frontend Senior en New Relic

TypescriptJavascriptReactNode.jsGithubGITD3Tutoría
  • Gestioné la biblioteca de gráficos D3.js para la visualización de métricas en toda la empresa.
  • Diseñé e implementé un programa Node.js con una arquitectura de Orquestador-Músico.
  • Adapté y amplié React para crear una plataforma modular.

Me uní al equipo de visualización de datos responsable de mantener la extensa biblioteca de gráficos en D3.js, utilizada para mostrar diversas métricas en la suite de productos de la empresa.

Posteriormente, desempeñé un papel fundamental en la formación del equipo New Relic One, encargado de consolidar todos los productos de la empresa en una plataforma unificada. Para lograrlo, identificamos dos áreas principales de enfoque:

Desarrollar una aplicación React que admitiera la integración dinámica de complementos, que constituían el contenido principal de la plataforma. Estos complementos eran creados por equipos de toda la empresa. Crear un programa Node.js CLI estrechamente vinculado a la aplicación React, que permitía a los equipos desarrollar y probar estos complementos localmente. Para facilitar el desarrollo y prueba simultáneos de varios complementos, el CLI incorporó un sistema personalizado de Orquestador-Músico. La primera instancia en ejecutarse asumía el papel de Orquestador y cualquier ejecución posterior del programa se comunicaba con él, asumiendo el papel de Músicos. En caso de que la instancia del Orquestador se terminara, los Músicos coordinaban la designación de un reemplazo, garantizando una continuidad sin problemas. Abordar este desafío fue gratificante y esclarecedor.

Brindé apoyo y capacitación a otros equipos a través de presentaciones y el desarrollo de herramientas, simplificando el proceso de desarrollo y mejorando la calidad de los proyectos.

Programador Senior en Hack&Craft

JavascriptAngularJSECMAScript 2015BashC#Metodologías ÁgilesTrabajo remoto
  • Desarrollé varios proyectos utilizando AngularJS y ASP.NET.
  • Diseñé y mantuve un conjunto de herramientas de interfaz de usuario para mejorar la eficiencia en la entrega de proyectos.

Me uní a un equipo dinámico compuesto por dos fundadores y un diseñador. Colaboré estrechamente con el CTO para entregar con éxito múltiples proyectos para destacadas empresas internacionales como Dulux, Schneider Electric y Süddeutsche Zeitung.

A medida que el equipo de frontend crecía, asumí el liderazgo y, al mismo tiempo, desarrollé y mantuve un conjunto de directivas y componentes de AngularJS, asegurando su reutilización en todos nuestros proyectos.

Participé activamente en discusiones sobre ECMAScript para contribuir al avance de JavaScript como lenguaje de programación.

Desarrollador Javascript Senior en UppTalk

JavascriptAngularJSNode.jsWebRTCWebSocketsVOIPScrum
  • Desarrollé una aplicación web de videollamadas utilizando conexiones WebRTC con WebSockets para el proceso de inicio
  • Coordiné al equipo en la metodología Scrum

Desarrollé de manera independiente un cliente de VOIP de vanguardia con funcionalidad de videollamada, aprovechando las tecnologías más avanzadas. Esto implicó el uso de WebSockets para la comunicación con el servidor, WebRTC para la comunicación punto a punto entre clientes y AngularJS para la interfaz de usuario frontal. Node.js actuó como backend.

Colaboré estrechamente con los equipos de UX y Node.js para gestionar eficazmente el proyecto utilizando la metodología Scrum.

Desarrollador Javascript en eyeOS

JavascriptQooxdooPHP

Programador Freelance en NTR Global

JavascriptVanilla JavascriptBrowser Support (IE6+)TDD.NETMetodologías Ágiles
  • Dessarrollé un framework de Javascript puro utilizando la herencia prototipal de ES3
  • Mejoré el rendimiento para asegurar que las UIs complejas funcionaran fluídamente en navegadores antiguos

Me uní a NTR Global para ayudar con la versión 2.0 de su plataforma NTR Admin (luego renombrada como NTR Cloud), inicialmente escrita en jQuery. En lugar de simplemente refactorizar, nos embarcamos en la creación y mantenimiento de un framework de Javascript integral. Este framework contaba con componentes de UI, temas, pruebas unitarias y estaba documentado en un estilo que más tarde sería conocido como Storybook.

El frontend de NTR Admin fue un desafío. La interfaz de usuario constaba de múltiples pestañas, cada una con una barra lateral que contenía una vista de árbol capaz de mostrar miles de ítems, y una vista principal que presentaba una tabla capaz de manejar millones de filas. Estas filas se cargaban dinámicamente a medida que los usuarios desplazaban la página. Sorprendentemente, todas estas operaciones funcionaban sin problemas a 60fps, incluso en Internet Explorer 6.

Aprendí todo esto gracias a mi mentor, Raul Sanchez, y trabajando junto a mi colega y amigo, Oriol Torras.

Para un recorrido visual, echa un vistazo a los vídeos de presentación en el canal de YouTube de NTR Global Cloud.

Programador en Ibermática

C#.NETSQLJavascriptMVCFoxPro
  • Reviví y mejoré una aplicación JavaScript básica con funcionalidad de arrastrar y soltar en las oficinas de ABB cerca de Barcelona, poniéndola en funcionamiento y añadiendo nuevas características
  • Superé el desafío de la falta de familiaridad con el lenguaje de programación FoxPro mientras trabajaba en un proyecto en las oficinas de Nestle, implementando con éxito nuevas funciones y contribuyendo a su mejora

Este marcó mi primera incursión en el desarrollo profesional de software.

Después de un período de formación de dos semanas en SQL y .NET, comencé a trabajar en una aplicación .NET de escritorio siguiendo la arquitectura MVC.

Durante mi tiempo en la empresa, mis habilidades fueron reconocidas por un experimentado gerente que me asignó a trabajar en las oficinas de ABB cerca de Barcelona. Allí, asumí el desafío de una aplicación JavaScript básica con funcionalidad de arrastrar y soltar que había sido abandonada sin mantenimiento. Tras una revisión meticulosa del código existente, implementé con éxito nuevas características.

Mis logros me llevaron a otra asignación, esta vez en las oficinas de Nestle, donde me encontré con un proyecto enfrentando una situación similar. Sin embargo, este proyecto estaba escrito en FoxPro, un lenguaje con el que no estaba familiarizado en ese momento. Sin amilanarme, aprendí rápidamente el lenguaje y contribuí eficazmente implementando nuevas funcionalidades.