Herramientas: Una buena obsesión

Como ya mencioné en otros posts la elección de las herramientas con las que trabajo es una obsesión, una sana pero exigente obsesión. Considero a esa particular mirada a como trabajo y si lo hago lo suficientemente efectivo como sana porque me gusta trabajar menos. ¿A quien no? Si hay algo que estoy haciendo de una forma no-óptima en mi trabajo quiero darme cuenta, corregirlo, y disfrutar de ese tiempo haciendo otras cosas.

En su libro The 7 Habits of Highly Effective People Stephen Covey crea una de las analogías mas claras sobre esto:

Un hombre se encontró con un leñador en las montañas. El hombre paro a observar al leñador, mirándolo atentamente mientras talaba un gran árbol. El noto que el leñador sudaba mientras trabajaba talando y talando, pero que no avanzaba mucho en su tarea. El espectador entonces noto que la a sierra que el leñador estaba usando estaba tan afilada como un cuchillo de manteca. Entonces le dijo: “Disculpe señor leñador, no pude dejar de notar que duro que esta trabajando en ese árbol, pero sin avanzar mucho”. El leñador respondió mientras se secaba el sudor de la frente, “Si… lo se. Este árbol me esta dando algunos problemas.”. El espectador entonces le dijo, “Pero señor leñador, su sierra tiene tan poco filo que es imposible que corte algo.” “Lo se”, dijo el leñador, “pero estoy muy ocupado talando este árbol como para ponerme a afilar la sierra.”

“Sharpen the Saw”, The 7 Habits of Highly Effective People, Stephen R. Covey, 1989

The 7 Habits of Highly Effective People

The 7 Habits of Highly Effective People

Si bien el libro no es exclusivo de programadores recomiendo leerlo porque sirve bastante bien para nuestra disciplina.

Personalmente considero que de las herramientas que utilizo día a día le saco el jugo a unas pocas, vim, firefox, zsh y la shell en general, y quizás a Python como lenguaje de scripting para automatizar las tareas repetitivas. Pero sin mucho esfuerzo veo muchos mas lugares donde podría mejorar los programas que uso o elegir mejores programas para usar:

El rol que cumplo en mi trabajo se puede llamar “Project Manager Pulpo”, porque son varios los proyectos que “llevo adelante” y una de las formas de comunicación mas comunes es el email, para el cual utilizo Thunderbird. Hay decenas de metodologías para organizar/seguir varios temas por email, yo personalmente sigo una versión bastante liberal de GTD (Getting Things Done: The Art of Stress-Free Productivity, David Allen, 2002) pero mucho del trabajo que hago es manual (Como marcar emails con etiquetas “Por Hacer” y “Esperando Respuesta”), debería automatizar eso, y quizás pasarme a mutt, getmail, maildrop y scriptearlo un poco mas así hago uso de vim en mutt.

El libro que estoy leyendo ahora es The Productive Programmer, si bien aun voy por los primeros capítulos ya me dio bastantes temas en los que pensar, y me motivo a hacer algunas pruebas: utilizar macros (una función de vim que siempre supe que existía pero ignore deliberadamente), utilizar un program launcher (tenia keybinds a los programas mas utilizados, pero con Gnome-Do ahora puedo hacer prácticamente todo sin mover mis manos del teclado hacia el mouse), aprovechar mejor algunas funcionalidades de los SCM que utilizo (Mercurial y Subversion), y hasta aprovechar de forma eficiente los virtual desktops.

Hoy en Hacker News, un muy buen sitio si buscan estar informados del ambiente IT internacional, salio la siguiente pregunta: “Ask HN: Why no love for PHP? ” y me dio mucha risa la primer respuesta:

Las personas que son realmente buenas en sus trabajos se obsesionan sobre sus herramientas. Los artistas se obsesionan sobre la pintura, los carpinteros sobre sus herramientas a medida y los cocineros sobre sus cuchillos.

