IBM Bob: Entendendo os Modos de Operação e Como Utilizá-los da Forma Correta

Neste artigo, vamos explorar os principais modos disponíveis no IBM Bob e entender quando utilizar cada um deles para obter os melhores resultados.

Os Modos do IBM Bob

A interface Agentic Sidebar do IBM Bob oferece três modos principais:

ModoObjetivo
Plan ModePlanejamento, arquitetura, design técnico e decomposição do problema sem alterar código
Agent ModeImplementação, correção, refatoração e modificação de código
Ask ModeAnálise, explicações e entendimento do código sem realizar alterações

A partir da versão 2.0, os antigos modos Code e Advanced foram consolidados em um único modo chamado Agent Mode, simplificando a experiência para os desenvolvedores. O Ask Mode é uma adição mais recente e continua recebendo melhorias constantes.

Plan Mode: Pensar Antes de Construir

Se existe um modo que considero fundamental para equipes corporativas, é o Plan Mode.

Muitas vezes o erro não está na implementação, mas sim na falta de um planejamento adequado antes de escrever a primeira linha de código.

No Plan Mode, o IBM Bob possui acesso apenas para leitura do projeto. Ele não altera arquivos e não executa comandos. Sua função é analisar o contexto da aplicação e construir um plano detalhado de implementação.

Esse modo é especialmente útil quando:

  • Uma funcionalidade impacta diversos componentes.
  • Será necessário alterar várias camadas da aplicação.
  • Existe a necessidade de definir arquitetura.
  • É preciso estimar esforço antes da implementação.
  • O desenvolvedor deseja validar o escopo antes de iniciar o trabalho.

Ao receber uma solicitação, o Bob analisa os arquivos relevantes e produz normalmente dois documentos:

Plano de Implementação

Descreve detalhadamente:

  • O que será desenvolvido.
  • Como será implementado.
  • Quais componentes serão afetados.
  • Como os testes deverão ser realizados.
  • Regras de negócio envolvidas.

Plano de Arquitetura

Apresenta uma visão mais ampla:

  • Fluxo de dados.
  • Componentes envolvidos.
  • Integrações.
  • Decisões arquiteturais.
  • Impactos no sistema.

Esses documentos tornam-se a especificação oficial que será utilizada posteriormente durante a implementação.


A Revisão Continua Sendo Responsabilidade do Desenvolvedor

Esse talvez seja o conceito mais importante ao trabalhar com qualquer ferramenta baseada em LLM.

O plano gerado pelo IBM Bob não deve ser encarado como uma sugestão informal.

Ele representa exatamente aquilo que será construído posteriormente.

Se um requisito importante estiver ausente ou incorreto no plano aprovado, existe uma alta probabilidade de que a implementação também apresente o mesmo problema.

Por isso, o processo ideal é:

  1. Gerar o plano.
  2. Ler cuidadosamente.
  3. Ajustar o que for necessário.
  4. Somente depois aprovar a implementação.

A IA acelera o desenvolvimento, mas a responsabilidade técnica continua sendo humana.

Esse conceito de Human-in-the-Loop é um dos pilares para o uso seguro e eficiente de agentes de IA em ambientes corporativos. [ibm.com][prnewswire.com]


Agent Mode: Hora de Colocar a Mão no Código

Depois que o plano foi revisado e aprovado, entra em cena o Agent Mode.

Nesse modo, o Bob possui permissão para:

  • Criar arquivos.
  • Alterar código existente.
  • Refatorar componentes.
  • Executar comandos.
  • Rodar testes.
  • Implementar funcionalidades completas.

É aqui que ocorre a materialização daquilo que foi definido durante a fase de planejamento.

Uma recomendação interessante da própria metodologia do Bob é iniciar uma nova conversa antes de começar a implementação.

Isso traz benefícios como:

  • Contexto mais limpo.
  • Maior foco na execução.
  • Melhor uso da janela de contexto.
  • Menor risco de misturar discussões de arquitetura com instruções de implementação.

Na prática, o fluxo sugerido é:

Plan ? Revisão ? Nova Conversa ? Agent

Esse processo cria uma separação clara entre planejamento e execução, algo muito próximo das boas práticas tradicionais de engenharia de software.


Ask Mode: Aprendendo e Investigando

Ask Mode foi criado para situações em que você deseja obter conhecimento sobre o código sem realizar mudanças.

Nesse modo, o IBM Bob atua como um especialista consultor.

