SlideShare uma empresa Scribd logo
1 de 34
Como usar IA para
melhorar a qualidade
do seu código
Evandro da Silva Amparo
@evandroamparo
Hoje veremos
● Uma história real
● Escrever código limpo é
difícil
● A IA veio para ficar
● Como usar as
ferramentas (LLMs)?
● Como melhorar a
qualidade do código
Quem sou eu?
Evandro da Silva Amparo
● Desenvolvedor .NET
back-end
● Engenheiro de software
● +20 anos de estrada
● Foco na qualidade do
código
Eu ajudo desenvolvedores
que usam .NET no backend a
entregarem software de
qualidade para que possam
ter acesso às melhores
oportunidades do mercado.
Uma história
real
https://twitter.com/advany/status/1664451798793584642
Uma história real
Alex, 19 anos de experiência,
completou apenas 7% das
tarefas.
Hamid, com 4 anos de
experiência, fez 95% do
trabalho em uma semana,
testes end-to-end, 100% de
cobertura.
Vercel: $20
Salário: $3500
Total estimado: $45k
Espera-se +$11k para
adicionar testes
Hospedar/executar: $20/mo
GPT-4: $211
Copilot: $20
Cloudflare: $5
Bubble: $134
Salário: $2460 (41 horas
trabalhadas)
Hospedar/executar: 139/mo
Uma história real
Escrever código limpo é difícil
(e é só uma parte da história)
A IA veio para ficar
A IA vai afetar o seu trabalho.
Nesse contexto, como se preparar para ser um profissional
melhor?
💡 É preciso saber usar as ferramentas de IA!
Se não pode
vencê-los...
● IA vai roubar empregos?
● IA como ferramenta de
produtividade
● Assistentes inteligentes
● LLMs são poderosos mas
limitados
Acostume-se com a
ideia de um código
“cyborg”
Parte escrito por humanos,
parte gerado por IA.
Como tirar melhores
resultados dos LLMs
(large language
models)?
Prompt engineering
Contexto:
▶ LLMs são treinados com todo tipo de dados:
AGI - Artificial General Intelligence
▶ Forneça contexto suficiente e instruções detalhadas
▶ Faça iterações até conseguir um resultado
satisfatório
Prompt engineering
▶ Faça de conta que está conversando com um humano
➡ “Responda como um desenvolvedor especialista no
desenvolvimento de microsserviços com .NET e Azure.
Você irá me ajudar a escrever código tolerante a
falhas. Entendeu?”
➡ Dê exemplos do tipo de resultado que você quer
(tabelas, JSON, etc).
▶ Confie, mas verifique
▶ ChatGPT foi treinado com códigos bons e ruins também
▶ Fique atento à segurança: SQL, scripts, criptografia,
senhas, etc
▶ Cuidado com dados sensíveis
Prompt engineering
Hora do código
Encontrando
problemas no
código
Encontrando
problemas
no código
💡Prompt com o
mínimo de contexto
Encontrando
problemas
no código
💡Sugeriu uma nova
regra de negócio
Encontrando
problemas
no código
💡Sugeriu outra
regra de negócio e
adicionou
explicações.
Escrevendo
casos de teste
Escrevendo
casos de
teste
💡Contexto:
existem muitas
bibliotecas no
mercado.
💡Um pequeno
deslize… mas a
lógica está
correta.
Escrevendo
casos de
teste
💡Mais casos de
teste...
Escrevendo
casos de
teste
💡Mais um caso e
explicações.
O que ele não
adicionou no
código, explicou
no texto.
Automatizando
revisão de
código
Automatizando revisão de código
Automatizando
revisão de
código
💡Com base nessas
alterações (entre
outras)...
Automatizando
revisão de
código
💡...a IA gerou o
“Resumo do PR”:
Outras
formas de
melhorar o
código:
● Adequação aos princípios SOLID,
padrões de projeto ou
padrões arquiteturais
● Resolver problemas de desempenho
● Encontrar bugs
● Escrever código mais legível,
simples, robusto, etc.
Um caso mais
complexo
Technology
Radar da
Thoughtworks
Leia ➡
Avalie = vale a
pena explorar
https://www.thoughtworks.com/pt-br/radar/techniques/ai-aided-test-first-development
Technology
Radar da
Thoughtworks
Leia ➡
Exemplo prático
da técnica.
https://martinfowler.com/articles/2023-chatgpt-xu-hao.html
Plano
ChatGPT gera um plano de
implementação (lista de tarefas)
Desenvolvimento de testes primeiro auxiliado
por IA
IA como ferramenta
🤖ChatGPT gera os testes,
󰟜dev implementa funcionalidades
Prompts reutilizáveis
Descrição detalhada da
aplicação e do problema
Gerar testes
Gerar código é a última etapa
https://www.thoughtworks.com/pt-br/radar/techniques/ai-aided-test-first-development
O que realmente importa
Foco: Não é a tecnologia e sim o resultado.
Desenvolvedores são resolvedores de
problemas.
Experiência: O que conta é a sua capacidade de tomar
decisões.
Ferramentas: Não substituem pessoas, geram + eficiência.
Habilidades: Afie suas habilidades em algo real, que traga
resultado para pessoas e empresas.
Perguntas?
󰗒 @evandroamparo
󰗒 bit.ly/mentoria-evandro-amparo

