A IA na engenharia de software está alcançando um ‘momento Oppenheimer’? Aqui está o que você precisa saber

IA na engenharia de software 'momento Oppenheimer'? O que saber

Esta manhã, quando abasteci meu carro, resmunguei porque os preços subiram novamente. Hoje, os preços da gasolina subiram para $4.55 por galão.

Mas então, comecei a fazer várias perguntas sobre o que foi necessário para obter aqueles seis quilos de líquido volátil para mim, especialmente como o software alimentou o processo. O software analisou dados geológicos e gerenciou as máquinas de perfuração para garantir que não superaquecessem. O software ajudou a rastrear o clima e guiou os navios gigantes que transportam o combustível. Ele gerenciou os sistemas de refinaria e forneceu monitoramento de segurança. Além disso, gerenciou o pagamento e as operações da bomba para colocá-lo no meu carro.

Também: Como usar o ChatGPT para escrever código

Recursos Especiais

A Interseção da IA Generativa e Engenharia

A explosão da IA generativa pode aproveitar um tremendo potencial para o campo da engenharia. Mas também pode trazer desafios, à medida que empresas e engenheiros descobrem o impacto da IA em seus papéis, estratégias de negócios, dados, soluções e desenvolvimento de produtos. Como será o futuro para trazer a IA generativa para o mundo do software? A ENBLE decodifica de todos os ângulos.

Então, há o que foi necessário para escrever o software que ajudou a localizar o combustível no subsolo. Certamente não é um programador sentado com uma Coca-Cola e pizza escrevendo código enquanto ouve Rush. O software industrial, como o que dirige máquinas de perfuração profunda, requer engenharia de software especializada.

E essa engenharia de software provavelmente foi auxiliada pela IA.

Eu me sinto enormemente animado e ao mesmo tempo profundamente aterrorizado. A IA pode muito bem ser o “momento nuclear” da engenharia de software, onde estamos trazendo para o mundo novas capacidades enormemente poderosas, mas o que está contido nessas capacidades? O poder de destruir.

O que é engenharia de software?

Para realmente entender a IA na engenharia de software, primeiro temos que entender o software.

O software controla computadores, onde um computador pode variar de um PC na sua mesa a um pequeno processador em um equipamento de fábrica. Para simplificar, o software é uma série de instruções que dizem ao computador o que fazer.

A programação (coloquialmente chamada de “codificação”) é a prática de juntar essas instruções para fazer algo acontecer. Eu mantenho um pequeno programa que permite que as pessoas doem para organizações sem fins lucrativos. Por exemplo, eu mantenho um programa de doações com 153.259 linhas de código. Programas maiores, como o Windows e o Linux, requerem centenas de milhões de linhas. Importante, a ordem e a estrutura das instruções controlam a operação do programa. Se tudo estiver certo, o programa faz o que você deseja. Se algo estiver errado, os resultados são imprevisíveis.

Também: Como usei o ChatGPT para escrever um bookmarklet personalizado em JavaScript

Agora, vamos falar sobre linguagens de programação. As linguagens são a sintaxe usada para criar programas. Você pode ter ouvido falar de C, Java e Swift, mas existem centenas delas. A questão é que diferentes linguagens podem ser usadas para realizar a mesma coisa. Assim como uma receita de lasanha pode ser escrita em italiano ou inglês, você ainda precisa colocá-la no forno pelo tempo certo.

Também: Como usei o ChatGPT para escrever a mesma rotina em 12 principais linguagens de programação. Veja como foi

As linguagens são escolhidas por muitas razões, desde a adequação a uma tarefa até a compatibilidade com um ambiente de destino desejado. Como é impossível conhecê-las todas, alguns programadores preferem trabalhar nas linguagens que conhecem. Não se preocupe muito com a ideia de linguagens, mas saiba que elas são as palavras e a estrutura das palavras usadas para criar o código.

Também: Como usei o ChatGPT para escrever a mesma rotina em dez linguagens de programação obscuras

Os programadores juntam instruções de computador para fazer algo acontecer. Mas pense nos números que mencionei. Somente o código do meu software de doações tem mais de cem mil dessas instruções. Isso é uma tonelada de complexidade. Pode ficar muito confuso e quebrar rapidamente.