Ele pode ajudar a:

  • Entender regras de negócio.
  • Explicar algoritmos.
  • Analisar problemas.
  • Avaliar possíveis melhorias.
  • Responder perguntas técnicas.
  • Interpretar trechos complexos de código.

É um recurso extremamente útil para onboarding de novos desenvolvedores ou para compreender sistemas legados desconhecidos.

Imagine receber uma aplicação com milhares de linhas de código desenvolvidas há anos.

Em vez de analisar tudo manualmente, é possível solicitar ao Bob explicações sobre:

  • Fluxos principais.
  • Dependências.
  • Arquitetura.
  • Padrões utilizados.
  • Possíveis gargalos.

Sem alterar absolutamente nada no ambiente.

Minha Opinião

O que mais me chamou atenção na abordagem do IBM Bob é a disciplina de engenharia embutida na ferramenta.

Muitas soluções de IA focam apenas na geração rápida de código.

O Bob incentiva um processo mais estruturado:

  1. Entender.
  2. Planejar.
  3. Revisar.
  4. Implementar.
  5. Validar.

Esse modelo reduz riscos e aumenta significativamente a qualidade das entregas.

Além disso, vejo um potencial enorme para utilização não apenas na modernização de aplicações, mas também em iniciativas de:

  • Refatoração.
  • Otimização de performance.
  • Redução de consumo de CPU.
  • Redução de uso de memória.
  • Melhoria da eficiência de aplicações Cloud.

Código melhor escrito normalmente significa menor consumo de infraestrutura, e isso pode resultar em redução de custos operacionais ao longo do tempo.


Conclusão

Os modos PlanAgent e Ask representam muito mais do que simples opções de menu. Eles materializam uma metodologia de desenvolvimento orientada por IA, onde planejamento, implementação e análise possuem papéis bem definidos.

Se você está começando a explorar o IBM Bob, minha recomendação é simples:

Nunca pule o Plan Mode.

Investir alguns minutos revisando um bom plano pode economizar horas de retrabalho posteriormente.

Este é mais um artigo da série sobre IBM Bob aqui no blog. Nos próximos posts vou explorar exemplos práticos, otimização de código, engenharia de prompts e como utilizar o Bob para melhorar a eficiência de aplicações e reduzir custos de infraestrutura em ambientes corporativos.

Leia também:

IBM Bob: Como Otimizar Código Python e Obter Ganhos Reais de Performance

Nem sempre o melhor código é possível ser escrito. Escrever código que funciona bem — rápido, limpo e fácil de manter — dentro do prazo de um projeto, normalmente não é uma realidade.

Neste artigo vou mostrar, na prática, como utilizei o IBM Bob para analisar um script Python intencionalmente ineficiente e transformá-lo em uma versão muito mais performática, utilizando um caso simples, mas extremamente comum: conversão de arquivos CSV para JSON.

O Cenário

O objetivo do projeto era relativamente simples:

  • Ler um arquivo CSV contendo informações de pessoas.
  • Normalizar os dados.
  • Gerar um arquivo JSON de saída.

A lógica de negócio é bastante simples. O diferencial está na implementação.

Para este experimento foram criadas duas versões:

  • main-low.py – implementação propositalmente ineficiente.
  • main-high.py – versão otimizada com auxílio do IBM Bob.

Todo o código-fonte, exemplos e arquivos utilizados neste artigo estão disponíveis no GitHub: https://github.com/ebasso/ibm-bob-labs/tree/main/blog-posts/python-csv2json-optimization-20260708

Resultados Obtidos

Ambos os scripts foram executados no mesmo ambiente e utilizando exatamente o mesmo conjunto de dados.

Na tabela a seguir segue o comparativo antes e depois.

AspectoVersão OriginalVersão Otimizada
Tempo de execução41,8 ms0,93 ms
NormalizaçãoMúltiplos laçosOperações nativas
Leitura CSVProcessamento intermediárioLeitura direta
Serialização JSONOperações redundantesProcessamento único
Escrita de arquivoCaracteres individuaisEscrita otimizada
Pausas artificiaisSimNão
Tamanho do código~110 linhas~50 linhas

O Prompt para o IBM Bob

Com o script em mãos, basta colar o código no IBM Bob e usar o seguinte prompt:

