Comentamos un libro en el que un programador español, Rafael G. Blanes, relata su dilatada experiencia en el mundo del desarrollo, para ilustrar consejos destinados a los nuevos programadores.
El mundo del desarrollo de software, sobre todo en España, podría decirse que se divide en dos grandes grupos. Mejor dicho, en un gran grupo y en otro desgraciadamente más pequeño:
- Desarrolladores bajo el yugo de organizaciones que no se preocupan del cómo, y tienden a un qué de mínimos.
- Desarrolladores bajo el paraguas de organizaciones que ponen mucha atención al qué y al cómo.
Naturalmente hay otras opciones, pero no me parecen excesivamente representativas. El primer grupo desafortunadamente es el más grande, y se nutre de desarrolladores que probablemente no han tenido la oportunidad de cruzarse con integrantes del segundo grupo. No hace falta más que coincidir con las típicas grandes empresas de consultoría donde contratan programadores «al peso», sin importarles ni su formación ni sus habilidades, que son revendidos a los clientes como expertos.
El fruto de esta política empresarial no es otro que productos de mala calidad, clientes cabreados y sobre todo, desde el punto de vista del gremio de los desarrolladores, compañeros frustrados y malogrados que se repiten constantemente a sí mismos lo arrepentidos que están de haber elegido esta profesión.
Los desarrolladores del segundo grupo, por lo general, parecen más felices. Disfrutan del día a día de su profesión, de hacer bien las cosas, y de comprobar cómo aportan un valor diferencial respecto al primer grupo, que cada día les es más reconocido. O al menos es lo que experimentamos los que formamos parte de Autentia.
¿Cuál es la diferencia entre un desarrollador de un grupo y otro? Para mí es una cuestión de actitud, pero sobre todo de conocimiento. Al menos es lo que me dice mi experiencia: hay buenos desarrolladores entre los del primer grupo. Gente capaz y con actitud, pero que no siguen el camino adecuado porque no se han topado con él.
Desde sus estudios en la universidad o en los módulos han recibido la formación básica, que han ampliado en diferentes puestos de trabajo, pero nunca han dado con la tecla de seguir ciertos caminos del conocimiento ni a ciertos autores. ¿Qué habría sido de muchos si álguien les hubiera hablado de los grupos de MeetUp?¿Y del testing, integración contínua o los principios del Clean Code?¿Y de metodologías ágiles o patrones de diseño? Quizá no todos, pero unos cuantos del primer triste grupo podrían haber pasado al segundo y feliz grupo…
Pues bien, este libro, El Libro Negro del Programador: Cómo conseguir una carrera de éxito desarrollando software y cómo evitar los errores habituales, es un buen resumen de introducción para aquellos que forman parte del primer grupo y creen que la profesión de desarrollador de software es un lugar tan lúgubre y triste.
El autor, Rafael G. Blanes, es un desarrollador con varios lustros a sus espaldas en diferentes proyectos, tanto como consultor como freelance. Y para mí, lo más importante, es que lleva tiempo desarrollando como programador del segundo grupo: testing, integración continua, clean code, metodologías ágiles… Esto es lo que realmente aporta valor: la visión de la vida del desarrollador como una profesión a dignificar a través de una disciplina y una serie de prácticas que deberían ser más comunes de lo que lo son hoy en día.
El libro está estructurado como una obra más bien dídáctica (¡Ojo! No es técnico, no verás código) sobre diferentes puntos en los que un desarrollador debería centrarse para cambiar el modo de desempeñar su profesión. A través de una serie de breves pero útiles capítulos (y resumidos en unos pocos puntos al final de cada capítulo), el autor expone su experiencia a lo largo de diferentes proyectos para ilustrar tanto consejos desde el punto de vista técnico como organizativos, tanto de filosfía que podemos aplicar en nuestro día a día como en la gestión de proyectos. Algunos puntos que me han resultado llamativos:
- El manifiesto incial sobre la profesión del desarrollo de software.
- Ciclo de refactoring basado en la filosofía de Martin Fowler: desarrollo, test y refactorización.
- Dificultades que surgen en el desarrollo de software por un mal ambiente, presiones, falta de atención a la calidad.
- Principios irrenunciables a la hora de desarrollar: inversión de control, SOLID, KISS…
- Cambios constantes y la importancia de la mantenibilidad.
- Gestión de equipos: en qué debe centrarse un gestor y qué peligros tienen las nuevas incorporaciones.
- Las metodologías ágiles y el papel, cada vez menos importante, de los arquitectos de software: cambio continuo y necesidad de adaptación.
- No perder el punto de vista del usuario: a veces es más relevante un pequeño cambio en la interfaz de usuario que un gran cambio en el backend.
- La importancia de pararse a pensar y reflexionar sobre el paso siguiente. Mucho más que avanzar sin una dirección clara.
- Prestar atención al OpenSource para delegar en proyectos de la comunidad, desarrollados y probados y no reinventar la rueda.
- La importancia de desarrollar no sólo algo que funcione, sino algo que sea mantenible, que sea código limpio que cualquiera pueda entender y mantener o mejorar.
- No estancarse, ni en tecnologías ni dentro de proyectos. Cambiar de proyectos y de tecnologías a corto plazo puede parecer perjudicial porque renunciamos a nuestra cuota de poder que hemos adquirido, pero a la larga es beneficioso porque nos enriquece.
- Desarrollando se aprende unos de otros: leyendo código de otras personas, participando en proyectos open source o aquí añadiría yo, formando parte de comunidades tecnológicas.
- Uso de sistemas de integración continua y de una correcta gestión de la configuración. No se trata sólo de programar sino de establecer el entorno correcto en el que programar.
- El emprendimiento como futuro del empleo: las empresas tienden a contratar el menor número de trabajadores posibles. El resto deberá aportar valor de modo temporal, siendo más freelances que trabajadores clásicos como entendíamos hasta ahora.
El libro concluye con un cuestionario de 78 preguntas para descubrir si aplicas o no lo que el autor considera los puntos necesarios para ser un desarrollador de software altamente productivo. También se incluye una mínima bibliografía que el autor considera indispensable. Se echa en falta algunos títulos, sobre todo de testing como el Test-Driven Development de Kent Beck para cerrar el círculo con Refactoring de Martin Fowler y con Clean code de Uncle Bob o alguno de Integración continua como Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation (Addison Wesley Signature Series), pero no deja de ser una breve introducción.
Bajo mi punto de vista se trata de un libro destinado a aquellos que no tienen conocimiento en el mundo de «la artesanía del software (software craftmanship)». Es una buena introducción a este mundo, breve y amena, con consejos útiles desde la experiencia y con referencias a los clásicos de la temática. Así que si los capítulos más importantes que he puesto antes no te resultan familiares, merece la pena que le eches un vistazo a este libro.
Si por el contrario eres un fiel seguidor de Uncle Bob, Fowler, Kent Beck, o Sandro Mancuso (entre otros…), estás familiarizado con el manifiesto ágil, no te pierdes ningún meetup tecnológico y en tu trabajo estás todo el día mirando los informes de SonarQube, entonces no creo que este libro te aporte mucho la verdad. Gira entorno a conceptos que seguro que ya conoces y lo único que hará es confirmarte que no estás solo en este mundo :). No obstante, la version electrónica vale lo que un par de botes de Pringles y se lee en un periquete. Igual te vale para algo.
En definitiva, es un libro que recomendaría a la gente que está comenzando en el mundo del desarrollo, o a aquellos que están estancados en unas prácticas nada sanas, como apertura a un mundo mejor: el de la artesanía del software.
Aquí tienes el enlace por si quieres comprar la versión electrónica por 2.99€:
Cómpralo en Amazon
Muy buena critica interesante , tanto que me insito a comprarlo y empezar a leerlo. Gracias por la reseña.
Alberto,
No puedo por menos alabar el excelso artículo en el que reseñas este libro, lo cual me lleva a la innegable pregunta de ¿y para cuando un libro de Alberto Moratilla? Pues este tipo de reflexiones que se hace Rafael Gómez Blanes son muy parecidas a las que me has transmitido en conversaciones previas.
Sin duda te animo a ello.
🙂