Aqui está como pensar na engenharia de software como uma disciplina:

  • A engenharia de software usa métodos científicos, assim como construir uma ponte, para projetar e testar software.
  • É uma abordagem estruturada, semelhante a arquitetos planejando antes de construir.
  • Assim como os engenheiros usam as melhores práticas para estruturas robustas, os engenheiros de software garantem software confiável e eficiente.

Portanto, se você vai deixar seu carro te levar pela estrada a 70 mph, seria bom saber que você não está colocando sua vida nas mãos de um software não testado escrito por algum programador que vive à base de pizza e latas de Red Bull, mas sim que alguma disciplina de engenharia foi empregada na criação e teste do software que está dirigindo.

Também: Estou usando o ChatGPT para me ajudar a corrigir código mais rápido, mas a que custo?

Há uma sobreposição entre programação e engenharia de software. Sou um engenheiro de software treinado que também sabe programar. Um desenvolvedor, seja de empresas ou indivíduos, cria produtos de software. Suas habilidades incluem programação, engenharia de software e desenvolvimento de negócios.

A engenharia de software é a disciplina por trás da programação que a torna gerenciável, sustentável e, em última análise, confiável.

Qual é a diferença entre IA e software?

Tecnicamente, software é qualquer coisa que faça algo com base em bits e bytes, em vez de hardware. Por exemplo, uma planilha de orçamento do Excel não é considerada tão “software” quanto o próprio programa Excel, a menos que a planilha inclua muitas macros e seja vendida como um aplicativo de software em si.

O software tradicional se baseia em uma série de etapas e decisões. Se você está criando código descrevendo etapas e decisões, está programando de forma tradicional.

Mas a IA não funciona assim. A ideia principal da IA é fazer saltos intelectuais que não foram pré-definidos como etapas e decisões. Em vez disso, a IA usa dados – geralmente muitos e muitos dados – para ajudar a orientar sua saída.

Quando você pede ao ChatGPT para escrever um artigo sobre infraestrutura de TI, ele o faz com sucesso não porque os designers anteciparam sua pergunta e escreveram um código especial que ajuda a escrever artigos sobre infraestrutura de TI. Da mesma forma, quando o Midjourney ajuda você a criar uma imagem de um elefante voador saindo de um laptop, não é porque algum programador escreveu uma rotina de elefante voador apenas porque alguém poderia querer essa imagem.

Também: Pedi ao ChatGPT para escrever um plugin do WordPress que eu precisava. Ele fez isso em menos de 5 minutos

Em vez disso, os sistemas de IA usam grandes modelos de linguagem (LLMs) para criar o que lhes foi solicitado a partir de enormes bibliotecas de dados – praticamente toda a internet, além de todas as outras informações que os engenheiros de IA puderam fornecer para os sistemas.

Tudo isso torna a IA algo um pouco além do software. Isso também significa que nenhum humano, na verdade, sabe exatamente o que faz o ChatGPT responder como faz. Essas são chamadas de “habilidades emergentes” e são características de grandes modelos de linguagem que não foram programadas desde o início.

O interessante sobre a IA é que começamos a nos afastar das disciplinas típicas de engenharia. Nem sempre podemos prever o que os AIs farão ou como o farão. Convencer uma IA generativa a fazer algo, o que é chamado de “engenharia de prompt”, é quase tanto gerenciamento e negociação quanto prática de engenharia tradicional.

Também: A IA tomará empregos de programação ou transformará programadores em gerentes de IA?

Como ex-professor de programação, interagir com LLMs como o ChatGPT parece mais um envolvimento com estudantes do que com ambientes de programação.

Como a IA pode ser aplicada na engenharia de software?

À medida que a IA se torna comum, estamos vendo o que pode se tornar uma relação simbiótica entre engenheiros de software e ferramentas de IA generativa. A IA, por exemplo, pode sugerir otimizações de código, identificar bugs e até prever os efeitos em cascata de mudanças em um sistema.

