Entrevista en el blog: Robert C. Martin (Uncle Bob)

La primera vez que leí algo escrito por Robert C. Martin fue alrededor del año 2002. Ese año leí por primera vez el «principio de inversión de la dependencia», de Robert, en un artículo en la C++ Report.
Robert Cecil Martin, el «Tío Bob», es uno de los fundadores principales de los métodos ágiles, autor de «clean code» (para muchos de nosotros, uno de los mejores libros sobre buen y mal código), es uno de los más influyentes autores en programación orientada a objetos, y así sucesivamente. Sus videos «código limpio» (clean dode) son un material de formativo excepcional para los profesionales del software. Todo esto entre otros muchos libros (como “clean coder” o “agile software development”) y demás contribuciones. ¡Qué más puedo decir de él!
Personalmente, es un gran honor para entrevistar a Robert, porque parte de mi tesis doctoral se inspiró en principios como el «principio de inversión de la dependencia». ¡Cómo iba a imaginar en aquellos tiempos esta entrevista!
Robert, muchas gracias por la entrevista.
The first time I read something written by Robert C. Martin was about the year 2002. That year I first read the «dependency inversion principle» by Robert, in an article in the C++ Report.
Robert Cecil Martin, the «Uncle Bob», is one of the key founders of agile methods, author of “Clean Code” (for many of us, one the best book about good and bad code), he is one of the most influential authors in OO programming, and so on. His videos «clean code» are an exceptional training material for software professionals. All these among others many books (like clean coder or agile software development) and contributions. What more can I say about him!
Personally, it is a great honor to interview Robert, because part of my dissertation was inspired by principles such as “dependency inversion principle”. How was I supposed to know this interview!
Robert, thank you very much for the interview.
De nada.
1 – La mayoría conocemos su trabajo en agilidad, programación OO, el principio de inversion de la dependencia, pero … ¿Quién es Robert C. Martin? ¿De dónde eres? Antecedentes? ¿Dónde trabajas? ¿Dónde trabajaste?
Nací en 1952, en Palo Alto, Californa, pero he vivido cerca de Chicago durante los últimos 55 años. Escribí mi primera línea de código cuando tenía 12 años, y nunca he mirado atrás. Mi primer trabajo fue de programador COBOL, pero rápidamente cambié a ensamblador para mini-ordenadores a mediados de los 70.
Luego C a mediados de los 80, y C + + en los años 90. Me especialicé en sistemas de telecomunicaciones integradas. En los años 90 me convertí en consultor, y llevo felizmente empleándome a mí mismo desde entonces.
Fundé la empresa Object Mentor Inc. y la dirigí durante 15 años. Ofrecimos formación en ágil y orientación a objetos y consultoría para el mundo en general. Hoy en día, junto con mi intrépida y hermoso hija, Ángela, llevo “Uncle Bob Consulting” LLC (cleancoder.com), a través de la cual continuaré ofreciendo capacitación y consultoría en prácticas de desarrollo ágil y OO.
Ella y yo creamos los vídeos “clean code” y cleancoders.com. Y déjenme decirles que es lo más divertido que creo que jamás he hecho en mi vida profesional. No sólo me pongo a escribir y actuar en mis propias películas, también he podido comprar todos los accesorios que siempre he querido, como modelos de naves espaciales, pistolas de rayos, “minecraft gimmicks”, escupideras, etc.
You are quite welcome.
1 – Most knows your work with the agility, the OO programming, dependency inversion principle, but… Who is Robert C. Martin? Where are you from? Background? Where did you work? Where do you work?
I was born in 1952, in Palo Alto, Californa, but I have lived near Chicago for the last 55 years.   I wrote my first line of code when I was 12, and have never looked back.  My first job as a programmer was writing COBOL, but I quickly changed to writing assembler for mini-computers in the mid ‘70s.  Then C in the mid ‘80s, and C++ in the ‘90s.  I specialized in embedded telecommunications systems.  In the ‘90s I became a consultant, and have been happily employed by myself ever since.  I founded the company Object Mentor Inc. and ran it for 15 years.  We offered Agile and OO Training and consulting to the world at large.  Nowadays, along with my intrepid and lovely daughter, Angela, I run Uncle Bob Consulting LLC (cleancoder.com), through which I continue to offer training and consulting in Agile and OO development practices and disciplines.  She and I also create the “Clean Code” videos at cleancoders.com.  And let me tell you, that’s the most fun I think I’ve ever had in my professional life.  Not only do I get to write and act in my own films, I also get to buy all the props I’ve ever wanted, like starship models, ray-guns, minecraft gimmicks, spittoons, etc. 
2- Escribiste en “Clean Code” lo siguiente:
«A medida que el desorden aumenta, la productividad del equipo continúa disminuyendo. Dado que la productividad disminuye, la gestión hace lo único que puede; agregar más personal. Además, ellos, y todos los demás en el equipo, están bajo una presión terrible para aumentar la productividad. Así que todos ellos hacen cada vez mas desorden, impulsando la productividad cada vez más hacia  cero «.
Vemos esto todos los días. ¿Por qué sigue ocurriendo tan a menudo? ¿Cómo podemos evitarlo de una vez? ¿Es un problema de formación o es, tal vez, innato al negocio del software?
No es un problema de formación, aunque la formación puede ayudar. Es un problema de actitud. Y no es la actitud de los directivos o clientes. Somos nosotros los programadores quienes debemos cambiar de actitud.
Nosotros, los programadores no tratamos a nuestro trabajo como una profesión. Los programadores no se adhieren a las disciplinas y a los códigos de conducta. Solo hacemos tanto código como sea posible tan rápido como podamos, porque eso es lo que creemos que debemos hacer. No lo es.
Lo que se supone que debemos hacer es un buen trabajo. Y hacer un buen trabajo significa ser cuidadoso, prudente (o cauto), disciplinado y limpio.
Cuando estás en los veinte crees que el camino para ir rápido es ir lo más rápido que se pueda, tanto tiempo como sea posible. Al llegar a la treintena empiezas a preguntarse si eso es correcto. Por los cuarentas te das cuenta de que a menudo se puede ir mucho más rápido yendo más despacio y pensando en vez de actuar. En el momento en que llegas a los cincuenta entiendes que el comportamiento prudente, disciplinado y cuidadoso te hará ir más rápido de lo que nunca fuiste a los veinte.
Algunas profesiones aprenden esto tempranamente: médicos, pilotos, soldados, o cualquier persona que trate con una base regular. Ellos aprenden esto de los mayores (personas con más experiencia) en su campo. Los médicos jóvenes no llegan a operar sin supervisión durante un largo tiempo. Los médicos mayores (con más experiencia) les enseñan primero disciplina y actitud. Los pilotos no llegan a transportar pasajeros hasta que han acumulado una gran cantidad de horas de práctica y entrenamiento, y como co-pilotos.
La primera actitud que tenemos que cambiar en nuestra profesión es la noción de que velocidad es lo mismo que correr. No eres más rápido por correr. Uno se hace más rápido, teniendo cuidado. La única manera de ir rápido, es ir bien.
2 – You wrote in “Clean Code” the following:

