The Pragmatic Programmer

Ya he terminado de leer "The Pragmatic Programmer", compañero inseparable en las terrazas de verano de todo "nerd" que se precie.

Para mi gusto se queda demasiado en la superficie y simplemente cuenta cosas que más o menos todos sabemos, pero no aplicamos.

Sin embargo, siempre es bueno ver por escrito todo esto que sabemos y no hacemos, que nos recuerden de vez en cuando las ventajas que tiene y, desde luego, ayuda mucho a aclarar ideas. También da ideas nuevas, cosas que supongo que acabaríamos intuyendo con el tiempo, pero leyendo este libro caemos en la cuenta mucho antes.

Lo más importante que he sacado en claro es el principio de "no te repitas". Yo siempre he tenido claro que el código no se debe repetir, pero en el libro van mucho más allá. No se debe repetir dos veces la misma información no sólo en el código, sino tampoco en la documentación, composición de las bases de datos, etc, etc.

La idea es que si hay un documento que describe cómo son las bases de datos, se deberían poder construir las bases de datos automáticamente a partir de este documento o bien, generar automáticamente este documento a partir de la base de datos. Si además hay código que maneja esa base de datos, mucha parte de este código debería generarse automáticamente. De esta forma, bastaría, por ejemplo, tocar el documento de base de datos para que tanto la base de datos como el código se corrijan automáticamente.

Para poder conseguir esto, es muy importante hacerse scripts que a partir de, por ejemplo, la documentación, genere las sql para crear las bases de datos y el código fuente -en java por ejemplo-, para manejar esa base de datos. En el libro destacan la importancia de perl para este tipo de cosas -lenguaje de script avanzado que permite hacer fácilmente este tipo de cosas- y la importancia de hacer documentación con texto plano, que pueda ser leído o generado fácilmente por estos scripts.

Otra idea muy importante del libro, que posiblemente también sabemos todos y que por pereza no solemos hacer, es que cualquier tarea repetitiva, se debería automatizar. El compilado se debe hacer automáticamente todas las noches. Si al programar repetimos una secuencia de comandos con cierta frecuencia, deberíamos hacer una macro. Si al empezar una nueva clase java la generamos con un esqueleto concreto -comentario de cabecera, comentario de la clase, clase, atributo para usar log4j, etc, etc-, deberíamos tener un scripit o macro que lo haga automáticamente. Nuevamente, cobran importancia los lenguajes de script estilo perl.

Aquí ha salido nuevamente una idea para el trabajo. Un par de compañeros mios empezaron a hacer unos instaladores para los nuevos, de forma que les instalasen en sus PCs el java, el eclipse, el CVS, sacaran los proyectos de CVS, etc, etc, etc. Yo no le dí demasiada importancia, pero efectivamente es algo importante. Hablan de meter catorce personas nuevas y si se hace esta tarea a mano -preparles el entorno de desarrollo en el pc-, es una persona antigua que perderá el tiempo haciendo una y otra vez lo mismo. Es mejor hacer el instalador y usarlo cada vez que llegue uno nuevo. Cuando volvamos de las vacaciones les incordiaré para que terminen el instalador.

Otra idea del libro que me ha llamado la atención, aunque quizás de utilidad menos inmediata, es la necesidad de que los que somos programadores aprendamos lo más posible. Según el libro, deberíamos proponernos -y cumplir- leer una serie de libros al año, aprender un lenguaje nuevo cada año, etc, etc. Es más, para diversificar lo más posible, deberíamos elegir aquello lo más alejado posible del tema que tratamos en el trabajo. Si alguien trabaja con java, puede tratar de aprender perl, si alguien hace aplicaciones de escritorio, debería aprender a hacer aplicaciones web, etc, etc. El ver cómo se resuelven problemas en otros campos puede darte ideas de cómo resolver tus propios problemas en tu campo o simplemente ideas nuevas de cómo hacer las cosas de otra manera.

En fin, un libro interesante, con algunas ideas que no tienen desperdicio.

Esta entrada fue publicada en varios. Guarda el enlace permanente.

8 respuestas a The Pragmatic Programmer

  1. Blaxter dijo:

    Me has convencido, sin duda, caerá en mi próxima compra en amazon 🙂

  2. Dani dijo:

    ¿Sabéis si hay traducción al español?

    Es un libro del que siempre he leído muy buenas críticas, pero con mi nivel de inglés de poco me iba a enterar.

  3. FabianM dijo:

    Estoy en el mismo problema de Dani, tener una traducción al español para sacarle el mejor jugo, aunque sea encontré este resúmen:

    http://www.lugli.org.ar/mediawiki/index.php/Programador_Pragmatico

    Muy bueno el blog.

  4. Blaxter dijo:

    La mejor forma de aprender inglés es leyendo (y escuchando). Personalmente, me considero con un nivel de inglés patético, pero a base de leer y escuchar aprendes aunque no quieras (técnica llamada fuerza bruta xD), luego ya para escribir o hablar es ya otro tema aparte… xD. Además un libro técnico es increíblemente más simple de leer que novelas u otros temas.

  5. Chuidiang dijo:

    Hola:

    Me pasa lo mismo, mi nivel de inglés también es patético. Posiblemente no he disfrutado el libro todo lo que debiera y me ha costado bastante más leerlo que si estuviera en español, pero muchas veces no queda más remedio. Y desde luego, entre «pragmatic programmer» y «programador pragmático» no hay demasiada diferencia…

    Se bueno.

  6. Me gusta la idea de intentar aprender la materia que más se aleje de nuestro trabajo cotidiano. Personalmente intento conseguirlo (intento…)

  7. Dani dijo:

    Bueno, suponía que no lo encontraría en español, al final lo tendré que intentar leer en inglés.

    Estoy de acuerdo contigo Blaxter, los artículos técnicos son más fáciles de leer, pero normalmente me tengo que apoyar mucho en código de ejemplo para entenderlos medianamente. Tendré que esperar un tiempo más, a base de fuerza bruta:), para probar a leerlo que ahora no me veo capaz.

  8. FabianM dijo:

    Es verdad, debería intentar leerlo en ingles, y a base de ese esfuerzo ir aprendiendo más.

    Supongo que no lo he hecho pensando en el tiempo que me requeriría, quería el camino más corto, tratando de comparar sería algo parecido a invierto tiempo en hacer el componente reutilizable o copio y pego?

    En definitiva, me parece que lo voy a comprar y empezar a intentar, éste libro es un buen incentivo para ser constante en mejorar mi (también patético) nivel de ingles.

Deja una respuesta

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

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.