Você é um engenheiro Python sênior especialista em performance. 
Analise o script abaixo (main-low.py) e gere uma versão otimizada chamada main-high.py. 
Requisitos para a versão otimizada: 
1) Manter exatamente a mesma interface de linha de comando: python3 main-high.py entrada.csv saida.json 
2) Manter o mesmo formato de saída JSON (array de objetos com chaves e valores em letras minúsculas, sem espaços extras). 
3) colocar o tempo de inicio e fim e o tempo de execuçã no arquivo main-high.py.
4) criar um prompt para que eu faça o rebuild dessa primeira pasta mas com alta performance. 

Durante a análise, o Bob conseguiu:

  • Identificar gargalos de performance.
  • Detectar concatenações ineficientes de strings.
  • Encontrar operações desnecessárias de serialização JSON.
  • Simplificar a leitura e escrita de arquivos.
  • Aplicar estruturas mais idiomáticas da linguagem Python.
  • Tornar o código mais legível e mais fácil de manter.

O interessante é que o Bob não apenas gerou uma nova versão do programa, mas também justificou tecnicamente cada alteração realizada.

Se o seu custo de Cloud já está ultrapassando US$ 10.000 ou mais de US$ 100.000 por mês, vale a pena experimentar esse tipo de análise assistida pelo IBM Bob.

Revisar scripts legados, aplicações com problemas de performance e identificar oportunidades de modernização para arquiteturas serverless pode revelar gargalos e desperdícios que passam despercebidos no dia a dia, permitindo reduzir consumo de CPU, memória e tempo de execução, com impacto direto nos custos operacionais da infraestrutura.

Leia também:

Uma Série Prática sobre o IBM Bob

Em poucas palavras, a proposta do IBM Bob é oferecer um ambiente capaz de apoiar todo o ciclo de vida do desenvolvimento de software, desde a análise de requisitos até a implementação, testes, documentação, deploy, troubleshooting, melhorias de performance e modernização de aplicações legadas.

Em outras palavras, trata-se de uma plataforma baseada em agentes de IA criada para atuar de forma integrada em todas as etapas da engenharia de software.

O que mais chamou minha atenção?

Ao utilizar o IBM Bob, alguns pontos se destacaram rapidamente:

  • A capacidade de planejar, analisar, implementar e validar alterações de forma estruturada.
  • O desempenho impressionante em atividades de troubleshooting, conseguindo analisar centenas de arquivos de log e milhares de linhas em poucos minutos.
  • Bob IDE, que é baseado em um fork do VS Code. Isso reduz significativamente a curva de aprendizado, já que a maioria dos desenvolvedores já possui familiaridade com o ambiente.
  • Bob Shell, uma ferramenta muito interessante para quem gosta de trabalhar diretamente pela linha de comando.
  • Bobalytics, dashboard que permite acompanhar e gerenciar o consumo de recursos de IA, incluindo utilização de tokens (ou “bobcoins”), custos e métricas de produtividade.

Outro diferencial interessante é que o Bob não se limita à geração de código. A plataforma busca compreender o contexto completo da aplicação e auxiliar em atividades normalmente complexas, como análise de arquiteturas legadas, geração de documentação, refatoração, otimização de sistemas e atualização tecnológica.

Mas um ponto que pretendo explorar bastante nesta série é o potencial do IBM Bob para otimização de código e melhoria de performance.

Muitas organizações concentram seus esforços na modernização tecnológica, mas frequentemente deixam passar oportunidades significativas de redução de custos $$$$, através da otimização de aplicações desenvolvidas em Java, Python, Typescript ….

Esta é apenas a primeira parte

Este artigo marca o início de uma nova série dedicada ao IBM Bob.

Nos próximos posts pretendo explorar temas como:

  • Instalação e configuração inicial.
  • Integração com VS Code.
  • Modos de operação do Bob.
  • Casos práticos de geração de código.
  • Troubleshooting assistido por IA.
  • Refatoração e otimização de aplicações.
  • Técnicas para melhoria de performance.
  • Uso do Bob para análise de logs e identificação de gargalos.
  • Comparação com outras ferramentas de IA para desenvolvedores.
  • Dicas e boas práticas para obter melhores resultados.

A ideia é realizar uma análise prática, compartilhando experiências, exemplos e aprendizados ao longo da jornada.

Se você trabalha com desenvolvimento corporativo, modernização de aplicações ou simplesmente gosta de acompanhar as novidades do universo IBM, acompanhe o blog.

Em breve publicarei os próximos capítulos desta série sobre o IBM Bob. Até o próximo post! 

Leia também:

