Libro que al igual que The Pragmatic Programmer: From Journeyman to Master se ganó estar en mis libros de cabecera, y se ha ganado un lugar muy especial en mi librero.
El escritor, y desarrollador de toda la vida Sandro Mancuso, plasma muy bien la idea que el tiene acerca de lo que todo desarrollador de software, y en mi opinión personal lo que debería buscar todo desarrollador, para cambiar su entorno de trabajo y ayudarnos a todos (porque estamos en el mismo barco) a cambiar la mentalidad de los clientes, de que no somos la clase de persona/profesional que la mayor parte del mundo cree que somos:
- Unos micos tirando lineas de código a diestra y siniestra, y haciendo el código lo más ilegible posible para que nada ni nadie pueda entenderlo
- Unos personajes que se sientan en el cuarto más oscuro del sótano de la empresa y que nadie conoce (usualmente cuentan leyendas de que terror de ellos)
- Los padrinos mágicos de los clientes que hacen que se cumplan sus deseos y que en un parpadear de ojos ya lo tiene funcionando en producción y libre de defectos
- Las personas que arreglan los defectos del sistema con su teclado mágico
- Personas o cosas que transforman café, cerveza o en su defecto bebidas energéticas en líneas de código que pasan por una caja mágica que lo transforma en un sistema para su empresa
Mientras más leía este libro más me iba dando cuenta de que muchas de las cosas que el plasmó las había pasado en algún momento, que otras pocas las estaba pasando y que muchas otras parecían estar a la vuelta de la esquina, como si de un libro de adivinación se tratase.
Me ayudó a entender la idea de lo que no es un artesano del software y de que para ser uno debes ser más que un desarrollador, que va más allá de incluso herramientas, métodos y metodologías (Agile, Kanban, Lean, XP, TDD, entre otras) inclusive va mucho más allá de un lenguaje de programación, de un IDE, de un editor de textos o un manipulador de textos.
Un artesano va más allá de todo esto pero el que vaya más allá no quiere decir que no incluya todo lo anterior, lo más importante para un artesano de software es ser un profesional del software, para ello se basan en muchos principios que van desde ayudar a los desarrolladores a ser mejores en su día a día con técnicas de desarollo tales como TDD, XP, entre otras, pasando por enseñar a como decir que “NO” a los clientes, como levantar la mano para que nuestra voz sea escuchada, como lidiar con personas que solo ven el desarrollo de software como “un trabajo más”, que “El cómo está hecho es tan importante como el está hecho” (“How it is done is as important as getting it done” - Sandro Mancuso, The Software Craftsman: Professionalism, Pragmatism) que la artesanía del software es un largo camino hacia la maestría, que esto es una mentalidad del desarrollador donde ellos eligen ser responsables de su carrera, constantemente aprendiendo nuevas herramientas, técnicas y constantemente mejorándose.
Me ayudó a comprender que hace unos años la “antigüedad” (seniority) se medía en base a cuan ilegible era su código (algo así al a cantidad de WTF por revisión de código), y cuan mal estábamos en hacer eso. Esos tiempos han cambiado y ahora es a la inversa mientras menos WTF por revisión de código existan mejor el código es.
Entendí también que el código legado a veces no es tan malo como suena, que también ahí existen áreas de oportunidad y que se pueden hacer cosas para ir mejorando poco a poco para que este no sea tan doloroso como todos creemos que es.
Otra cosa que me ayudó este libro a ver es que un desarrollador en la búsqueda de su maestría es alguien que debe evaluar sus trabajos y empresas en base a sus objetivos y principios, y que cualquier empresa que no esté alineada a sus principios y objetivos debería ser descartada en las fases de las entrevistas. Ya que en las entrevistas no solo el candidato a ser empleado es evaluado, también como buen profesional debemos evaluar a la empresa que nos está entrevistando y cuestionar las cosas que vemos (no ser altaneros o unos patanes, tener el suficiente tacto para hacer las preguntas), desde si quien está entrevistando es RH, hasta si el que está entrevistando es el desarrollador y desde esos inicios se puede ver que tan arraigadas tienen esas jerarquías.
Y aunque la búsqueda de un nuevo trabajo y/o la permenencia en ese trabajo prácticamente depende de 3 cosas (al menos para el autor): Autonomía, Maestría, Propósito. Y es aquí donde está lo interesante de esta parte ya que deja fuera la parte del Dinero ya que el conocimiento es más valioso, y no es porque el dinero no lo sea pero el perseguir solamente el dinero te puede desviar de tus objetivos iniciales.
Y de lo que me di cuenta es que en México estamos del nabo, ya que mientras en muchas empresas alrededor del mundo ya están viendo a los desarrolladores como una parte fundamental de su estructura interna, y que no son los elementos fácilmente reemplazables, aquí siguen viéndonos como los meros micos sentados en una silla frente a una computadora escribiendo código, y mientras esto siga así las empresas mexicanas irán cada día más en picada porque casi ningún buen desarrollador va a querer estar trabajando con ellos. Sin embargo esta mentalidad no es solo culpa de las empresas es también culpa de nosotros como desarrolladores, porque como profesionales debemos decirles lo que está pasando ser honestos y hablar con franquesa ante ellos, como si de su contador se tratara o su abogado o su doctor, nadie confiaría en ellos si les dice que si a todo.
“Locura es hacer lo mismo una vez tras otra y esperar resultados diferentes” el cambio comienza en nosotros los desarrolladores levantando nuestras manos y cuestionando las decisiones de las personas que se encuentran arriba (hablando de empresas que cuentan con una estructura jerárquica), porque esto no es solo culpa de las empresas también es culpa de nosotros por solo acatar las decisiones de ellos sin decir nada, eso no es ni siquiera es ser profesional, eso es apatía y no es algo que debamos hacer, debemos aprender a decir que “NO” pero con bases, aportando opciones y si en ese momento no se cuenta con alguna opción decir que en ese momento están escasos de ideas pero que se pensará en algo para traerlo a la mesa y tomar en base a ello las decisiones.
Por último todo aspirante a ser un Artesano del Software debería tener seguir esto, link original:
Como aspirantes a Artesanos del Software estamos elevando el listón de desarrollo de software profesional practicando y ayudando a otros a aprender el oficio. A través de este trabajo hemos llegado a valorar:
- No sólo software que funciona, sino también software bien diseñado
- No sólo responder al cambio, sino también agregar valor constantemente
- No sólo individuos e interacciones, sino también una comunidad de profesionales
- No sólo colaboración de clientes, sino también asociaciones productivas
Es decir, en la búsqueda de los elementos de la izquierda, hemos encontrado indispensables los elementos de la derecha.
Y lo que más me agradó de este libro fue que en realidad pone sobre la mesa lo que un desarrollador debería ser (al menos en el concepto del autor), y contesta la pregunta que estoy seguro a muchos de nosotros como desarrolladores nos han hecho ¿Piensas ser un desarollador toda tu vida? o alguna de sus variantes, y aunque para mí la respuesta es un claro y conciso “SI” para muchos la respuesta todavía está en el aire.