No início deste ano, fiz muita “programação de estúdio” com a IA, apenas para ver o que ela era capaz de fazer. Também a usei para ajudar a encontrar um bug particularmente confuso, identificar código que precisava ser alterado para garantir compatibilidade com versões mais recentes do software de plataforma, escrever rotinas curtas que ajudaram minha esposa em seus negócios e criar um bookmarklet do Chrome que me ajuda a criar links “Também” em meus artigos do ENBLE. Não posso dizer que a IA se tornou essencial para minha carga de trabalho, mas tem sido uma ajuda muito boa.

Também: OK, então o ChatGPT acabou de depurar meu código. De verdade.

Sem dúvida, as ferramentas de IA generativa que foram tão populares este ano foram construídas por engenheiros de software. A IA pode fazer parte do processo de engenharia de software. Também pode ser o resultado da engenharia de software.

Além disso, a IA pode ajudar os desenvolvedores em suas tarefas. Se pensarmos nos aspectos da engenharia de software – design, programação, depuração, manutenção, gerenciamento, teste, distribuição e migração (para citar alguns) – a IA pode ajudar em todas essas áreas. Por exemplo, a IA pode automatizar tarefas de programação repetitivas, tornando o processo mais rápido e eficiente. Além disso, pode prever possíveis bugs ou vulnerabilidades no código, garantindo um software mais robusto e seguro.

Existem, no entanto, limites. Eu comecei usando IA para escrever algumas rotinas simples. Depois, quando tentei com rotinas mais complexas, a IA começou a perseguir o próprio rabo. Mas quando alimentei uma IA com um monte de código que estava com erros (onde eu não conseguia encontrar o que estava errado), a IA apontou o erro. A IA também pode ajudar a estabelecer regimes de testes. Ela pode ajudar as pessoas do suporte técnico a responder perguntas quando os novos agentes não têm experiência suficiente para saber as respostas por conta própria.

Também: Como o ChatGPT pode reescrever e melhorar seu código existente

No seu estado atual, a IA não pode ser confiável para acertar quando se trata de auxiliar na engenharia de software. Ela pode ser comparada a um estudante universitário talentoso, mas também inconstante, que às vezes tem insights de brilhantismo profundo, mas não fornece as respostas precisas necessárias.

Então, há o que a IA pode fazer pelo mundo. É aí que precisamos de uma cogitação comunitária sobre o conceito.

Tenha em mente que os incríveis avanços e aplicações de IA listados abaixo são construídos sobre os fundamentos da engenharia de software. Sem os princípios e práticas da engenharia de software, essas ferramentas e serviços impulsionados por IA não seriam possíveis.

Aqui estão dez coisas que a IA faz por nós no mundo real agora mesmo:

  1. Assistentes pessoais como Siri, Alexa e Google Assistant nos ajudam com tarefas e respondem perguntas.
  2. Algoritmos de saúde auxiliam no diagnóstico de doenças e na previsão de resultados para pacientes.
  3. Ferramentas de análise financeira ajudam no comércio de ações e na detecção de fraudes.
  4. Algoritmos de recomendação de conteúdo sugerem filmes, músicas e artigos com base em nossas preferências.
  5. Chatbots de atendimento ao cliente lidam com consultas e reclamações de clientes.
  6. Robôs de fabricação auxiliam em linhas de montagem e controle de qualidade.
  7. Serviços de tradução de idiomas são alimentados por IA.
  8. A IA é amplamente utilizada em jogos de grandes estúdios para tornar esses jogos interativos, inteligentes e cativantes.
  9. Sistemas de segurança utilizam reconhecimento facial e detecção de anomalias em cibersegurança.
  10. Algoritmos de marketing personalizam anúncios e alcance ao cliente.

E, desde que tivemos o surgimento da IA generativa este ano (o que está mudando muito mais), naturalmente, aqui estão dez coisas que a IA fará por nós na próxima década:

  1. A saúde avançada pode incluir a descoberta de medicamentos com assistência de IA e medicina personalizada.
  2. Modelagem climática para prever e mitigar os efeitos das mudanças climáticas.
  3. Inteligência emocional em IA que pode ler e responder às emoções humanas.
  4. Robótica avançada que pode realizar tarefas complexas e ajudar na vida diária.
  5. Experiências de realidade virtual alimentadas por IA, oferecendo mundos virtuais totalmente imersivos.
  6. Sistemas educacionais que fornecem experiências de aprendizagem personalizadas adaptadas às necessidades individuais.
  7. Exploração espacial assistida por IA na navegação e operação de espaçonaves.
  8. Assistência jurídica por meio de IA em pesquisas jurídicas e preparação de casos.
  9. Arte e criatividade aprimoradas por arte e música geradas por IA, ou como ferramenta colaborativa para artistas.
  10. Melhorias na segurança pública por meio de IA na previsão e resposta a desastres.

