Hace unos meses me quedé con las ganas de escribir una historia sobre la diferencia entre la calidad intrínseca de un programa y el proceso que se usa para producirlo; más concretamente sobre que hay muchas empresas que se preocupan mucho del proceso y muy poco o nada de la calidad y acaban teniendo una mierda primorosamente facturada y empaquetada. En pocos días me he acordado del tema varias veces, por ejemplo en un comentario a una historia de Sergio Montoro en Versión Cero sobre problemas en el desarrollo. También mientras leía Facts and Fallacies of Software Engineering de Robert Glass. Al empezar a leer Code Complete, el clásico de Steve McConnell me he encontrado precisamente con esta distinción entre "construcción" y proceso.
Si es un clásico ¿por qué no había leído antes ese libro? La respuesta tiene que ver con la extinta empresa que da nombre a esta historia. Fue el primer empleo que tuve en Madrid. Trabajar en PSD tenía ciertos inconvenientes bastante notorios, muchos de ellos derivados del hecho de ser una empresa pequeña, en la que no pasamos de cinco mientras estuve. Pero tuvo también algunos alicientes, por ejemplo trabajar con gente muy lista e interesante. A pesar de los pesares, trabajar en PSD era divertido.
Pero si algo hay que me parece destacable es que aquella pequeña empresa tenía el estándar más exigente de calidad de código y de metodología de todas por las que he pasado. De hecho, cualquiera de las demás está a una distancia abismal. El hecho de haber conocido PSD antes que las otras fue un factor de tremenda confusión para mí. ¿Cómo es posible que las empresas que se sacan "la ISO" y tienen recursos para dar y tomar no cumplan unos mínimos en la "calidad real"?
Lo primero que tuve que aprender al llegar fue el manual de normas de código. Condensaba en unas cuantas docenas de páginas varios libros sobre calidad de código, incluyendo Code Complete. Definía hasta el detalle más mínimo cómo programar y en él se basaban las revisiones de código. Porque teníamos revisiones de código. Teníamos también métricas, seguimiento de errores, control de versiones, una librería de código perfectamente organizada y una biblioteca de libros y revistas actualizada.
De la siguiente empresa en la que estuve tengo un montón de cosas buenas que decir. Pero ninguna de ellas está en la lista anterior. No había revisiones de código. En realidad no hubiese tenido mucho sentido porque no había criterios por los que revisar. La única métrica en los proyectos en que estuve la hice yo a toro pasado. No había seguimiento de errores, sólo de "incidencias", o sea quejas del cliente. Se hizo una suscripción a una revista de Delphi. Pero pedir que se comprase un libro era estúpido, porque la autorización llegaba cuando el proyecto se había cerrado. La compra de un programa de unos cincuenta euros, que hubiese ahorrado semanas de trabajo, tardó tres meses en autorizarse. Después de mucho pedir, un cliente instaló un control de versiones, con la particularidad de que sólo compró una licencia, con lo cual hubo una persona, el encargado del programa, que se convirtió en el control de versiones. Para colmo, compartir información técnica era una actividad clandestina. Estaban prohibidos los foros internos, excepto los controlados por la dirección.
Esta empresa estaba certificada, tenía clientes importantísimos y sigue siendo lo más sonoro de mi curriculum. Pero el código que se producía no tenía ni de lejos la calidad del de PSD y no era peor por la insistencia de algunos en mejorarlo en plan francotirador. No era un problema económico, ni de falta de medios humanos. No era posible simplemente porque no teníamos a un técnico, como en PSD a Alexander, con poder de decidir cómo se hacían las cosas. Y lo peor es que de todas las empresas que han venido después, ninguna ha sido como PSD, sino como la otra, o peor. A menudo mucho peor.
Leyendo el libro de Glass he visto que existen estudios experimentales que demuestran sin lugar a dudas que es más productivo hacer las cosas "bien". Nada de lo que cuentan Glass, Brooks, McConnell y otros autores es conocimiento secreto, ni más caro que el precio de media docena de libros bien conocidos. Pero se sigue haciendo todo lo contrario constantemente y se siguen poniendo las excusas más peregrinas.
En fin, volviendo a PSD, tengo localizado a todo el personal excepto a Emilio. ¿Dónde andarás? :-)
Comentarios
¿Será al final todo una cuestión de marketing?
Hola Nico:
Estoy leyendote y aunque no he vivido ese tipo de experiencias que planteas, (ya que hasta la fecha siempre he programado solo a lo tipo Juan Palomo, yo me lo guiso, yo me lo como), te comprendo bastante bien. Me imagino que la visión que expones se puede extrapolar a un gran número de empresas que se dediquen al desarrollo de software.
Mi opinión es que el marketing, la imagen exterior tapa todo. Empresas que consolidan sus equipos de desarrolladores sobre la marcha, a demanda de la contratación de sus desarrollos, sin crear equipos sólidos y homogeneos cuyo valor añadido sea la propia experiencia del equipo de personas. Las que he conocido (aunque no haya trabajado para ellas) son bastante chapuceras, pero eso sí, tienen imagen solida al exterior.
No creo siquiera que llegue a conocer lo que es trabajar para una empresa en las condiciones que planteas. :-)
No obstante, también he procurado como tu, documentarme y ampliar mi experiencia con la lectura de los libros que han podido caer en mi poder. Siempre he intentado hacer mis desarrollos lo mas racional posibles, mas que nada por la necesidad implicita de su mantenimiento, que no me resultaran con el paso del tiempo inabordables.
Creo que como cualquier otra faceta o negocio de la vida debe prevalecer el sentido común.
Posiblemente, si saco algo de tiempo acepte tu recomendación y lea el libro que comentas.
Un saludo,
Salvador Jover
PD: Me parece un tema muy interesante que podría ser motivo de muchos comentarios.
¿Marketing?
El problema parece ser que las buenas prácticas no existen en casi ninguna empresa de software. O dicho de otra forma: el sector carece de identidad. Tendrías que ver cómo son las entrevistas de trabajo. Una persona sin ningún conocimiento técnico tiene una charla contigo durante media hora para repasar el curriculum que no se ha leído y que es incapaz de entender:
- ¿Tienes experiencia con SQL?
- Como habrás visto en el curriculum, he trabajado cuatro años con Oracle.
- Ajá, entonces SQL no, pero Oracle sí, que es similar. Lo que ocurre es que para este puesto en concreto piden SQL.
- ¿Te refieres a Microsoft? En el curriculum ya pone que estuve un año haciendo triggers con el Transact...
- ¿Microsoft? Sí. El proyecto se hará sobre Windows XP, pero además necesitamos a alguien que conozca bases de datos SQL bien.
- Cinco años de experiencia, ¿vale así?
- Pero eso no lo pone en el curriculum.
- Sí lo pone.
- Ah, pues no debo tener una versión actualizada.
- Será eso.
Hola Nico Me alegro que
Hola Nico
Me alegro que guardes buenos recuerdos de nuestra forma de hacer las cosas :-)
Tal vez te alegres de saber que tu post me ha motivado a actualizar y publicar bajo Creative Commons el manual de programación al que haces referencia. Ha crecido un poco de tamaño, claro está, dado los tiempos que corren (unas 100 páginas), y la bibliografía y alcance también ha aumentado significativamente
Aquí está, por si le puede ayudar a algún jefe de proyecto demasiado ocupado:
http://www.ahristov.com/tutoriales/Blog/Estilo_de_Programacion.html
Un detallazo
Durante bastante tiempo me arrepentí de no haberle hecho fotocopias, así que el que lo publiques me parece genial y voy a escribir una nueva noticia para que salga en la página más visible. No creo que tenga muchos lectores, tengo esto más para notas "para mí" que otra cosa. Pero los pocos que vienen, seguro que estarán interesados.