Emplea tu tiempo cultivándote a través de los escritos de otros, así ganarás fácilmente lo que para nosotros ha sido una dura tarea.
— Sócrates
Manifiesto de El Libro Negro del Programador
El desarrollo de software profesional tiene más aspectos artísticos y creativos que técnicos. Desafortunadamente, los desarrolladores de software solemos caer en los mismos errores una y otra vez.
Recibimos una formación de años para hacernos con multitud de conocimientos que más tarde difícilmente vamos a poder aplicar.
Desarrollamos proyectos en empresas que desconocen la naturaleza frágil y evanescente de un producto de software bien desarrollado, aplicando criterios de producción industrial.
Nos gusta investigar —lo cual es bueno— y alardear —lo cual no lo es— del conocimiento de toda tecnología emergente que va surgiendo. En cierto modo, somos víctimas de un diletantismo un poco infantil.
Mostramos resultados espectaculares cuando, internamente, el nivel de fragilidad de una aplicación nos obligará a tirarla al cabo de unos meses por su falta de mantenibilidad.
Olvidamos demasiado a menudo que cualquier éxito en software —y en otras profesiones— es una mezcla de tecnología, talento y metodología. Nada medianamente complejo se puede realizar sin un guion previo o un marco de trabajo en el que hacer las cosas ordenadamente.
Dejamos que los responsables, jefes y capas de decisión en general no tengan ni idea de la naturaleza creativa y artística del desarrollo de software.
Nadie nos enseña ni a trabajar en equipo ni que el éxito de un proyecto de software nace de la buena colaboración entre todos sus miembros.
Hay a quienes les gusta ir de gurús, llenos de soberbia cuando se les reconoce como tales, pero cuyo individualismo les impide trabajar con éxito dentro de un equipo.
Confundimos cumplir las fechas con entregar un producto de calidad.
Nos gusta ser imprescindibles y hacer las cosas enrevesadas para apropiarnos de una parcela de poder y sentirnos imprescindibles, convirtiéndonos en esclavos de nosotros mismos.
No aprovechamos lo suficiente la enorme capacidad emprendedora que podemos tener al aplicar nuestro conocimiento de la tecnología en una economía que se mueve hacia lo digital.
Necesitamos, por tanto, un libro que recoja estas reflexiones y nos enseñe cómo abordar todos estos aspectos de una profesión que ni está suficientemente valorada socialmente ni suficientemente recompensada económicamente.
Sostengo que el desarrollo de software tiene más características de arte que de ciencia: construimos más que calculamos, creamos más que ensamblamos.
¿De dónde surge El Libro Negro del Programador?
La razón es muy sencilla: después de muchos años batallando en multitud de proyectos, acumulando innumerables experiencias —buenas, malas y malísimas— y añadiendo a la coctelera una pasión visceral por el software bien hecho, quiero aportar todas estas vivencias desde lo que peor sabemos hacer y que precisamente no nos enseñan durante nuestra etapa de formación. Doy gracias por haberme equivocado tanto: que no nos quepa duda de que los fracasos nos enseñan mucho más que los éxitos.
Parafraseando al gran Fernando Trías de Bes en su Libro Negro del Emprendedor, pretendo aportar una visión holística y necesaria a quienes nos dedicamos profesionalmente al desarrollo de software, centrándome en aspectos que rodean nuestra actividad diaria y que determinan, sí o sí, el éxito o fracaso de nuestro trabajo. En aquel libro se muestra lo que la mayoría de los emprendedores insisten en hacer mal; en este pretendo exponer lo que muchos profesionales de la programación también insisten obstinadamente en hacer mal.
¿Te estás planteando estudiar ingeniería informática como profesión de futuro? Este es el libro que a mí me habría gustado que me contaran en su momento para ahorrarme tantos equívocos y sinsabores. También habla de cómo gestionar los éxitos, de dar prioridad al trabajo en equipo y de incorporar a nuestro ADN que una metodología cutre es mejor que ninguna.
Si no es así y crees saberlo todo sobre una profesión que se reinventa cada pocos años, te contaré igualmente cómo gestionar situaciones que rodean el desarrollo de software, pero que, en definitiva, determinan su calidad, éxito o fracaso.