Topology of IBM Sterling B2B Integrator inside RedHat OpenShift Cluster

I usually leave the technical parts for my wiki, but this time I had to add this topology here on the blog. Running Sterling B2B Integrator in a container involves a series of pods, services, and network configurations, which can make management a bit tricky. To organize my understanding of the whole structure, I decided to create a diagram to help visualize the interactions.

Below the diagram:

The diagram I created includes all the components, as well as the critical connections that make everything work in harmony. This proved essential for understanding the topology in a clear and intuitive way.


Leia também:

Distribuições Kubernetes Simples e Pequenas

Tradução e Resumo:

Distribuições Kubernetes Simples e Pequenas para o Edge

Neste artigo descrevo três distribuições Kubernetes compactas para operação em dispositivos de borda (edge) ou em pequenos escritórios. Clusters Kubernetes de produção utilizam vários servidores físicos, mas configurações de nó único também são viáveis, especialmente para desenvolvedores. Há um aumento no uso de dispositivos de borda com ambientes Kubernetes simples.

Essas distribuições permitem gerenciamento centralizado e simplificam o desenvolvimento e testes de aplicações em uma única plataforma: Kubernetes. Exemplos práticos incluem sistemas locais, escritórios isolados, etc.

Distribuições Kubernetes mais potentes como Rancher e OpenShift são difíceis de configurar em um único nó. Assim, fabricantes oferecem distribuições leves para operação em edge, como K3s (SUSE), MicroShift (Red Hat) e MicroK8s (Canonical).

K3s (SUSE):

  • K3s é a versão menor do Rancher Kubernetes Engine, operando com recursos mínimos (1 núcleo de CPU e 512MB de RAM).
  • Dispensa a base de dados etcd, usando SQLite, ideal para operação de nó único.
  • Suporta operação multinó.
  • Usa Traefik para roteamento IP e Flannel para redes virtuais de pods.
  • Armazenamento padrão é o Hostpath, mas pode usar outros provedores.
  • Fácil de instalar em várias distribuições Linux e CPUs ARM64 e x86_64.

MicroShift (Red Hat):

  • Versão leve do OpenShift, requer 1GB de RAM e um núcleo de CPU.
  • Utiliza etcd e outros componentes como OVN e TopoLVM.
  • Instalação depende de pacotes RPM e o gerenciador de pacotes DNF.
  • Integra com o image builder do OSTree, mas depende de produtos comerciais da Red Hat.
  • Ainda em fase de desenvolvimento e documentação desatualizada.

MicroK8s (Canonical):

  • Versão leve do Kubernetes da Canonical, requer 500MB de RAM.
  • Funções agrupadas como add-ons, sem incluir roteador de entrada ou driver de armazenamento por padrão.
  • Usa Dqlite em vez de etcd e containerd em vez de CRI-O.
  • Instalação via Snap, o que complica a depuração.
  • Não suporta SELinux, apenas AppArmor.
  • Ferramentas self-built da Canonical podem ser desvantajosas.

Conclusão:
Todas as três distribuições oferecem Kubernetes compacto para borda ou pequenos escritórios. MicroShift é bem integrado com OSTree mas ainda está ligado a produtos Red Hat. MicroK8s é fácil de começar mas carece de suporte SELinux e utiliza ferramentas internas da Canonical. K3s é flexível, fácil de configurar, suporta SELinux, e utiliza projetos padrão bem mantidos.

Leia também:

Deploy de produtos IBM Sterling simplificado

Implantar múltiplas aplicações em Kubernetes/OpenShift pode ser um desafio. Gerenciar configurações, dependências e ambientes diversos pode transformar o processo em um labirinto de complexidades. No entanto, eu firmemente acredito que o processo de instalação deve ser rápido e simples. Com essa crença em mente, gostaria de apresentar a você o repositório https://github.com/ibm-sterling-devops/ansible-ibm-sterling, uma ferramenta que não só simplifica o deployment na plataforma Linux, mas também oferece suporte para Kubernetes e OpenShift, tornando-se uma solução abrangente para implantações modernas de aplicações.

Apresentando o repositório ansible-ibm-sterling

O ansible-ibm-sterling é um conjunto de playbooks e roles do Ansible projetados para automatizar o deployment de aplicações IBM Sterling. Com suporte para implantações em Kubernetes e OpenShift, ele oferece uma maneira simplificada e eficiente de gerenciar e implantar stacks de aplicações complexas em diversos ambientes.

