Como adotar IA Generativa em utilities com segurança e escala
GenAI has the potential to revolutionize the utilities sector, including electricity, water, sanitation, and gas.
Há algum tempo, o conceito de Full Stack Developer se tornou popular por se referir a um desenvolvedor de software que lida com todo o conjunto de tecnologias necessárias para construir aplicativos de próxima geração.
No entanto, há cada vez mais vozes que se unem contra este conceito tão generalista, colocando em contraposição outras alternativas para alcançar o sucesso em projetos de desenvolvimento.
Comecei a programar no século passado, minhas primeiras linguagens foram C e depois C++, até programei um pouco de Assembler 8086.
Naquela época, o programador dominava todo o espectro tecnológico para construir o software.
Em outras palavras, tudo ou quase tudo dependia do que se estava construindo e basicamente uma única linguagem de programação era usada.
A complexidade dos aplicativos, bem como a maneira de escrevê-los, cresceu exponencialmente desde então.
Hoje uma aplicação web, móvel, sem interface ou de forma que seja implica uma enorme rede de tecnologias e linguagens.
Se adicionarmos a isso o surgimento de metodologias ágeis onde o usuário e sua entrega estão no centro, isso fez com que o cenário de construção de sistemas mudasse significativamente.
Construir um aplicativo hoje envolve o domínio de pelo menos algumas dessas tecnologias:
HTML, JavaScript, XML, SOAP, REST, Java, .Net, Angular, Vue, PHP, Swift, Oauth, XAML, SQL e certamente muitos mais.
Devemos também nos comunicar com serviços de terceiros que são cada vez mais essenciais, o que implica outro ramo de conhecimento adicional.
Amazon, Google, IBM, SAP, SalesForce …
As combinações são infinitas.
Diante dessa realidade, é que o Full Stack Developer surge como uma necessidade desta era.
Em comparação com o futebol, são jogadores que podem correr todo o campo.
Programadores que dominam todo o espectro tecnológico para construir um aplicativo moderno.
Parece que a carreira de desenvolvedor full stack está no auge.
Basta fazer uma pesquisa no LinkedIn sobre isso para encontrar milhares de pessoas que se definem como desenvolvedor full stack ou desenvolvedor full stack sênior.
Sem dúvidas, essa definição ajuda a melhorar o salário. De acordo com portais de empregos especializados, o salário de um desenvolvedor full stack é o dobro de um desenvolvedor de software que não é definido como tal.
No entanto, não há um título formal que designe um desenvolvedor como full stack.
Se houvesse, neste caso, não faria sentido, porque o stack de tecnologias que se estudada hoje estará, por definição, incompleta para amanhã.
Um desenvolvedor full stack é então um programador que se auto-intitula como tal e que domina tecnologias suficientes para ser capaz de construir um aplicativo moderno hoje.
Não há consenso sobre quais devem ser as tecnologias, o certo é que são muitas e que cada uma, ao se definir como full stack, saberá a que se refere.
Assim, não haverá dois programadores com o mesmo nível de conhecimento.
No final das contas, o nome de desenvolvedor full stack acaba sendo um traço de identidade de um programador que gosta de se manter atualizado com tecnologia.
Vamos imaginar que nos definimos como um desenvolvedor full stack e que devemos lidar razoavelmente com todas as tecnologias implícitas na construção de software.
Estamos fazendo uma corrida de costas.
A tecnologia evolui muito mais rápido do que podemos assimilar esse novo conhecimento.
Muito de nosso esforço será estudar o novo, muitas vezes por tentativa e erro.
Tentar dominar tudo significa não dominar nada.
Existe então um paradoxo do desenvolvedor full stack, por um lado ele é definido como alguém que domina todas as tecnologias necessárias para a construção de uma aplicação, mas por outro lado é impossível ter expertise em tudo, já que as inovações tecnológicas surgem diariamente que permitem fazer mais e melhores aplicações.
É uma corrida que não pode ser vencida.
Há um problema implícito em ser um desenvolvedor full stack e muitas vozes no mundo da tecnologia estão surgindo a esse respeito.
Se eu tiver que correr atrás de tecnologia o tempo todo – o que também é muito mais rápido que minha capacidade de assimilação – terei que investir muito tempo nessa constante adaptação tecnológica.
Quanto mais “camadas” de tecnologia eu dominar, mais tempo terei para me dedicar à atualização permanente.
Isso não é ruim, faz parte da corrida full stack, mas tem um problema que geralmente é detectado a longo prazo.
O trabalho de um desenvolvedor é resolver problemas usando modelos computacionais tecnológicos.
Se nos concentrarmos em conhecer as últimas tendências, estamos colocando o foco na tecnologia e esquecendo a parte de resolver os problemas.
Compreender o problema a ser resolvido é tão ou mais importante do que a própria solução.
Para fazer isso corretamente, devemos entender o negócio que estamos modelando e desenvolver certas habilidades pessoais. Isso é ainda mais importante do que focar nos aspectos tecnológicos.
Mas o full stack prioriza a tecnologia em vez do conhecimento do problema a ser resolvido.
Com o tempo, muitas vezes não conseguimos acompanhar esse ritmo de assimilação de novas tecnologias e acabamos ficando obsoletos.
Não seremos bons em compreender problemas e não seremos capazes de usar as tecnologias mais recentes.
Existe uma maneira de escapar do paradoxo do desenvolvedor full stack?
Ou dito de outra forma: Posso estar sempre atualizado com a tecnologia e, ao mesmo tempo, ser capaz de me concentrar em encontrar soluções?
O que está claro é que, se a maior parte do tempo estiver focado em correr atrás da tecnologia, nosso foco estará lá e negligenciaremos o resto.
Existe uma solução para esse paradoxo e hoje ele se chama Low-code, embora não seja um conceito novo.
Uma plataforma Low-code aumenta o nível de abstração do desenvolvimento, minimizando o esforço tecnológico tanto quanto possível e colocando o foco no entendimento e na descrição do problema.
A questão que se coloca é se posso tirar proveito das tecnologias mais recentes usando esses tipos de plataformas.
Na realidade, o Low-code se encarrega da adaptação tecnológica, pois dependendo do problema, utiliza as últimas tendências tecnológicas para poder construir a melhor solução possível.
A ferramenta low-code é o desenvolvedor full stack ao nosso serviço e somos nós que entendemos o problema e descrevemos em um nível mais alto de abstração como resolvê-lo.
Faz sentido, então, que aqueles que adotam essa tecnologia tenham uma vantagem sobre os desenvolvedores full stack, porque eles não apenas dominam todas as tecnologias, mas o fazem sem perder tempo fazendo isso.
Por exemplo, GeneXus segue este paradigma de desenvolvimento de construção de soluções há mais de 30 anos.
Hoje está posicionado como uma plataforma low-code, mas antes era RAD, Case, 4GL e outras categorias. Os nomes estão mudando, mas o paradigma é o mesmo.
O foco está no conhecimento do negócio e encontrar a solução, a tecnologia é automatizável.
Na comunidade GeneXus é normal ver desenvolvedores que constroem aplicações que fazem uso das últimas tecnologias disponíveis com uma rede de interconexões que pareceria impossível de ser realizada por um único ser humano sem conhecer os detalhes técnicos por trás dela.
Esse é o poder de usar software para construir software: permitir que um desenvolvedor construa o que seria impossível fazer manualmente sem uma equipe e sem investimentos de milhões de dólares.
Por esse motivo, o Gartner afirma que até 2024 65% dos aplicativos serão desenvolvidos com 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. […]