«Platform Engineer» y «Platform»: Definiciones Rápidas   1 comment

Primeramente me gustaría aclarar en éste artículo que los términos que usaré relacionados a roles, tecnologías y el glosario en general referente a la materia, estará todo en inglés ahora y en el futuro, ya que creo que la mayor parte de nosotros los que trabajamos con tecnología de una u otra manera incorporamos el glosario de términos directamente del inglés porque es la fuente original. Aclarado éste punto pasemos al tema en cuestión.

Entonces, ¿qué es un Platform Engineer? – la definición ha cambiado con el tiempo, muchos se preguntan si es equivalente a un Software Engineer, a un SRE o a un Operations; la mejor manera de establecer las similitudes y diferencias es talvés establecer sus responsabilidades y compararlas con las de los otros roles.

Hablemos inicialmente del Software Engineer, su principal responsabilidad es la de crear aplicaciones de software, en otras palabras escribe el código de la aplicación y por lo tanto está muy relacionado al negocio, ya que la aplicación es la que el usuario final usará y por la que pagará al final.

Ahora, hablemos del Platform Engineer, éste también escribe código, pero no relacionado a la aplicación sino mas bien relacionado a la infraestructura vale decir todas las cosas que mi aplicación (o la aplicación escrita por los Software Engineers) necesita para funcionar y llegar al usuario final de la manera esperada, a eso llamamos infraestructura.

Si bien, el mismo código escrito por un Platform Engineer puede ser escrito por un Software Engineer, la clave está en el tiempo que ésta actividad toma, además del «Know How», o los conocimientos relacionados al cloud vendor específico (como Amazon Web Services por ejemplo), agreguemos además el conocimiento de las regulaciones a las que está sujeta la empresa o institución en su nicho específico de mercado, los estándares y políticas que debe cumplir el producto y la infraestructura para acreditar su calidad externamente. Todo ello implica una inversión de tiempo igual o mayor a la que el equipo de desarrollo invierte para crear la aplicación.

Más allá de la infraestructura específica para que la aplicación o aplicaciones corran, los Software Engineers también necesitan herramientas internas para probar el código que escriben, probar la integración con otros subsistemas o herramientas de terceros; también necesitan la infraestructura suficiente para que su código se convierta en un artefacto manejable dentro de la propia infrastructura. Los Platform Engineers también estan encargados de levantar la infraestructura suficiente para que los Software Engineers puedan hacer su trabajo apropiadamente, por lo tanto los Software Engineers se convertirían en clientes de los Platform Engineers que crearían la plataforma de acuerdo a las especificaciones provistas por los primeros.

Si bien todas estas actividades se han llevado a cabo a lo largo del tiempo ya sea parte por el equipo de operaciones, otra parte por el equipo de desarrollo, o por equipos de «SREs/DevOps» pero de manera aislada y descoordinada, en tareas individuales, sin una planificación por detrás; lo que propone Platform Engineering es poner el foco en todo lo que significa crear una unica plataforma, aplicar todo el proceso de ingeniería para diseñar una plataforma integrada que todos los equipos internos puedan usar, identificar sus necesidades y transformarlas en requerimientos, los cuales se implementarán en la plataforma, al mismo tiempo se integrarán en la misma plataforma otros conceptos y requerimientos que el enterprise engineering pide cubrir como Observability, manejo del Software Supply Chain y seguridad, usando un unico estándar para toda la organización.

Hay que resaltar además que aplicar Platform Engineering significa olvidarnos de todos los limitantes que podríamos imponer a un equipo de operaciones o SREs debido al tiempo que tomaría implementar la creación de un dashboard completo desarrollado en nodejs y/o usando otras tecnologías ya que la confianza del equipo de management en los skills de desarrollo de éste equipo de operaciones no está garantizada. En un equipo de Platform Engineering, los skills de desarrollo deben ser iguales o por lo menos cercanos que los que tienen los Software Engineers.