E então, há os carros autônomos. De fato, a IA e o aprendizado de máquina estão melhorando a eficácia das comunicações em carros autônomos e aprimorando o desempenho das câmeras em nossos smartphones.

A IA, assim como o software, estará incorporada em tudo que usamos, esperançosamente adicionando valor ao longo do caminho.

Quais são as questões éticas urgentes em IA e engenharia de software?

Além de ajudar no processo de implementação da engenharia de software, os engenheiros de software precisam guiar o crescimento da IA. Falamos sobre os modelos de linguagem em si, mas os engenheiros de software precisam ajustar o comportamento da IA, garantir as melhores práticas e garantir que o produto final (a parte que chega ao público em geral) tenha salvaguardas para garantir um comportamento ético.

Também: Quem é o proprietário do código? Se a IA do ChatGPT ajudar a escrever seu aplicativo, ele ainda pertence a você?

Isso é difícil. Os engenheiros de software agora têm o que eu acho que se poderia chamar de “dever” que vai além da codificação e depuração. Essencialmente, os engenheiros de software que constroem IA são os principais “guardiões” e “professores” dos sistemas de IA. Portanto, cabe a esses engenheiros garantir que a tecnologia de IA seja desenvolvida e implementada de forma ética.

Também: Se você usar código gerado por IA, qual é a sua responsabilidade legal?

Deixe-me deixar claro aqui: isso está muito além da zona de conforto da maioria dos programadores. A maioria dos engenheiros de software é treinada em processos e análises, bem como em práticas de implementação e codificação. Eles não são treinados em filosofia e ética. E a maioria dos engenheiros de software certamente não é treinada em como lidar quando diferentes grupos de pessoas têm perspectivas diferentes sobre o que é ético ou mesmo sobre o que é certo ou errado.

No ENBLE, temos acompanhado há muito tempo a questão do viés à medida que ele se manifesta nos sistemas de IA. Não é um problema simples. Mas os viéses na IA podem levar a problemas do mundo real, como decisões injustas de empréstimo ou viéses ocultos nas práticas de contratação. A IA está se tornando fundamental em setores como saúde, finanças e segurança pública, entre muitos outros.

Se a IA for mal utilizada ou simplesmente não for implementada levando em consideração uma ampla gama de considerações que incorporem tomadas de decisões equitativas, os resultados podem ser devastadores. Como tal, os engenheiros precisam incorporar controles de acesso, monitoramento de uso, mecanismos de auditoria e muito mais para sistemas baseados em IA.

Mas essas questões vão muito além do que é possível em um fluxo de trabalho tradicional de engenharia de software. As equipes que implantam sistemas de IA precisarão envolver especialistas nas áreas de psicologia, ciências sociais, ética, gerenciamento comunitário e muito mais.

Se os modelos de linguagem modernos forem treinados na Internet e no conteúdo de bibliotecas e bancos de dados, eles herdarão inherentemente os viéses dessas fontes. Mas, em vez de apenas causar desconforto em alguém que responde a uma frase negativa, a tomada de decisão baseada em IA pode causar danos permanentes, físicos, custosos e dolorosos para os indivíduos.

Tudo isso precisa ser gerenciado no software, mas orientado por profissionais com uma visão de mundo mais ampla do que é normalmente ensinado na escola de engenharia.

A IA está passando por um momento ‘Oppenheimer’ agora?

Algum tempo atrás, fiz minha última aula de química do ensino médio. Calculadoras de bolso eram populares, mas meu professor de química insistiu que todos aprendêssemos a usar a régua de cálculo para fazer cálculos.

Nunca mais usei uma régua de cálculo desde aquela aula. Meu professor estava ensinando uma habilidade que estava claramente obsoleta. Embora eu acredite que possa haver algum benefício em saber usar uma régua de cálculo em algum cenário pós-apocalíptico onde não haja fontes de energia, eu imagino que se estivermos lidando com um apocalipse, teremos problemas maiores do que uma régua de cálculo poderá resolver.

