O que é software em 2024 — Com a Inteligência Articial, ainda precisaremos programar?

Marcelio Leal
Beyond Tech Conference
6 min readMar 11, 2024
Código Python — Photo by Chris Ried on Unsplash

Estamos passando por mais uma reviravolta na maneira que construímos empresas de tecnologia. Desta vez, várias coisas têm contribuido pra isso, como por exemplo: No-code/Low-code, muitas empresas sendo acessíveis via APIs, muita facilidade de uso de Big Data e, principalmente, Inteligência Artificial (IA). O resultado disso tudo é que temos muitas possibilidades para construção de software de forma mais fácil, barata, adequada a diferentes contextos e escalável.

O impacto disso é claro no processo de desenvolvimento de software. Isso inclui até o que chamamos de software pois a partir uma linguagem quase natural(humana), podemos criar e manter um programa de computador. Além disso, em algumas ferramentas, podemos escrever um software desenhando um fluxo, como por exemplo no Pipefy. Será que tudo isso passa a ser chamado de software ou somente os códigos "complicadinhos" como esse da figura acima?

Esse é o primeiro artigo de uma série onde vou explorar um pouco sobre o conceito de software, as tecnologias que surgiram e estão impactando o desenvolvimento, o impacto no empreendedorismo e na educação, entre outros aspectos. A ideia é apresentar não só na teoria, mas na prática, como as empresas têm utilizado esse novo cenário para criar coisas mais complexas com um custo semelhante ao do passado (antes de 2020).

Neste texto, vamos partir de uma entrevista do CEO da NVIDIA, Jensen Huang, para explorar um aspecto base, se vamos precisar de muito conhecimento para se desenvolver um software.

O milagre da Inteligência Artificial — Ninguém vai precisar programar

É impressionante a forma que IA aulixia na criação de um programa, como por exemplo o que o Copilot do GitHub ajuda o desenvolvedor. Recentemente, vimos o ChatGPT (IA generativa) gerando aplicações completas a partir de comandos (prompts) em linguagem natural. Isso proporciona que pessoas sem muito conhecimento técnico possam construir coisas que eram relativamente complexas para as mesmas, como scrapers.

Nos últimos anos, como afirmou o CEO da NVIDIA Jensen Huang em entrevista recente, muitas pessoas afirmavam que as pessoas deveriam aprender a programar ou aprender ciência da computação. Mas nessa mesma entrevista, ele afirmou que na verdade deveríamos criar tecnologias para que a linguagem de programação seja humana e que, desta forma, não precisaríamos aprender algo para poder se comunicar com computador (programar). Assim, poderíamos focar nosso aprendizado no domínio e nos tornar um especialista no assunto ao qual o problema está relacionado. Nas palavras dele:

“É nosso trabalho construir tecnologias de computação de tal maneira que ninguém precise programar. E a linguagem de programação seja humana. Todo mundo agora é um programador. Isso é o milagre da IA.”

Acredito que é fato que as novas tecnolgias de IA vem facilitando muito a capacidade de criar soluções de software. Como citamos, o ChatGPT pode gerar código, auxiliar na melhoria, finalmente auxiliar na implantação e posterior uso. Tudo isso a partir de comandos em linguagem natural e com poucas adaptações. Mas será que programar se restringe a isso?

O que é programar?

A gente passa mais tempo digitando ou somente olhando pra tela? — Photo by Kelly Sikkema on Unsplash

Segundo o Dicionário Cambridge, programar é o processo ou a habilidade de escrever programas para computador. E no mercado, embora tenhamos diferenças, a gente pode considerar que programar é um sinônimo de desenvolver software. E pra gente desenvolver um software, nós não focamos somente na solução. Existem pelo menos mais duas etapas essenciais em qualquer caso, a definição do problema e o teste.

Então, não adianta só construir algo que o computador vai entender, mas também garantir que o que foi construído está resolvendo o problema correto e corretamente.

Imagine que você sabe inglês, e que você sabe formar frases com coerência nessa lingua. Porém, no momento de se comunicar, você cria uma frase sintaticamente correta mas que não faz sentido pra outra pessoa. Simplificar programação no ato de se comunicar com o computador não faz sentido, principalmente hoje em dia. Há muito tempo essa é a parte mais fácil do desenvolvimento de software, até em pequena escala.

Hoje, mesmo que as ferramentas ajudem na construção de softwares relativamente complexos, elas ajudam pouco na definição de problemas e como testá-los de forma efetiva (pois isso está relacionado com a definição macro do problema). Essas habilidades todas são parte central do ensino da programação.

