Cuando comencé mi viaje en el desarrollo de software en 2014, el aprendizaje era muy diferente de lo que vemos y conocemos hoy. Si bien había algunas plataformas de desarrollo como Stack Overflow, GitHub o SourceForge, no había tantos recursos disponibles en línea como los que hay hoy, y las preguntas publicadas en los foros permanecían sin resolver durante días.
El viaje fue aún más desafiante para desarrolladores como mi padre, quien comenzó su carrera en los años 90. Me contó sobre sus días codificando en Cobol y Pascal, cuando el aprendizaje se basaba predominantemente en libros y los cursos solo se impartían en el sitio. No existían academias online y sitios como Udemy, YouTube o Stack Overflow aún estaban lejos de estar en el mapa: adquirir conocimientos requería mucho autoestudio y disciplina.
Cuando se enfrentaba a un problema, mi padre no podía simplemente buscarlo en Google para ver cómo otras personas resolvían el mismo problema y obtener la respuesta en segundos, como podemos hacerlo hoy. En cambio, tuvo que hablar con un colega más experimentado, con la esperanza de tener una respuesta, y la investigación podría llevar varios días. Las capacidades modernas, incluidas las herramientas de inteligencia artificial (IA), han cambiado drásticamente la forma en que abordamos el desarrollo de software, haciéndolo mucho más rápido y eficiente.
Las cosas eran muy diferentes a la experiencia de mi padre cuando comencé como desarrollador. Sitios como Stack Overflow comenzaron a ganar popularidad y los desarrolladores de todo el mundo se ayudaban entre sí. La forma en que los desarrolladores aprendieron sobre nuevos temas estaba evolucionando y tener más recursos disponibles hizo que el viaje fuera un poco más fácil. Con el tiempo, YouTube también se ha convertido en una gran fuente de información, y los desarrolladores publican útiles tutoriales en vídeo en canales especializados.
El aprendizaje sobre desarrollo de software ha evolucionado desde la lectura de libros o cursos presenciales hasta ver un tutorial en YouTube o inscribirse en un curso bajo demanda en plataformas como Udemy. La IA llevaría el aprendizaje a un nivel completamente nuevo.
El auge de la IA
La primera IA que se hizo popular en el desarrollo de software fue GitHub Copilot. Así es como lo define GitHub :
“GitHub Copilot es un programador de pares de IA que te ayuda a escribir código más rápido con menos trabajo. Extrae contexto de comentarios y código para sugerir líneas individuales y funciones completas al instante”.
GitHub Copilot se lanzó en octubre de 2021. Utiliza el Codex de OpenAI para traducir el lenguaje natural en código. Fue entrenado con datos de lenguaje natural y miles de millones de códigos fuente disponibles públicamente.
La IA ha progresado no sólo en el desarrollo de software sino también en muchos otros campos como el procesamiento de imágenes, el reconocimiento de voz, el análisis de datos, los vehículos autónomos y la robótica, y la lista crece cada día que pasa. La única herramienta que realmente llamó la atención de todos fue ChatGPT de OpenAI por su versatilidad y su interfaz fácil de usar. Todos pueden usarlo ya que fue entrenado con una gran cantidad de datos de Internet, no solo con código.
Mi primera interacción con esta IA fue muy informal, con GPT-3 en enero de 2023. Solo hice algunas preguntas sobre mi país para tener una idea de cuánto sabe “él”: preguntas como los mejores lugares turísticos, platos tradicionales y sitios famosos. personas y respondió todas mis preguntas con precisión en cuestión de segundos. Esto me hizo pensar que este era el fin de los motores de búsqueda tradicionales.
Unos días más tarde, pedí crear un juego de tres en raya muy básico usando HTML, Javascript y CSS. El CSS generado no fue el diseño más atractivo que he visto, pero funcionó. Por otro lado, el juego en sí no funcionaba. Pedí dos veces que lo arreglaran y no pude. Tenía curiosidad sobre esto, así que comencé a depurar el código. Encontré y resolví el problema yo mismo, pero quería que GPT-3 lo resolviera. Entonces, después de saber cuál era el problema, lo expliqué como lo haría en una conversación normal con un compañero de trabajo, y pareció que lo “entendí” y lo resolví.
Usos prácticos de la IA en el desarrollo de software
Hoy en día, la IA se puede utilizar en todas las etapas del desarrollo de software, desde el inicio hasta la implementación, y más aún con los chatbots para interactuar con los clientes.
Centrándose en la codificación, GitHub Copilot y GPT-4 son las herramientas más eficaces disponibles actualmente. Los usé en diferentes situaciones:
- Escribir expresiones regulares
- Ayuda para comprender lo que hace un fragmento de código.
- Creando funciones puras cortas
- Optimización del código existente, que es muy útil para expresiones booleanas compuestas complejas.
- Hablar con él para crear una estructura de base de datos, solo como referencia, ya que puede confundirse fácilmente con una base de datos compleja.
- Escribir pruebas unitarias
- Aprender a utilizar una biblioteca/framework con ejemplos prácticos
- Obtener ideas sobre posibles razones de cualquier error.
Desafíos de la IA en el desarrollo de software
Si bien es innegable que la IA ha aportado muchos beneficios al desarrollo de software, también plantea sus propios desafíos. Debido a que no comprende completamente el código, depender demasiado de él para generar código puede generar errores complejos y vulnerabilidades de seguridad, además de no tener en cuenta la escalabilidad o adaptabilidad futura. También puedes cometer errores y descubrir un “hecho” que no es del todo cierto.
Puede tener algunas implicaciones legales y éticas porque no está claro quién es el propietario del contenido creado, ya que se genera a partir de muchos recursos en Internet. Por estos motivos, aunque la IA ofrece muchos beneficios, algunas empresas han prohibido el uso de la IA por parte de sus creadores y, al mismo tiempo, otras empresas están aprovechando los beneficios.
El verdadero papel de la IA en el desarrollo de software
La IA ha evolucionado mucho en los últimos años y ahora está en todas partes. Actúa como aliado de los desarrolladores en el área de Desarrollo de Software. Normalmente lo considero un “amigo” con mucha experiencia que siempre está disponible para ayudarnos a encontrar una solución a cualquier problema o ayudarnos a decodificar código complejo.
Las IA como GitHub Copilot brindan a los desarrolladores sugerencias de código relevantes en tiempo real, lo que reduce significativamente el tiempo y el esfuerzo necesarios para escribir nuevas líneas de código, pero estos fragmentos de código son solo ideas. No conoce todo el contexto de una aplicación y debemos tener cuidado de no implementarlas sin cuidado, ya que esto podría introducir nuevos fallos o agujeros de seguridad.
GitHub publicó los resultados de una encuesta a más de 2000 desarrolladores en 2022 para comprender el impacto que tuvo Copilot en la productividad y la felicidad de los desarrolladores. Al utilizar Copilot, el 88% se sintió más productivo, el 74% se sintió más satisfecho en el trabajo y el 96% dijo que era más rápido en tareas repetitivas. Según mi experiencia, estas estadísticas son bastante precisas. Copilot es una excelente herramienta que ahorra tiempo y ayuda a reducir los errores de sintaxis y refactorizar código no complejo.
Por otro lado, las IA como ChatGPT están diseñadas para ayudar con una gama más amplia de tareas, no solo con la codificación. Personalmente, lo uso a menudo como herramienta para aprender nuevos conceptos o bibliotecas junto con la documentación oficial.
En conclusión, la IA complementa nuestro trabajo como desarrolladores de software, pero no reemplaza el valor de la visión humana, la creatividad y la capacidad de resolución de problemas. En cambio, complementa estas cualidades, permitiéndonos centrarnos en las cosas divertidas en lugar de las tareas repetitivas, aumentando la satisfacción y la productividad y haciendo que la codificación sea más eficiente.
De cara al futuro, creo que apenas estamos comenzando a utilizar la IA en la codificación. Es probable que veamos aún más herramientas que ofrezcan más ayuda en tiempo real, detecten errores tempranamente, tengan en cuenta el contexto de toda la aplicación e incluso deleguen por completo algunas tareas a la aplicación. Pero el verdadero cambio de juego se producirá cuando estas herramientas realmente entiendan lo que estamos tratando de hacer. ¡Es un momento emocionante para ser desarrollador!
Si le gustó esto, asegúrese de consultar nuestros otros artículos sobre IA.
- Una guía para incorporar IA en su flujo de trabajo
- Ética de la IA: ¿un desafío para la próxima década?
- Mitos sobre la inteligencia artificial y la seguridad laboral: ¿los robots quitarán nuestros trabajos?
- Herramientas de prueba de software de aprendizaje automático e inteligencia artificial en entrega continua
- Los obstáculos para implementar la IA y la robótica en el sector sanitario
Fuente: BairesDev