BPBrian Pontes
← Voltar para artigos

AI&Software Development

O desenvolvedor depois da IA

5 min de leituraBrian Pontes
Ilustração de um desenvolvedor revisando código gerado por inteligência artificial.
Nota pessoal
Este texto é uma reflexão baseada nas minhas próprias experiências utilizando IA no desenvolvimento de software. Não pretende definir o futuro da profissão, mas compartilhar como tenho percebido essas mudanças na prática

A inteligência artificial mudou bastante a forma como desenvolvemos software. Hoje, ferramentas de IA conseguem escrever código, criar testes, sugerir arquiteturas, explicar bibliotecas e até implementar uma feature inteira a partir de uma descrição, a velocidade de desenvolvimento aumentou. Mas, conforme tenho usado essas ferramentas cada vez mais, uma pergunta começou a ficar mais interessante para mim:

se a IA consegue fazer cada vez mais do trabalho de implementação, qual passa a ser o papel do desenvolvedor?

Não tenho uma resposta definitiva. Mas tenho experimentado uma possível resposta na prática.

A IA consegue escrever o código. Mas quem decide o que deve ser construído?

Uma das coisas que mais me chama atenção quando trabalho com IA é a facilidade com que ela transforma uma ideia em código. Você descreve uma feature.
A IA pode escolher uma estrutura, criar os arquivos, implementar os serviços, escrever os testes e conectar tudo. E, muitas vezes, funciona.

Mas funcionar não significa necessariamente que aquela seja a melhor solução.

Uma implementação pode estar correta e ainda ter responsabilidades mal distribuídas.
Pode funcionar hoje e dificultar a próxima feature.
Pode introduzir uma abstração desnecessária ou resolver um problema simples com complexidade demais.

É nesse espaço que acredito que o papel do desenvolvedor começa a mudar.
A pergunta deixa de ser apenas:

=> "Como eu implemento isso?"
E passa a ser:
=> "Essa é realmente a forma que deveríamos implementar isso?"

Tenho vivido isso em um projeto pessoal

Recentemente comecei a desenvolver um aplicativo chamado GameMemo.
É um projeto pessoal para organizar minha biblioteca de jogos e registrar minha experiência com eles.
Um detalhe torna esse projeto particularmente interessante para essa discussão:

eu nunca trabalhei profundamente com Flutter.


Se estivesse desenvolvendo esse aplicativo alguns anos atrás, provavelmente começaria estudando o framework antes de conseguir avançar.

Hoje, a dinâmica é diferente.
Grande parte da implementação é feita com auxílio da IA, mas eu não simplesmente descrevo uma tela e aceito o código que aparece.

Tenho definido as features, pensado nas regras de negócio, levantado cenários, definido comportamentos esperados, pensado na arquitetura e revisado o que foi produzido.

Também questiono decisões, crio cenários de teste e penso em como uma escolha pode afetar uma feature futura.

Em alguns momentos, meu trabalho se aproxima de um Product Manager. Em outros, de um Tech Lead, desenvolvedor ou revisor de código.
E o mais interessante é que o aplicativo está sendo construído, mesmo eu não sendo especialista em Flutter.

Isso me fez perceber uma coisa:

não conhecer profundamente uma tecnologia não significa não conseguir avaliar uma solução construída com ela.


Posso não conhecer cada detalhe de uma API do Flutter, mas ainda consigo questionar:

  • Essa responsabilidade está no lugar certo?
  • Essa abstração realmente é necessária?
  • Esse código está acoplado demais?
  • Como essa feature será testada?
  • O que acontece quando a API falha?
  • Essa decisão dificulta uma mudança futura?
  • O comportamento implementado realmente corresponde à regra de negócio?


O conhecimento técnico continua importante

Não acredito que a IA torne conhecimento técnico desnecessário.
Ainda precisamos entender arquitetura, banco de dados, APIs, segurança, testes, observabilidade, infraestrutura, performance e tantos outros conceitos.