Mais conteúdo relacionado

Mais procurados

Security Process in DevSecOps
Security Process in DevSecOpsSecurity Process in DevSecOps
Security Process in DevSecOpsOpsta
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopSudhir Tonse
 
Introduction to DevOps | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | EdurekaEdureka!
 
GitOps with ArgoCD
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCDCloudOps2005
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHatJosé Pino
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with KubernetesArun Gupta
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develJose Augusto Carvalho
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Waysmalltown
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityWeaveworks
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...Edureka!
 
Slide DevSecOps Microservices
Slide DevSecOps Microservices Slide DevSecOps Microservices
Slide DevSecOps Microservices Hendri Karisma
 
Scaling DevSecOps Culture for Enterprise
Scaling DevSecOps Culture for EnterpriseScaling DevSecOps Culture for Enterprise
Scaling DevSecOps Culture for EnterpriseOpsta
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetesGabriel Carro
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub ActionsKnoldus Inc.
 

Mais procurados (20)

Gitops Hands On
Gitops Hands OnGitops Hands On
Gitops Hands On
 
Aprendendo Git
Aprendendo GitAprendendo Git
Aprendendo Git
 
Security Process in DevSecOps
Security Process in DevSecOpsSecurity Process in DevSecOps
Security Process in DevSecOps
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash Workshop
 
Introduction to DevOps | Edureka
Introduction to DevOps | EdurekaIntroduction to DevOps | Edureka
Introduction to DevOps | Edureka
 
GitOps with ArgoCD
GitOps with ArgoCDGitOps with ArgoCD
GitOps with ArgoCD
 
Kubernetes 101 for_penetration_testers_-_null_mumbai
Kubernetes 101 for_penetration_testers_-_null_mumbaiKubernetes 101 for_penetration_testers_-_null_mumbai
Kubernetes 101 for_penetration_testers_-_null_mumbai
 
Presentacion OpenShift by RedHat
Presentacion OpenShift by RedHatPresentacion OpenShift by RedHat
Presentacion OpenShift by RedHat
 
Chaos Engineering with Kubernetes
Chaos Engineering with KubernetesChaos Engineering with Kubernetes
Chaos Engineering with Kubernetes
 
Cultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e develCultura DevOps e integração entre infra e devel
Cultura DevOps e integração entre infra e devel
 
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps WayDevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
DevOpsDays Taipei 2019 - Mastering IaC the DevOps Way
 
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous SecurityHardening Your CI/CD Pipelines with GitOps and Continuous Security
Hardening Your CI/CD Pipelines with GitOps and Continuous Security
 
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
What is Git | What is GitHub | Git Tutorial | GitHub Tutorial | Devops Tutori...
 
Slide DevSecOps Microservices
Slide DevSecOps Microservices Slide DevSecOps Microservices
Slide DevSecOps Microservices
 
Scaling DevSecOps Culture for Enterprise
Scaling DevSecOps Culture for EnterpriseScaling DevSecOps Culture for Enterprise
Scaling DevSecOps Culture for Enterprise
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
Introduction to kubernetes
Introduction to kubernetesIntroduction to kubernetes
Introduction to kubernetes
 
Git ve GitHub
Git ve GitHubGit ve GitHub
Git ve GitHub
 
BDD for APIs
BDD for APIsBDD for APIs
BDD for APIs
 
Introduction to GitHub Actions
Introduction to GitHub ActionsIntroduction to GitHub Actions
Introduction to GitHub Actions
 

Semelhante a Como usar IA para melhorar a qualidade do seu código