Como engenheiro, não uso régua de cálculo. Eu uso computadores poderosos, programação complexa, planilhas e todo o conjunto de capacidades que nosso mundo digital moderno oferece. A visão do meu antigo professor sobre o que era necessário para “fazer ciência” era muito diferente do que se tornou minha prática real de “fazer ciência” ao longo da minha carreira.

À medida que avançamos em um mundo onde as ferramentas de IA são tão prevalentes e transformadoras quanto os PCs eram quando eu era um jovem engenheiro recém-formado, nossas ferramentas serão muito diferentes. Porque nossas ferramentas incorporarão capacidades de IA, precisaremos expandir nossas habilidades para entendê-las e usá-las.

Muitas disciplinas de engenharia exigem que seus praticantes considerem ativamente a segurança. Construtores de pontes precisam entender como fornecer oxigênio aos trabalhadores e manter o mar longe ao usar caixões para construir os pilares da ponte. Engenheiros aeronáuticos precisam entender como manter um avião no ar e oxigênio na cabine quando voam acima das nuvens. Construtores de estradas precisam entender como moldar e esculpir explosões com cuidado para limpar o terreno sem causar danos às áreas circundantes.

E assim, a engenharia de software deve evoluir de testes e validações para considerações reais de segurança da sociedade. Essas são algumas reflexões finais a serem mantidas em mente ao considerarmos o futuro da IA e da engenharia de software.

Estamos no limiar de uma nova era, tão transformadora, diferente e capacitadora quanto foram a revolução industrial, a revolução dos PCs e o surgimento da Internet. As ferramentas e metodologias nas quais costumávamos confiar estão evoluindo, e com elas, nossas responsabilidades e considerações éticas se expandem.

Precisamos ter em mente esses três pilares de transformação:

  • Abraçar a mudança: Assim como a régua de cálculo se tornou obsoleta com o surgimento de calculadoras e computadores modernos, as práticas tradicionais de engenharia de software precisarão se adaptar diante das capacidades da IA. Isso não significa descartar o conhecimento fundamental, mas sim complementá-lo com novas percepções e ferramentas que a IA traz para a mesa.

  • Adotar uma abordagem holística: A integração da IA em nosso cenário digital exige uma abordagem holística para a engenharia de software. Não se trata apenas de codificação, é entender as implicações mais amplas de nossas criações, desde impactos sociais até considerações éticas.

  • Praticar aprendizado contínuo em todos os níveis: Os avanços rápidos na IA significam que a aprendizagem e adaptação contínuas são essenciais. Os engenheiros de software precisarão se manter atualizados com as últimas novidades no desenvolvimento de IA, garantindo que aproveitem seu poder de forma responsável e eficaz. Da mesma forma, a IA também precisa aprender continuamente, adotando melhores práticas e diretrizes à medida que as implicações de sua implantação se tornam aparentes no cotidiano.

É adequado que no meio de um ano em que a IA generativa tem agitado a indústria de tecnologia, o filme Oppenheimer tenha dominado nossas telas de cinema. O filme biográfico segue a vida de J. Robert Oppenheimer, o físico teórico mais conhecido como “o pai da bomba atômica”.

Em essência, Oppenheimer serve como um reflexo comovente dos custos do avanço científico, do peso da responsabilidade suportada por aqueles na vanguarda da inovação e da complexa interação entre ciência, ética e política no mundo moderno.

O diretor Christopher Nolan disse em uma entrevista recente: “Quando falo com os principais pesquisadores no campo da IA agora … eles se referem literalmente a isso como seu momento Oppenheimer”.

Essa mesma declaração descreve perfeitamente como o efeito cascata da IA na engenharia de software explode da prática de codificação para nossas comunidades em geral.


Você pode acompanhar as atualizações diárias do meu projeto nas redes sociais. Não deixe de se inscrever na minha newsletter semanal de atualização no Substack e me seguir no Twitter em @DavidGewirtz, no Facebook em Facebook.com/DavidGewirtz, no Instagram em Instagram.com/DavidGewirtz e no YouTube em YouTube.com/DavidGewirtzTV.