> For the complete documentation index, see [llms.txt](https://weekly-essay.mikey.wang/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://weekly-essay.mikey.wang/pt-br/2023/w11-pragmatism-what-gpt-can-and-cannot-do-on-its-impact-on-software-development.md).

# W11-Pragmatismo: o que o GPT pode e não pode fazer no desenvolvimento de software

### Uma posição pragmática <a href="#a1fb1ea1-fa48-44d0-bb65-5ec80413109a" id="a1fb1ea1-fa48-44d0-bb65-5ec80413109a"></a>

**Prefiro apoiar o pragmatismo orientado à ação.**

Reconhecer a realidade e pensar em como o GPT muda o desenvolvimento, com uma visão de evolução, em vez de apenas perguntar se substituirá pessoas. Girar em torno de questões finais costuma ser vazio. Tanto desistir por pessimismo quanto ignorar por otimismo podem ser formas de preguiça. O computador foi uma mudança de época e criou muito mais do que substituiu. Devemos olhar para efeitos concretos das mudanças estruturais nos fatores de produção. Cálculo mental e caligrafia, aprendidos na infância por quem nasceu nos anos 1980 e 1990, já não são prioridades dos pais que pressionam os filhos hoje.

### O que o Copilot mostra <a href="#ce593370-e50e-4f6b-b33f-14d7e22a2eac" id="ce593370-e50e-4f6b-b33f-14d7e22a2eac"></a>

Extensões como GitHub Copilot e Tabnine permitem sentir pontos fortes e fracos do GPT.

**No que é bom**

* Aliviar tarefas repetitivas e tediosas, como scripts descartáveis, CRUD e testes unitários.
* Ajudar a explorar áreas novas, começando rapidamente com linguagens, frameworks e bibliotecas.
* Aproveitar vantagens da máquina, como escrever expressões regulares, SQL e CronJobs.

**Onde há limites**

* Segurança. A empresa já proibiu seu uso internamente.
* Direitos autorais. Trechos inferidos pelo Copilot vêm de projetos abertos no GitHub, trazendo questões de propriedade e licenças.
* Precisão. Respostas erradas do GPT convencem mais facilmente que resultados de busca. Ele tende a gerar respostas plausíveis, não necessariamente corretas.

### Efeitos sobre o desenvolvimento de software <a href="#fe7a1851-1071-4294-9dd3-9490d96308a6" id="fe7a1851-1071-4294-9dd3-9490d96308a6"></a>

**Programação**

* Habilidades e formas de aprender precisam evoluir. Serão necessários fundamentos mais profundos de computação, como compilação. Estruturas de dados, algoritmos e uso de APIs de frameworks e bibliotecas já são fáceis de obter. Praticá-los até a fluência talvez deixe de ser vantagem.
* Precisamos acumular conhecimento do negócio, melhorar compreensão e discernimento e ampliar a criatividade técnica. O foco de desenvolver aplicações pode passar de escrever código a treinar, com IA, modelos que expressem as características do domínio.

**Arquitetura**

* O arquiteto liga negócio e tecnologia. Sua responsabilidade central é entender a demanda, avaliar a complexidade que ela cria, desenhar alternativas para enfrentá-la ou reduzi-la e escolher conforme as condições.
* As diferenças entre demandas não podem ser treinadas. Departamentos e equipes diferentes produzem requisitos diferentes mesmo para o mesmo produto.
* O julgamento arquitetural não pode ser padronizado. Ele depende dos interesses das partes, da trajetória técnica da equipe e da evolução do negócio. Essas escolhas não são padronizáveis nem treináveis.
* A tecnologia muda continuamente, e arquitetura exige inovação. O ChatGPT pode criar a próxima geração de produto capaz de revolucioná-lo? Hoje, meu julgamento é que não.