A diferença está, talvez, em onde esse conhecimento é aplicado. Antes, grande parte dele precisava estar diretamente na implementação.
Eu precisava saber como escrever determinada parte do código.
Hoje, parte desse conhecimento pode estar na capacidade de avaliar a implementação.

Imagine que a IA produza duas soluções diferentes para o mesmo problema.
As duas compilam, as duas passam pelos testes, as duas aparentemente funcionam.
Qual delas deveríamos usar?

A resposta pode não estar no código.

Pode estar no domínio, nos requisitos futuros, no nível de acoplamento, na manutenção ou na complexidade que aquela decisão introduz.

Por isso, acredito que o conhecimento de implementação continua importante, mas deixa de ser suficiente para definir o papel do desenvolvedor.

Saber revisar pode ser tão importante quanto saber implementar


Existe uma habilidade que acredito que vai ganhar cada vez mais importância:
saber revisar o que a IA produziu.

E não estou falando apenas de procurar erros de sintaxe.

É olhar para uma solução e conseguir dizer:

Isso funciona mas não deveria ser assim

Ou

Essa solução resolve o problema atual, mas está criando um forte acoplamento dificultando a manutenção


Se não conseguimos avaliar o resultado, corremos o risco de apenas aceitar decisões que não sabemos explicar.

A especificação também ganha importância


Outra coisa que tenho percebido é que saber especificar um problema ficou ainda mais importante.

Quanto mais capacidade a IA tem de executar, mais importante se torna saber direcioná-la.

Uma descrição vaga pode produzir uma implementação plausível.

Uma boa especificação estabelece o comportamento esperado, as regras de negócio, os cenários de sucesso e erro, as restrições e os critérios de aceite, nesse cenário, a IA deixa de ser apenas uma ferramenta que responde perguntas e passa a fazer parte do processo de desenvolvimento.

Mas alguém ainda precisa definir o problema e principalmente, alguém precisa definir quando a solução está boa o suficiente.

A velocidade aumentou. A responsabilidade continua


Talvez essa seja a parte que mais me interessa, a IA reduziu drasticamente o custo de transformar uma ideia em implementação.
Mas o custo de tomar uma decisão ruim não desapareceu.

Se uma decisão arquitetural que antes levava duas semanas para ser implementada agora pode ser feita em algumas horas, não significa que o problema desapareceu.

Significa que podemos chegar mais rápido ao mesmo problema.


Por isso, não vejo a principal vantagem da IA simplesmente como a capacidade de produzir mais código.

Vejo como a capacidade de tomar decisões e transformar essas decisões em software muito mais rapidamente, e isso aumenta a importância de quem toma essas decisões.

O desenvolvedor depois da IA


Não sei exatamente como será o papel do desenvolvedor daqui a cinco ou dez anos. Talvez a quantidade de código escrita manualmente continue diminuindo.
Talvez as ferramentas se tornem capazes de tomar decisões cada vez mais complexas.

Mas uma coisa tenho percebido na prática:

escrever código não é a única coisa que define um bom desenvolvedor.

  • Entender problemas continua sendo importante.
  • Conhecer fundamentos continua sendo importante.
  • Saber tomar decisões continua sendo importante.
  • Saber questionar uma solução continua sendo importante.


A IA diminui o custo de implementar algo que você conhece, também diminui o custo de trabalhar com tecnologias que você ainda não domina.

O que ela não elimina é a necessidade de saber avaliar se aquilo que foi construído realmente faz sentido.


Talvez o desenvolvedor depois da IA não seja aquele que escreve mais código.

Talvez seja aquele que consegue entender o problema, tomar decisões, direcionar a IA e assumir a responsabilidade pelo resultado.

  • AI
  • SoftwareDevelopment

// Comments

Comentários

Carregando comentários...

O desenvolvedor depois da IA | Brian Pontes