[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?Weverton Timoteo
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a TestesGregorio Melo
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003Edgar Silva
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de SoftwareGDGFoz
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Thiago Barradas
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehaveMarcelo Zeferino
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Better Developer
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHPCezar Souza
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoLeonardo Galani
 
Leonardo Galani - Tester, pegue suas coisas porque vc está demitido
Leonardo Galani - Tester, pegue suas coisas porque vc está demitidoLeonardo Galani - Tester, pegue suas coisas porque vc está demitido
Leonardo Galani - Tester, pegue suas coisas porque vc está demitidominastestingconference
 
Práticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficientePráticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficienteGiovanni Bassi
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsJosé Alexandre Macedo
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software TestingRodrigo Vidal
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"thiagobapt
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#Gustavo Bellini Bigardi
 

Semelhante a Como usar IA para melhorar a qualidade do seu código (20)

[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
[Devs Cansados Evento 2020] Queria saber a qualidade do meu código: o que olho?
 
Programação Orientada a Testes
Programação Orientada a TestesProgramação Orientada a Testes
Programação Orientada a Testes
 
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003Aplicando  eXtreming Programing  ao cenário do  Borland ALM - BorCon 2003
Aplicando eXtreming Programing ao cenário do Borland ALM - BorCon 2003
 
Qualidade em Testes de Software
Qualidade em Testes de SoftwareQualidade em Testes de Software
Qualidade em Testes de Software
 
Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017Clean Code: Por um mundo com códigos melhores - SETI 2017
Clean Code: Por um mundo com códigos melhores - SETI 2017
 
Behaviour driven development, com jbehave
Behaviour driven development, com jbehaveBehaviour driven development, com jbehave
Behaviour driven development, com jbehave
 
Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)Do código à produção com Gitlab (mundo python)
Do código à produção com Gitlab (mundo python)
 
Test-Driven Development with PHP
Test-Driven Development with PHPTest-Driven Development with PHP
Test-Driven Development with PHP
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
#Moving br workshop
#Moving br workshop#Moving br workshop
#Moving br workshop
 
Tester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitidoTester, pegue suas coisas, você está demitido
Tester, pegue suas coisas, você está demitido
 
Leonardo Galani - Tester, pegue suas coisas porque vc está demitido
Leonardo Galani - Tester, pegue suas coisas porque vc está demitidoLeonardo Galani - Tester, pegue suas coisas porque vc está demitido
Leonardo Galani - Tester, pegue suas coisas porque vc está demitido
 
Práticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software EficientePráticas De Um Engenheiro De Software Eficiente
Práticas De Um Engenheiro De Software Eficiente
 
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOpsQuebrando barreiras entre desenvolvimento e operação de software com DevOps
Quebrando barreiras entre desenvolvimento e operação de software com DevOps
 
Clean Code na prática
Clean Code na práticaClean Code na prática
Clean Code na prática
 
WebCamps Software Testing
WebCamps Software TestingWebCamps Software Testing
WebCamps Software Testing
 
TDD para "meros mortais"
TDD para "meros mortais"TDD para "meros mortais"
TDD para "meros mortais"
 
MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#MSP Tech Days 2018 - Programação Funcional com F#
MSP Tech Days 2018 - Programação Funcional com F#
 
Teste automatizados e tdd
Teste automatizados e tddTeste automatizados e tdd
Teste automatizados e tdd
 

Mais de Evandro da Silva Amparo

Carreiras em tecnologia - Multivix Multitalks 2020
Carreiras em tecnologia - Multivix Multitalks 2020Carreiras em tecnologia - Multivix Multitalks 2020
Carreiras em tecnologia - Multivix Multitalks 2020Evandro da Silva Amparo
 
Orientação a objetos no dia a dia do programador
Orientação a objetos  no dia a dia do programadorOrientação a objetos  no dia a dia do programador
Orientação a objetos no dia a dia do programadorEvandro da Silva Amparo
 
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...Evandro da Silva Amparo
 
A carreira do profissional de desenvolvimento de software
A carreira do profissional de desenvolvimento de softwareA carreira do profissional de desenvolvimento de software
A carreira do profissional de desenvolvimento de softwareEvandro da Silva Amparo
 
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Evandro da Silva Amparo
 

Mais de Evandro da Silva Amparo (6)

Carreiras em tecnologia - Multivix Multitalks 2020
Carreiras em tecnologia - Multivix Multitalks 2020Carreiras em tecnologia - Multivix Multitalks 2020
Carreiras em tecnologia - Multivix Multitalks 2020
 
Orientação a objetos no dia a dia do programador
Orientação a objetos  no dia a dia do programadorOrientação a objetos  no dia a dia do programador
Orientação a objetos no dia a dia do programador
 
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
CodeAndCoffeeES 2017 - Desenvolvimento desktop e uma perspectiva do mercado d...
 
A carreira do profissional de desenvolvimento de software
A carreira do profissional de desenvolvimento de softwareA carreira do profissional de desenvolvimento de software
A carreira do profissional de desenvolvimento de software
 
Git e Github
Git e GithubGit e Github
Git e Github
 
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
Estratégias de desenvolvimento de aplicativos para dispositivos móveis em vár...
 

Como usar IA para melhorar a qualidade do seu código