How to adopt Generative AI in utilities safely and at scale
GenAI has the potential to revolutionize the utilities sector, including electricity, water, sanitation, and gas.
Desde hace un tiempo se ha popularizado el concepto de Full Stack Developer para referirse a un desarrollador de software que maneja todo el conjunto de tecnologías necesarias para construir aplicaciones de última generación.
Sin embargo, cada vez son más las voces que se unen en contra de este concepto tan generalista poniendo en contraposición otras alternativas para conseguir éxito en los proyectos de desarrollo.
Yo comencé a programar en el siglo pasado, mis primeros lenguajes fueron C y luego C++, inclusive programé un poco de Assembler 8086.
En ese momento el programador dominaba todo el espectro tecnológico para construir el software.
En otras palabras, todo o casi todo dependía de lo que uno fuera construyendo y básicamente se utilizaba un único lenguaje de programación.
Era un mundo sencillo.
La complejidad de las aplicaciones así como la forma de escribirlas ha crecido exponencialmente desde entonces.
Hoy una aplicación web, mobile, sin interfaz o de la forma que sea implica un enorme entramado de tecnologías y lenguajes.
Si a esto le sumamos el auge de las metodologías ágiles donde se pone en el centro al usuario y su entregable, ha hecho que el escenario de construir sistemas haya cambiado significativamente.
Construir una aplicación hoy implica dominar al menos algunas de estas tecnologías:
HTML, JavaScript, XML, SOAP, REST, Java, .Net, Angular, Vue, PHP, Swift, Oauth, XAML, SQL y seguramente muchas más.
Además debemos comunicarnos con servicios de terceros que son cada vez más imprescindibles, lo que implica otra rama de conocimiento adicional.
Amazon, Google, IBM, SAP, SalesForce…
Las combinaciones son infinitas.
Ante esta realidad, es que surgen como necesidad de esta era, los full Stack Developer.
En términos futbolísticos son jugadores que pueden correr toda la cancha.
Programadores que dominan todo el espectro tecnológico como para construir una aplicación moderna.
Parecería que la carrera de full stack developer está en auge.
Basta hacer una búsqueda en LinkedIn al respecto para encontrar miles de personas que se definen así mismos como full stack developer o senior full stack developer.
Sin duda esta definición ayuda a mejorar el salario. Según portales de empleo especializados, el salario de un full stack developer duplica el de un desarrollador de software que no se define como tal.
Sin embargo no existe un título formal que designe a un desarrollador como full stack.
Si lo hubiera, en todo caso, no tendría sentido, porque el stack de tecnologías que se estudia hoy va a ser por definición incompleto para mañana.
Es entonces un full stack developer un programador que se designa a sí como tal y que domina la cantidad suficiente de tecnologías para poder construir una aplicación moderna hoy.
No hay un acuerdo de qué tecnologías deben ser, lo que es seguro es que son muchas y que cada uno al autodefinirse como full stack sabrá a qué se refiere.
Así no habrá dos programadores con el mismo nivel de conocimiento.
Al final la denominación de full stack developer termina siendo un rasgo de identidad de un programador que le gusta estar al día con la tecnología.
maginemos que nos autodefinimos como full stack developer y que debemos manejar razonablemente todas las tecnologías implícitas en la construcción de software.
Estamos corriendo una carrera de atrás.
La tecnología evoluciona mucho más rápido de lo que podemos asimilar ese nuevo conocimiento.
Gran parte de nuestro esfuerzo será a estudiar lo nuevo, muchas veces mediante prueba y error.
Intentar dominar todo implica no dominar nada.
Existe entonces una paradoja de los full stack developer, por un lado se define como alguien que domina todas las tecnologías necesarias para la construcción de una aplicación, pero por otro lado es imposible tener expertise en todo , ya que a diario surgen innovaciones tecnológicas que permiten hacer más y mejores aplicaciones.
Es una carrera que no se puede ganar.
Hay un problema implícito en ser full stack developer y muchas voces en el mundo de la tecnología se están alzando en ese sentido.
Si debo estar todo el tiempo corriendo detrás de la tecnología, – que además es mucho más rápida que mi capacidad de asimilación-, voy a tener que invertir mucho tiempo en esa adaptación tecnológica constante.
Cuantas más “capas” tecnológicas domine, más tiempo tendré que dedicar a la actualización permanente.
Eso no está mal, es parte de la carrera del full stack , pero tiene un problema que se suele detectar en el largo plazo.
El trabajo de un desarrollador es solucionar problemas utilizando modelos computacionales tecnológicos.
Si nos enfocamos en conocer las últimas tendencias, estamos poniendo el foco en la tecnología y nos olvidamos de la parte de solucionar los problemas.
Entender el problema a solucionar es tanto o más importante que la solución en sí.
Para hacerlo de manera correcta, debemos entender el negocio que estamos modelando y desarrollar ciertas habilidades blandas. Esto es incluso más importante que enfocarnos en los aspectos tecnológicos.
Pero el full stack prioriza la tecnología ante el conocimiento del problema a resolver.
Con el tiempo, suele pasar que no podemos seguir ese ritmo de asimilación de nuevas tecnologías y terminamos siendo obsoletos.
No seremos buenos entendiendo problemas y no seremos capaces de usar las últimas tecnologías.
¿Existe una forma de escapar de la paradoja del full stack developer?
O planteado de otra forma, ¿Puedo estar al día siempre con la tecnología y al mismo tiempo poder enfocarme en buscar soluciones?
Lo que es claro es que si gran parte del tiempo está enfocado en correr detrás de la tecnología nuestro foco estará ahí y vamos a descuidar lo demás.
Existe una solución a esta paradoja y hoy se denomina Low-code, aunque no es un concepto nuevo.
Una plataforma Low-code sube el nivel de abstracción de desarrollo, minimizando al máximo el esfuerzo tecnológico y poniendo el foco en entender y describir el problema.
La pregunta que surge es si puedo sacar jugo a las últimas tecnologías usando esta clase de plataformas.
En realidad es el Low-code el encargado de la adaptación tecnológica, pues en función del problema, usa las últimas tendencias tecnológicas para poder construir la mejor solución posible.
La herramienta low-code es el full stack developer a nuestro servicio y nosotros somos los que entendemos el problema y describimos en un nivel de abstracción más alto cómo solucionarlo.
Tiene sentido entonces que quienes adoptan esta tecnología corren con ventaja ante desarrolladores full stack, porque no solo dominan todas las tecnologías sino que lo hacen sin dedicar tiempo en hacerlo.
Por ejemplo, GeneXus hace más de 30 años que sigue este paradigma de desarrollo de construcción de soluciones.
Hoy se posiciona como una plataforma low-code, pero antes fue RAD, Case, 4GL y otras categorías. Los nombres han ido cambiando pero el paradigma es el mismo.
El foco está en el conocimiento del negocio y encontrar la solución, la tecnología es automatizable.
En la comunidad GeneXus es normal ver desarrolladores que construyen aplicaciones que hacen uso de las últimas tecnologías disponibles con un entramado de interconecciones que parecería imposible lograr por un solo humano sin conocer el detalle técnico detrás.
Ese es el poder de usar software para construir software: permitir que un desarrollador construya lo que sería imposible hacer de forma manual sin un equipo e inversiones millonarias.
Por esta razón Gartner dice que para el año 2024 el 65% de las aplicaciones serán construidas con Low-Code.
[…] Full Stack Developers must be continuously studying new technologies to keep their knowledge up to date, because the value they offer is precisely to master the most popular technologies, which change over time. […]