Benefícios do uso do ansible-ibm-sterling

  1. Instalação Rápida e Simples: O processo de instalação é projetado para ser rápido e direto, alinhando-se com minha crença de que implantar aplicações deve ser livre de complicações.
  2. Automação: Esta ferramenta de deployment via CLI automatiza o processo de implantação, reduzindo a intervenção manual e minimizando erros humanos. Isso acelera o deployment e garante consistência entre os ambientes.
  3. Consistência: Garante deployments consistentes em vários ambientes, incluindo clusters Kubernetes e OpenShift, mantendo a integridade e o comportamento da aplicação.
  4. Escalabilidade: Facilmente escalável para implantar grandes aplicações em múltiplos servidores, ambientes de nuvem ou clusters Kubernetes/OpenShift, graças à arquitetura sem agente do Ansible e ao suporte a Kubernetes/OpenShift.
  5. Flexibilidade: Altamente customizável para adaptar o processo de implantação às suas necessidades específicas. A flexibilidade do Ansible e o suporte a Kubernetes/OpenShift permitem que você ajuste o processo de implantação de acordo com seus requisitos.

Como Começar

Se você está interessado em experimentar o ansible-ibm-sterling com suporte para Kubernetes/OpenShift, você pode encontrar o repositório no GitHub. O repositório contém documentação detalhada, exemplos e scripts para ajudá-lo a começar.

Para começar, siga as instruções em:

https://ibm-sterling-devops.github.io/ansible-ibm-sterling

Leia também:

Estude e Apareça

Desde que finalizei o curso de Ciência da Computação em 1997, comecei a estudar muito mais que no próprio curso, sendo um especialista no que faço. Em 2019, deixei todo o conhecimento que tinha e tenho me reinventado continuamente através do aprendizado.

Nos últimos anos, aprendi sobre Kubernetes/OpenShift, Python, Ansible, MinIO, Kafka, Cloud functions, Angular, IBM Sterling, IBM Maximo (Gestão de Ativos), Cloud functions, etc. Isso me permitiu realizar, dentro da IBM, o trabalho que gosto de fazer e estar envolvido em diversos projetos e oportunidades.

Anualmente, lanço na minha avaliação a quantidade de horas de capacitação, e sempre acima de 200 horas de estudo e mais de 3 badges/certificações!

Existem muitas maneiras de aprender, que eu pratico todas:

  1. E-Learning/Aulas Presenciais/Vídeos no Youtube

E-learning e treinamento em sala de aula são as formas mais óbvias quando se trata de aprendizado. Há muito material no IBM Your Learning e você pode obter muitos badges também. Mas você também pode aprender lendo e ouvindo (o que você pode registrar no Think 40 também, dependendo do conteúdo, eu diria). Existe muito material ruim no Youtube, mas existem excelentes vídeos de qualidade, procure sempre vídeos em Inglês e com mais de 30 minutos.

  1. Leitura

Livros podem abrir sua mente. Ler ficção científica abre para mim um mundo de coisas que poderiam ser. Isso amplia sua mente. Permite que você pense fora da caixa. Ler livros relacionados a habilidades pessoais, também abre a sua mente. Audio-livros também são uma boa, pois você pode praticar uma atividade esportiva (correr/caminhar/academia) e se aprimorar.

  1. Escutar

Você também pode aprender ouvindo podcasts. Há muitos podcasts sobre negócios, habilidades pessoais e liderança por aí. A partir desses podcasts, também aprendi sobre livros que essas pessoas leem ou documentários que são interessantes, hábitos diários que eles têm e que os ajudam.

  1. Voluntariado (aprender fazendo)

Fiz trabalho voluntário compartilhando código e compartilhando no GitHub, trabalhando em demonstrações/provas de conceito no meu próprio tempo. Gostei de fazer isso, pois me deu a oportunidade de trabalhar com as tecnologias mais recentes e, assim, aprender fazendo. Novamente, isso me permite aprender apenas fazendo as coisas. Não sou desenvolvedor, mas gosto de desenvolver. Agora estou trabalhando com integração com ferramentas que, até algumas semanas atrás, eram apenas nomes para mim. Agora sei como usá-los. Na verdade, acho que esse tipo de trabalho voluntário traz o maior benefício. Como voluntário, você faz o que gosta de fazer (não necessariamente o trabalho para o qual foi treinado), aprende e também pratica a retribuição.

Espero que você aproveite essas práticas também!

Leia também:

  • Sem textos relacionados