O impacto de novas ferramentas e tecnologias na programação

Quem está na área de programação há algum tempo, já passou por muitas evoluções na forma de desenvolver software. As linguagens evoluiram, para o que hoje se chama de “alto nível”, tornando-se mais simples e compreensíveis, traduzindo instruções do programador para diversos comandos em linguagem de máquina.

Depois fomos criando abstrações e mais abstrações. Os sistemas operacionais foram melhorando, uma infinidade de bibliotecas de código, os frameworks de aplicações complexas e específicas, passando por vários tipos de geradores de código e IDEs de alto nível. Tudo isso mudou o que chamamos de software e também mudou várias vezes como desenvolvemos um sistema.

A cada evolução, o discurso era o mesmo, que os dias do programador estavam contados. De fato, as coisas ficaram muito mais fáceis. Se os problemas, os requisitos dos sistemas, os dispositivos e tecnologias não tivessem mudado também, talvez precisaríamos de menos gente mesmo. Só que na realidade, cada vez que algo ficava mais fácil, os requisitos do mercado ficavam mais complexos, tínhamos possibilidades de resolver problemas mais complicados, e a necessidade de desenvolvedores aumentava.

Agora, novamente o potêncial é alto. Dá pra fazer scrapers muito facilmente, interfaces em React de conversando com um bot, testes unitários quase que automáticos, software para dispositivos diferentes, etc. Definitivamente isso vai permitir mais gente desenvolver, vai auxiliar desenvolvedores a entregarem resultados melhores ou mais rápidos, vai permitir desenvolvedores experientes a melhorarem sua capacidade e qualidade. Porém, ainda é difícil achar que vai diminuir a necessidade do entendimento de programação ou mesmo de programadores. Acho que na verdade o contrário novamente pode ser mais verdadeiro.

Será que veremos um Excel com esteroídes ou gente trocando por soluções mais elegantes?

Software ate the world

Em 2011, Marc Andreessen escreveu um famoso artigo explicando porque o software está dominando o mundo. De fato, software entrou na nossa vida e está nos impactando no dia-a-dia em vários aspectos essenciais. É só olhar que em 2022 78% das pessoas no Brasil tinham celular.

Nesse contexto, temos uma situação complicada. Quase todo mundo está fortemente influenciado/impactado por software mas pouquíssimas pessoas entendem como isso funciona. E a parcela dessas pessoas que se aprofudam, estudam o que seria proporcional às operações aritméticas fundamentais na matemática, ou seja, muito pouco pra se entender o que é um software realmente. Não é o suficiente para se ter o mínimo de uma visão crítica.

E é neste ponto que eu acredito que IA pode realmente ajudar. Pode tirar o foco da solução e dar um zoom out no processo completo, principalmente em como definimos os problemas. Além disso, pode fazer que as pessoas entendam e se preocupem com o que é a na natureza do software (estatística, determinística, etc.), como funcionam os testes, como funciona a governança básica (como uma contabilidade básica), etc. Desta forma, podemos ter uma visão mais crítica sobre algo que, como a gravidade, não vamos poder fugir, pelo menos por enquanto.

Mais um último comentário baseado num feedback do meu amigo Raphael Soares. O ponto neste artigo seria o desenvolvimento de software de aplicações simples, que estaria mais acessível por pessoas que sabem Excel, por exemplo. No contexto de engenharia de software, software corporativo ou startups de alto crescimento, a complexidade é num patamar muito superior. Eu irei abordar isso em próximos artigos.

Entrevista completa de Jensen Huang

Pessoal, na entrevista vários aspectos bem interessantes são conversados. Eu peguei apenas um pequeno trecho pra explorar, mas vale a pena assitir se você é um entusiasta da área.

Beyond Tech Conference

Pessoal, eu e o Alex Chastinet estamos organizando um evento para discutir temas de tecnologia, produto e empreendedorismo. O objetivo do evento é reunir pessoas com experiência prática para discutir temas específicos e gerar um conteúdo relevante, simples, direto e que não segue padrões impostos, leva em consideração nosso contexto atual.

Se você tem interesse em ficar atualizado ou de participar. Basta preencher este formulário para receber as novidades.

Fiquem a vontade pra falar comigo por e-mail ou qualquer outra rede social (Marcelio Leal).

--

--

Marcelio Leal
Beyond Tech Conference

Tech Leadership. Former Nu, Amazon, Bhub, GetYourGuide, Dafiti/Rocket Internet, etc.