“As the mess builds, the productivity of the team continues to decrease. As productivity decreases, management does the only thing they can; they add more staff. Furthermore, they, and everyone else on the team, are under horrific pressure to increase productivity. So they all make more and more messes, driving the productivity ever further toward zero.”

We see it every day. Why so often today continues it happening? How can we avoid it at once? Is it a problem of training or is maybe innate to software business?
It is not a problem of training, although training can help.  It’s a problem of attitude. And it’s not the attitude of managers or customers.  It’s us programmers who’s attitudes must change. 
You see, we programmers don’t treat our jobs as a profession.  We don’t adhere to disciplines and codes of behavior.  We just sling as much code as we can as fast as we can because that’s what we believe we’re supposed to do.  It’s not.
What we are supposed to do is do a good job.  And doing a good job means being careful, deliberate, disciplined, and clean. 
When you are in your twenties you think the way to go fast is to go as fast as you can for as long as you can.  When you reach your thirties you start to wonder if that’s right.  By the time you are in your forties you realize that you can often go a lot faster by slowing down and thinking rather than acting.  By the time you get to your fifties you understand that deliberate, disciplined, and careful behavior make you go faster than you ever went in your twenties.
Some professions learn this early: Doctors, pilots, soldiers, or anyone who deals with very high stakes on a regular basis.  They learn this from the elders in their field.  Young doctors don’t get to operate unsupervised for a long time.  Older doctors teach them the disciplines and attitudes first. Pilots don’t get to fly passengers until they’ve racked up a lot of hours with practice and trainers, and as co-pilots.
The first attitude that we need to change in our profession is the notion that speed is the same as rushing.  You don’t get done faster by rushing.  You get done faster by being careful.  The only way to go fast, is to go well.
3 – Ya han pasado más de 10 años desde el nacimiento del manifiesto ágil. Y eres uno de los fundadores clave. ¿Cómo ves el futuro de la agilidad?
En cuanto a la adopción de técnicas ágiles se refiere, creo que va a continuar como lo ha hecho. Más y más equipos adoptarán las prácticas ágiles. Con el tiempo, todo el software se hará de esta manera.
En cuanto al movimiento ágil en sí, no lo sé. Recientemente, el movimiento se dividió en las áreas «ágil» y «Craftsmanship». En el área Ágil están todos los jefes de proyecto y los “Scrum master” que se centran en el proceso de desarrollo y las “soft skills”. En el área Craftsmanship tienes a todos los programadores que se centran en disciplinas y habilidades técnicas, como Test Driven Development. Tengo la esperanza de que estos dos campos se reúnan, pero…
3 – It’s been over 10 years since the birth of the agile manifesto. And you are one key founders. How do you see the future of agility?
As far as the adoption of agile techniques is concerned, I think it will continue as it has.  More and more teams will adopt the agile practices.  Eventually, all software will be done this way.
As far as the organized agile movement itself is concerned, I don’t know.  Recently the movement split into the “Agile” and “Craftsmanship” camps.  In the “Agile” camp are all the project managers and scrum masters who focus on the development process and soft skills.  In the Craftsmanship camp you’ve got all the programmers who focus on the disciplines and technical skills, like Test Driven Development.  I have hopes that these two camps will reunite; but…
4 -¿Cuáles son sus tres libros favoritos que cada profesional software debe leer? (Por supuesto, además de «clean code»)
The Art of Computer Programming by Knuth, all three volumes.
Design Patterns by Gamma, et. al.
The Structure and Interpretation of Computer Programs by Abelson and Sussman.
4 – What are your three favorite books that every software professional must read? (Of course, in addition to «clean code»)
The Art of Computer Programming by Knuth, all three volumes.
Design Patterns by Gamma, et. al.
The Structure and Interpretation of Computer Programs by Abelson and Sussman.
5 – ¿Alguna  recomendación para los jóvenes ingenieros de software?
Sí. ¡Programar! Programar en el trabajo. Programar en casa. Trabajar para tu empresa 40 horas a la semana. A continuación, trabaja para ti mismo otras 20 horas a la semana. ¡Aprender! Aprende un lenguaje nuevo cada año. ¡Lee! Encuentra buenos libros, artículos, blogs, etc., y devóralos. ¡Enseña! Encuentra a alguien dispuesto a aprender de ti y enséñale. La mejor manera de aprender es enseñar.
Nuestra industria está cambiando muy rápidamente. No te quedes atrapado en una sola lengua, un solo paradigma, o una sola plataforma. Si lo haces, te darás cuenta de que la industria se ha pasado sobre ti y pasarás tiempos muy difíciles para ponerte al día.
5 – Any recommendations for young software engineers?
Yes.  Code!  Code on the job.  Code at home.  Work for your employer 40 hours per week.  Then work for yourself another 20 hours per week.  Learn!  Learn a new language every year.  Read!  Find good books, articles, blogs, etc, and devour them.  Teach!  Find someone willing to learn from you and teach them.  The best way to learn is to teach.
Our industry is changing very rapidly. Don’t get trapped in a single language, a single paradigm, or a single platform.  If you do, you’ll find that the industry has moved past you and you’ll have a very hard time catching up.
6 – Nos encantan los videos de «Clean Code». Tengo planeado utilizar los vídeos en mis clases en la Universidad. ¿Tienes pensado nuevos vídeos o libros?
Oh, tengo montones y montones de vídeos planificados. Están todos los patrones de diseño sobre los que hablar. Hay avanzado uno de TDD y pruebas de aceptación. Hay sobre profesionalismo, programación funcional, clojure, y podría seguir y seguir.
En cuanto a libros, estoy en la mitad de escribir «Clean Arquitecture», un libro sobre la estructura de alto nivel de un sistema.
6 – We love those videos of “Clean Code”. I have a plan to use the videos in my classes at the University. Do you plan new videos or new book?
Oh, I’ve got lots and lots of videos planned.  There’s all the design patterns to talk about.  There’s advanced TDD and acceptance testing.  There’s professionalism, functional programming, clojure, I could go on and on.
As for books, I’m in the midst of writing “Clean Architecture”, a book about high level system structure.
7 – ¿Ha estado alguna vez en España?
Hace dos décadas, pasé una semana en Málaga. Me senté en el balcón de mi habitación del hotel mirando al Mediterráneo, y bebiendo sangría. Era el paraíso.
7 – Have you ever been to Spain?
Two decades ago spent a week in Malaga.  I sat in the balcony of my hotel room staring at the Mediterranean, and drinking Sangria.  It was heaven.
Gracias por la entrevista y esperamos verte pronto en España.
Thanks for the interview and look forward to see you soon in Spain.
Una vez más, de nada. Me encantaría volver a España.
Again, you are welcome.  I’d love to return to Spain.
Y como Robert dijo una vez: «estás leyendo esta «entrevista» (y has llegado hasta aquí) por dos razones. En primer lugar, eres programador. En segundo lugar, quieres ser un mejor programador. Bien. Necesitamos mejores programadores.»
And as Robert once said: “You are reading this “interview” for two reasons. First, you are a programmer. Second, you want to be a better programmer. Good. We need better programmers.”

