> 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/es/2023/w11-pragmatism-what-gpt-can-and-cannot-do-on-its-impact-on-software-development.md).

# W11-Pragmatismo: lo que GPT puede y no puede hacer y su impacto en el desarrollo de software

### Una postura pragmática <a href="#a1fb1ea1-fa48-44d0-bb65-5ec80413109a" id="a1fb1ea1-fa48-44d0-bb65-5ec80413109a"></a>

**Prefiero apoyar la postura de los pragmáticos que se inclinan por actuar.**

Hay que mirar la realidad de frente y pensar, con una perspectiva de evolución, cómo influirá GPT en el desarrollo de software, en lugar de preguntarse si puede sustituir a los seres humanos. Dar vueltas a las preguntas últimas suele resultar vacío. Tanto el pesimismo que lleva a abandonar como el optimismo que lleva a ignorarlo pueden considerarse pereza. La aparición y popularización de la computadora marcó una época. Lo que creó fue mucho mayor que lo que sustituyó. Deberíamos prestar más atención a los efectos concretos que los cambios estructurales en los factores de producción tienen sobre la sociedad. Algo parecido ocurre con el cálculo mental y la caligrafía que aprendían de niños los nacidos en las décadas de 1980 y 1990: ya no figuran entre las actividades en las que los padres de hoy presionan a sus hijos para que sobresalgan.

### Qué podemos observar en Copilot <a href="#ce593370-e50e-4f6b-b33f-14d7e22a2eac" id="ce593370-e50e-4f6b-b33f-14d7e22a2eac"></a>

Extensiones de IDE como GitHub Copilot y Tabnine permiten hacerse una idea de las ventajas y limitaciones de GPT.

**Lo que hace bien**

* Librarnos del trabajo tedioso y repetitivo, como scripts de un solo uso, operaciones CRUD o pruebas unitarias.
* Ayudar a aprender y explorar nuevos campos, por ejemplo, empezar rápidamente con un lenguaje, framework o biblioteca nuevos.
* Aprovechar las ventajas de las máquinas, como al escribir expresiones regulares, SQL o CronJob.

**Sus limitaciones**

* Seguridad. En nuestra empresa ya se ha prohibido su uso.
* Derechos de autor. Como los fragmentos de código que infiere Copilot provienen de algún proyecto de código abierto de GitHub, surgen cuestiones de propiedad intelectual relacionadas con las licencias.
* Exactitud. Las respuestas erróneas de GPT resultan más fáciles de creer que las de un buscador. GPT tiende a generar respuestas plausibles —plausible answers— en vez de respuestas correctas —correct answers—.

### Impacto en el desarrollo de software <a href="#fe7a1851-1071-4294-9dd3-9490d96308a6" id="fe7a1851-1071-4294-9dd3-9490d96308a6"></a>

**Programación**

* Hay que actualizar las habilidades y la forma de aprender. Necesitamos fundamentos de computación más profundos, como las tecnologías de compilación. Los conocimientos y habilidades sobre estructuras de datos y algoritmos o sobre cómo llamar a las API de frameworks y bibliotecas de terceros ya son muy fáciles de obtener. Dominarlos a fuerza de práctica no constituye necesariamente una ventaja competitiva.
* Necesitamos acumular más conocimiento del negocio, entenderlo mejor, desarrollar criterio sobre él y aumentar nuestra creatividad técnica. El centro del desarrollo de aplicaciones podría dejar de ser escribir código y pasar a ser entrenar, mediante IA, modelos que reflejen las características del dominio.

**Arquitectura**

* En esencia, un arquitecto conecta el negocio con la tecnología. Su responsabilidad central es comprender a fondo las necesidades del negocio, evaluar la complejidad que introducen en el sistema, diseñar alternativas para afrontarla o reducirla y, finalmente, elegir según las circunstancias.
* Las diferencias entre las propias necesidades del negocio no se pueden entrenar. Por ejemplo, distintos departamentos o equipos producirán requisitos diferentes aunque desarrollen el mismo producto.
* Los juicios que se realizan durante el diseño de la arquitectura no se pueden estandarizar. El arquitecto debe decidir y hacer concesiones en función de las demandas de las partes interesadas, la evolución técnica del equipo y el desarrollo del negocio. Esas tareas no se pueden estandarizar ni aprender mediante entrenamiento.
* La tecnología evoluciona constantemente y el proceso arquitectónico necesita capacidad de innovación. ¿Puede ChatGPT crear una siguiente generación de productos que lo revolucione a él mismo? Mi juicio, por ahora, es que no.