PHP es como comprar un cuchillo de chef en Wal-Mart. Vos podes hacer un plato 5 estrellas con el, corta perfectamente, pero no inspira la misma pasión que un cuchillo Shun.

Esto se extiende a todo. Si elegís el mejor editor de texto, uno completo como el que describí en mi primer post en este blog, vas a darle un uso y una importancia mucho mas alta que la que va a tener notepad que también puede editar código. Si elegís cualquier SCM, seguramente sea para tirar código ahí, si evalúas los pro y contras de cada uno seguramente cuando lo uses vas a aprovechar esos pro y no ignorarlos o dejarlos en desuso.

Dejo para otro día elaborar una lista de lo que podría considerarse las herramientas básicas de cada programador, ya enumere editor y SCM pero creo que hay muchas mas y cada una se merece su artículo aparte.

5 Responses to “Herramientas: Una buena obsesión”

  1. Santiago Says:

    Si bien estoy de acuerdo en que el uso de la herramienta adecuada es esencial para lograr un mejor trabajo, me parece que a veces se asume incorrectamente que a todo el mundo le va a servir [insertar nombre de app]. No estoy hablando de acostumbramiento a la herramienta ni nada de eso.

    Para mi punto, voy a referirme a algo que leí en una PC Users bastante vieja. Hacían el planteo del uso correcto de una PC. Si bien podés usarla para tomar notas, por ejemplo cuando te llaman por teléfono, tenés que evaluar variables antes de darle esa aplicación. Si cada vez que te llaman por teléfono, y querés hacer una nota, implica que tenés que prender la pc, esperar que inicie el SO, ejecutar la aplicación editor de texto, ingresar texto, guardar el archivo… Es más sencillo simplemente tener un bloc de notas con una lapicera al lado del teléfono.

    Obviamente este ejemplo es un poco anacrónico, porque hoy por hoy casi todo el mundo tiene su computadora prendida todo el día (o mayor parte del mismo). Pero creería que pude graficar mi concepto.

    A veces poco es suficiente.

    Igual te aprecio.
    xD


  2. qwerty Says:

    @Santiago: La utilidad de una herramienta es directamente proporcional a cuanto se enfoca y menos features tiene.

    Las herramientas como Firefox siempre van a ser mas efectivas que las herramientas como SeaMonkey.

    Una computadora es una buena analogía de algo que hace de todo un poco: ¿La usas para jugar? No va a ser tan comoda como una PS2 o una Wii. ¿La usas para escuchar música? Es mucho mas trabajo escuchar un disco ahí que en un iPod ¿La usas para bajar y ver películas? Cosas como PopCorn son mas útiles a tal efecto.

    Obviamente para un programador que combina muchas de esas tareas una computadora es útil. Pero tiene que saber sacarle el jugo y enfocar todo ese poder de distracción en una uso bien claro y con un objetivo claro, y para eso ayudan un monton de elecciones que se hacen: ¿KDE, Gnome o Fluxbox?, ¿Vim, Emacs o Eclipse?, etc.


  3. juancito Says:

    yo tb sigo gtd y desde q empece con la implementacion mejore mucho y baje drasticamente mis niveles de procrastinacion. aunq todavia sigue siendo alta para mi gusto algunas veces…
    igual t digo q es una metodologia muy copada y creo q todos tendrian q conocerla para poder generar un efecto sinergico de mejora constante.


  4. matuteromano Says:

    Buenas, creo que muchas veces nos quedamos como el leñador esforzándonos para terminar este árbol para tratar de detenernos y afilar la herramienta …
    Recién empiezo en el tema de GTD, y lo encuentro muy interesante y muy atractivo , con el tiempo empiezo a verme reflejado en varios ejemplos de los que explica David Allen , gracias a Juancito que me convido con un audio book del tema, ahora no veo la hora de empezar a ponerlo en practica .


  5. qwerty Says:

    Creo que va a ser interesante hacer un post entero sobre GTD y programadores.


Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>