14 comentarios en “Entrevista en el blog: Robert C. Martin (Uncle Bob)”

  1. Pingback: Bitacoras.com

  2. Gracias Javier por la entrevista con Tio Bob, y Gracias Tio Bob por sus utiles consejos y grandes aportes a nuestro conocimiento.
    Super buenisimos los videos, igual los utilizo en mis equipos de trabajo y poco a poco vamos cambiando las cosas.
    Gracias nuevamente a ambos.

  3. Me parece genial que haya blogs que hablen sobre esto de cuidar y mejorar el código y la estructura del proyecto en todos los lenguajes, es algo que quiero aprender a hacer mejor.

  4. Saludos. Realmente no soy programador, lo cierto es que hay muchas formas de atraer a un lugar como éstos.
    Gracias por todo, tu trabajo me parece maravilloso.

  5. Enhorabuena por la entrevista !! Amena y con preguntas acertadas. Sin duda me quedo con la respuesta a la pregunta 5 :-). Me pondré a buscar esos vídeos que ha hecho Robert C.Martin

  6. Y como Robert dijo una vez: «estás leyendo esta «entrevista» (y has llegado hasta aquí) por dos razones. En primer lugar, eres programador. En segundo lugar, quieres ser un mejor programador. Bien. Necesitamos mejores programadores.»

    Excelente manera de finalizar el artículo 🙂

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Share This
Ir arriba