Desarrollar una platforma, como hemos mencionado previamente implica diseño, planificación y mucha comunicación con los clientes internos, el ciclo de desarrollo de la plataforma debe ser tomado en cuenta de la misma manera en que se toma en cuenta el ciclo de desarrollo de la aplicación de software, en tiempos y en presupuesto, por lo tanto el equipo de management debe estar implicado en su proceso de la misma manera en que lo está para el desarrollo de la aplicación.

Al introducir el desarrollo de la plataforma formalmente al ciclo de desarrollo del proyecto, estamos asegurando la implementación de las prácticas de DevOps en la organización de una manera formal y estructurada, dándole el valor que corresponde y asegurando el éxito de su consecusión ya lo que implementará un equipo especializado y no será sólo un ideal abstracto como ha sido hasta ahora.

Una respuesta a “«Platform Engineer» y «Platform»: Definiciones Rápidas

Suscríbete a los comentarios mediante RSS.

  1. Software Engineer

    Un Software Engineer (Ingeniero de Software) es un profesional que se dedica al diseño, desarrollo, implementación y mantenimiento de software de alta calidad para una variedad de aplicaciones y sistemas informáticos.

    Los ingenieros de software utilizan habilidades y técnicas de programación para diseñar y desarrollar software que cumpla con las especificaciones y requisitos del cliente o del usuario final. Además, se aseguran de que el software sea fácil de mantener, escalable y seguro.

    Los software engineers también pueden trabajar en el diseño de interfaces de usuario, la creación de bases de datos, la integración de sistemas, la optimización de rendimiento y la resolución de problemas de software.

    Los software engineers pueden trabajar en una amplia variedad de industrias, como tecnología, finanzas, salud, educación, entre otras. Las habilidades técnicas necesarias para ser un software engineer incluyen conocimientos avanzados de programación, matemáticas, algoritmos y estructuras de datos, así como habilidades de resolución de problemas y capacidad de trabajo en equipo.

    Platform Engineer

    Un Platform Engineer (Ingeniero de Plataformas) es un profesional que se encarga de diseñar, implementar, mantener y optimizar plataformas de software complejas y escalables para aplicaciones y servicios en la nube.

    Los ingenieros de plataformas trabajan en estrecha colaboración con los desarrolladores de software y los equipos de operaciones de TI (DevOps) para garantizar que la plataforma sea segura, confiable y eficiente.

    Entre sus responsabilidades se incluyen la gestión de la infraestructura, el despliegue y la automatización de la configuración, la monitorización y el análisis de la plataforma para identificar y solucionar problemas, la gestión de la seguridad y el cumplimiento de los estándares, y el apoyo a los equipos de desarrollo en la implementación de nuevas funcionalidades y actualizaciones.

    Los ingenieros de plataformas son cada vez más demandados en la industria tecnológica, especialmente en empresas que utilizan la nube para alojar sus aplicaciones y servicios.

    DevOps

    DevOps es una cultura y conjunto de prácticas que busca mejorar la colaboración y coordinación entre los equipos de desarrollo de software (Dev) y los equipos de operaciones de TI (Ops) para lograr una entrega de software más rápida, confiable y escalable.

    En esencia, DevOps promueve una cultura de colaboración y comunicación continua entre los desarrolladores y los operadores de TI, con el objetivo de automatizar y optimizar todo el ciclo de vida del software, desde la planificación y el desarrollo hasta el despliegue y la gestión en producción.

    Los profesionales de DevOps tienen habilidades técnicas en áreas como la automatización de infraestructura, la gestión de configuraciones, la integración continua y la entrega continua, la monitorización y el análisis de la producción, la gestión de versiones, la gestión de incidentes y la seguridad.

    El objetivo final de DevOps es permitir una entrega de software más rápida, con una mayor calidad y con menos errores, lo que a su vez ayuda a las organizaciones a ser más ágiles y competitivas en un mercado cada vez más dinámico.

Deja un comentario