Esta entrevista fue originalmente realizada en inglés por email. Por tanto, primero se ofrece una traducción al español, y al final, se encuentra la versión original.
This interview was originally conducted in English by email. The Spanish translation is provided first, followed by the original version.
Grady Booch es uno de los pioneros en el campo de la ingeniería de software. Es principalmente conocido por ser uno de los creadores del Lenguaje Unificado de Modelado (UML) junto con Ivar Jacobson y James Rumbaugh, y por desarrollar el Método Booch, una metodología para el desarrollo de software orientado a objetos.
Nacido en 1955, Booch ha dedicado su carrera a avanzar las prácticas de desarrollo de software. Actualmente es Científico Jefe y miembro de IBM Research, donde continúa investigando en áreas como arquitectura de software, inteligencia artificial y desarrollo de software. En su lado «menos polémico» lo podemos leer con frecuencia en su cuenta de Twitter/X, donde se mantiene implicado en cómo la informática se integra a la sociedad.
Sus contribuciones al campo incluyen:
El desarrollo del Método Booch para diseño orientado a objetos.
La cocreación de UML, que se convirtió en el estándar de facto para el modelado de software.
La autoría de varios libros influyentes, incluyendo Object-Oriented Analysis and Design with Applications.
Su trabajo pionero en patrones de arquitectura de software.
Un apunte: UML ha repercutido a toda la informática, pues a medida que el software va creciendo su complejidad aumenta y, por tanto, se vuelve necesario —e inevitable— diseñar herramientas visuales. Incluso los más críticos de UML, no pueden evitar dibujar figuras geométricas en la pizarra, que se van relacionando y que nos recuerdan a, sí, UML :-)
Booch ha recibido numerosos reconocimientos por sus contribuciones, incluyendo el premio Lovelace de la Association for Computing Machinery (ACM) en 2012 y el IEEE Computer Society Computer Pioneer en 2016.
Algunas de sus citas memorables:
«La función de un buen software es hacer que lo complejo parezca simple».
Que se puede combinar con «La tarea del equipo de desarrollo de software es diseñar la ilusión de simplicidad».
«El ingeniero de software aficionado siempre está en busca de magia».
«Toda la vida es iterativa. Esto nos lleva de nuevo al punto que mencioné antes, que es que no se puede saber a priori lo suficiente como para siquiera hacer las preguntas correctas».
¡Espero disfruten de esta corta pero interesante entrevista!1
Versión traducida
(1) A lo largo de tu extensa carrera en ingeniería de software, has sido testigo de la evolución de muchas tecnologías y paradigmas. ¿Cuáles han sido los hitos más importantes que has presenciado y cómo crees que han dado forma al campo de la ingeniería de software?
La transición de lenguajes y métodos algorítmicos a orientados a objetos representó un cambio masivo; el auge de los sistemas distribuidos a través de Internet, particularmente con dispositivos móviles, cambió la naturaleza misma del desarrollo.
Es justo decir que el campo de la ingeniería de software está en constante cambio.
Y eso es algo bueno.
(2) Fuiste uno de los creadores de UML, una herramienta fundamental en el diseño de sistemas. Más de dos décadas después de su introducción, ¿cómo ves la relevancia actual de UML en la industria, y qué mejoras crees que deberían hacerse para adaptarlo a las necesidades actuales?
El lenguaje unificado de modelado alcanzó quizás una penetración del 20% en todo el campo, lo cual es francamente bastante grande, pero lo más importante es que introdujo una forma diferente de pensar sobre el desarrollo de software, y eso perdura: las clases y objetos son tanto parte de la atmósfera del desarrollo de software que es como un pez pensando en el agua.
Independientemente del UML, sigue existiendo la necesidad de visualizar y razonar sobre la arquitectura de sistemas intensivos en software; de hecho, mira los diagramas de AWS para arquitectura, o la forma en que tratamos de visualizar sistemas de IA generativa.
(3) Con el avance de la IA generativa (de la cual he visto que has sido crítico), muchos predicen que parte del proceso de desarrollo de software será automatizado. ¿Cuál es tu perspectiva sobre cómo la IA cambiará el papel de los ingenieros de software y científicos de la computación en los próximos años?
No soy crítico de la IA generativa; soy crítico de las empresas e individuos que exageran la IA generativa más allá de lo que es capaz de hacer.
La IA cambiará la naturaleza del desarrollo de software de la misma manera que lo hicieron los compiladores: ayudan a elevar el nivel de abstracción del desarrollo.
(4) Eres un fuerte defensor de la ética en el desarrollo de software. En un mundo donde la IA tiene un impacto cada vez mayor, ¿cómo podemos asegurar que las tecnologías emergentes se desarrollen y utilicen éticamente? ¿Cuál será el papel de la filosofía en este proceso?
Esa es la pregunta correcta y difícil. El problema es que hay individuos intensamente ricos que realmente no se preocupan por la ética y ese es el mayor obstáculo.
La educación es clave; el hecho de que ACM, IEEE, AAAI y otras organizaciones profesionales estén impulsando la ética de la IA me da esperanza.
(5) Mirando hacia el futuro, más allá de la inteligencia artificial y las tecnologías actuales, ¿qué tendencias emergentes en ciencias de la computación crees que tendrán el impacto más profundo en nuestra sociedad y en la forma en que interactuamos con la tecnología?
La computación se ha movido hacia los espacios intersticiales de la sociedad, y eso es simultáneamente maravilloso y desafiante.
Los modelos basados en transformadores son, en mi opinión, útiles aunque un callejón sin salida arquitectónico, y creo que veremos el surgimiento de sistemas neurales simbólicos.
(6) Sé que te apasionan los libros. Si tuvieras que recomendar algunos libros a nuevos científicos de la computación que están comenzando en el mundo actual, un mundo donde la ciencia de la computación parece conectarse con muchas áreas del conocimiento, particularmente las humanidades, ¿cuáles elegirías y por qué?
Mira algunos clásicos: The Human Use of Human Beings de Wiener y The Pattern on the Stone de Hillis.
(7) Si tuvieras la oportunidad de viajar en el tiempo y darle un consejo no técnico a tu yo más joven, ¿cuál sería y por qué lo consideras importante?
Compra más acciones de Apple y NVIDIA :-)
Original
(1) Throughout your extensive career in software engineering, you've witnessed the evolution of many technologies and paradigms. What have been the most important milestones you've witnessed, and how do you think they have shaped the field of software engineering?
The transition from algorithmic, languages and methods to object oriented ones represented a massive change; the rise in distributed systems via the Internet in particular with mobile devices change the very nature of development.
It is fair to say that the field of software engineering is under constant change.
And that's a good thing.
(2) You were one of the creators of UML, a fundamental tool in system design. More than two decades after its introduction, how do you see UML's current relevance in the industry, and what improvements do you think should be made to adapt it to current needs?
The unified modeling language achieved perhaps a 20% market penetration throughout the field, which is frankly quite large, but most importantly, it introduced a different way of thinking about software development, and that endures: classes and objects are so much a part of the atmosphere of software development that it is akin to a fish thinking about water
Independent of the UML, there remains need to visualize and reason about the architecture of software intensive systems; indeed, look at AWS’s diagrams for architecture, or the way we try to visualize genAI systems.
(3) With the advancement of generative AI (which I've seen you being critical of), many predict that part of the software development process will be automated. What's your perspective on how AI will change the role of software engineers and computer scientists in the coming years?
I am not critical of generative AI; I am critical of the companies and individuals, who hype generative AI beyond what it is capable of doing
AI will change the nature of software development in the same way the compilers did: they help raise the level of abstraction of development.
(4) You're a strong advocate for ethics in software development. In a world where AI has an increasingly greater impact, how can we ensure that emerging technologies are developed and used ethically? What will be the role of philosophy in this process?
That is the right and hard question. The problem is you have intensely wealthy individuals who really don't care about ethics and that is the greatest stumbling block.
Education is key; the fact of the ACM, the IEEE, AAAI, and other professional organizations are pushing the ethics of AI gives me hope
(5) Looking toward the future, beyond artificial intelligence and current technologies, what emerging trends in computer science do you think will have the most profound impact on our society and the way we interact with technology?
Computing has moved itself into the interstitial spaces of society, and that is simultaneously wonderful and challenging.
Transformer based models are in my opinion useful albeit an architectural dead end, and I think we will see the rise of neural symbolic systems.
(6) I know you're passionate about books. If you had to recommend some books to new computer scientists starting out in today's world, a world where computer science seems to connect with many areas of knowledge, particularly the humanities, which ones would you choose and why?
Look at some classics: The Human Use of Human Beings by Wiener and The Pattern on the Stone by Hillis.
(7) If you had the opportunity to travel back in time and give non-technical advice to your younger self, what would it be, and why do you consider it important?
Buy more Apple and NVIDIA stock :-)
La traducción se realizó con Claude-3.5-Sonnet.