teleporthq
Plataforma
Soluciones
Integraciones
Recursos

Ascendiendo por el árbol de abstracción

Subiendo por el árbol de la abstracción

Recuerdo las primeras líneas de código que escribí. Durante mi primer año de secundaria, tuve mi primer contacto con la programación. Mi profesor nos dijo que era hora de dejar de hablar de pseudocódigo y algoritmos y empezar a escribir código en C++ que realmente se ejecutara. Fue una sensación extraña de satisfacción. Mi programa leía dos números de la consola y escribía su suma en ella.

Mientras miraba esa consola, ni siquiera pensaba en el hecho de que otros 29 estudiantes habían escrito las mismas líneas de código. ¿Por qué habría de ser un problema? Al fin y al cabo, estábamos aprendiendo, ¿no?

Avancemos 15 años. Aunque el contexto es distinto, el resultado es el mismo. Tú, yo y decenas de miles de desarrolladores de todo el mundo escribimos las mismas líneas de código. Puede que no estemos sumando dos números, pero sin duda alineamos divs, obtenemos datos de puntos de conexión REST y consultamos usuarios en una base de datos. ¿Seguimos aprendiendo?

El auge de la automatización

Cuando hablamos del aprendizaje humano en 2019, tenemos un fuerte competidor: uno que no se cansa de escribir y ejecutar el mismo código una y otra vez, y que puede influir enormemente en el futuro de nuestro trabajo.

Hoy se habla mucho de la automatización y de que las máquinas sustituyan a los seres humanos. Entonces, ¿cómo se está preparando nuestro mercado laboral para eso?

La automatización ya es una práctica consolidada en la ingeniería de software. Los lenguajes de programación y las herramientas más comunes incorporan mucha automatización. Pensemos en la asignación de memoria y la recolección de basura, así como en la comprobación de tipos y la compilación de programas.

Además, los propios procesos de desarrollo de software se benefician de la automatización. Ejecutamos pruebas funcionales y no funcionales en nuestras aplicaciones y servicios. Contamos con canalizaciones automatizadas de compilación y despliegue que ponen en marcha servidores y configuran los entornos por nosotros.

Sin embargo, cuando pensamos en el acto de escribir código, seguimos considerándolo un trabajo humano. En toda la pila tecnológica, dependemos de ingenieros especializados que diseñan la arquitectura, diseñan y construyen sistemas de backend, bases de datos, aplicaciones web, aplicaciones móviles, etc.

Quizá los trabajos de ingeniería de software no estén destinados a automatizarse. Quizá «automatización» no sea la palabra adecuada. ¿Qué tal «abstracción»?

Automatización frente a abstracción

Piensa en la programación de bajo nivel frente a la de alto nivel. En cuánta flexibilidad tienes al asignar memoria o acceder a los registros del procesador. Y, sin embargo, en cuánta potencia obtienes con un framework bien diseñado.

Cuando eliges un nivel de abstracción más alto, dejas que otros tomen por ti las decisiones de bajo nivel. Así puedes ofrecer una solución de software completa mucho más rápido. Esa es la teoría, claro.

La abstracción puede concebirse como un árbol de decisiones. Cheng Lou dio una excelente charla sobre las ventajas y desventajas de subir y bajar por ese árbol de abstracción.

En definitiva, la abstracción consiste en automatizar tareas repetitivas y poder expresar más con menos esfuerzo. Se trata de usar ese fragmento de código que escribió otra persona, sin duplicar el trabajo.

La automatización está aquí para ayudarnos; no para reemplazarnos, sino para permitirnos alcanzar niveles más altos de abstracción. Esto provocará un ligero cambio en el mercado laboral de los ingenieros de software. Pero, sin duda, no pondrá fin a la necesidad de la ingeniería de software. Significa que cada vez más tendremos que dedicar menos tiempo a programar soluciones de bajo nivel que otros ya han resuelto. Y, con suerte, dedicaremos más tiempo a abordar problemas que aún no se han resuelto.

¿Se está quedando atrás el desarrollo frontend?

Si nos centramos en el mundo de la web y los dispositivos móviles, el desarrollo de aplicaciones está avanzando a pasos agigantados en esta dirección. En los últimos años hemos visto un crecimiento notable de las herramientas, los frameworks y los servicios. Todos intentan ofrecer abstracciones mejores y más potentes.

El backend como servicio, GraphQL y las herramientas de sistemas de diseño se están convirtiendo en prácticas habituales. Sin embargo, todavía no hemos llegado a ese punto en la creación de interfaces de usuario para móviles o la web. Trabajamos con los elementos básicos de bajo nivel de la web: HTML, CSS y JavaScript. Sí, tenemos TypeScript, React, CSS-in-JS y decenas de herramientas más que mejoran la experiencia de desarrollo. Pero nuestras tareas no han cambiado fundamentalmente. Seguimos escribiendo los mismos componentes y las mismas interacciones de usuario que miles de desarrolladores de todo el mundo. Seguimos aprendiendo.

Reducir la brecha con la automatización y la generación de código

Hay una brecha en la pila tecnológica. El desarrollo frontend puede avanzar hacia un mayor nivel de abstracción. El código que escribimos actualmente se puede automatizar o generar. Solo tenemos que imaginar nuevas formas de modelar toda la complejidad de la interfaz. Podemos empezar por analizar los sistemas de eventos, las máquinas de estados y los flujos de datos bidireccionales. No será fácil, ¡pero será divertido!

Me incorporé a TeleportHQ el pasado noviembre con un objetivo claro. Quiero reducir esta brecha y trabajar en el siguiente nivel de abstracción para el desarrollo frontend. Creo en la nueva era de herramientas, patrones y prácticas que están surgiendo para sustituir las implementaciones de bajo nivel de tareas de interfaz de usuario redundantes.

¿Esta ola de automatización y abstracción nos permitirá centrarnos en los aspectos críticos y complejos de la ingeniería frontend? ¿Y resolverá los problemas de las tareas repetitivas y aburridas? ¡Estoy deseando descubrirlo! Así que únete a nuestra misión de desarrollar los mejores generadores de código para aplicaciones web y móviles, como una biblioteca de código abierto.

Inspiración

Publicaciones relacionadas

Comentarios

Todavía no hay comentarios. Sé la primera persona en compartir tu opinión.

Deja un comentario

Tu correo electrónico nunca se muestra públicamente.
Los comentarios se revisan antes de publicarse.