archivo

Archivos diarios: septiembre 21, 2010

Alan Jay Perlis fue catedrático en ciencias de la computación siendo su principal área de especialización los lenguajes de programación.

He escogido esta cita (Alan Perlis puede ser un desconocido para muchos de nosotros, pero en el año 1966 recibió el primer premio Turing de la historia por su contribución en las técnicas de programación y en la construcción de compiladores, por lo que su opinión resulta muy relevante) porque refleja un aspecto muy importante del desarrollo de software y que se ha mantenido constante desde los inicios de esta disciplina (hay que tener en cuenta que esta cita junto con otras muchas fueron publicadas en el año 1982, cuando contaba ya con 60 años y en ellas, en un tono desenfadado, Alan Perlis trata de exponer algunos aspectos que había aprendido en relación a lo largo de la programación a lo largo de su carrera) y es que resulta prácticamente imposible entregar una aplicación sin errores (podrán ser más graves, podrán ser más leves), pero siempre terminarán pasando a producción, la clave es que los más importantes se hayan detectado y corregido antes y que el software desarrollado sea lo más fácil de mantener posible.

Alan Perlis comentó que: “Hay dos formas de escribir programas sin errores; solo la tercera funciona”.

Como decía antes, tener conciencia de que es muy difícil que un producto llegue al usuario sin errores, no quiere decir que se deba descuidar su detección en el proceso de desarrollo (y cuanto antes mejor), sino de que hay que dedicar el esfuerzo necesario para filtrar todos los que sean posibles (y tener claro, que es necesario realizar esa tarea y a ser posible, una vez que el desarrollador le haya dado las revisiones oportunas, por personal distinto al que ha participado en el proyecto), hasta unos límites que se consideren adecuados, ya que más allá de eso, el esfuerzo no compensará, ya que para detectar y corregir pequeños errores habrá que dedicar mucho tiempo, sobre todo teniendo en cuenta que cuando el producto llegue a producción necesitará nuevos retoques hasta ajustarse realmente a lo que necesita el usuario.

Recuerdo una frase (tal vez os haya hablado ya de ella en algún otro artículo) que me comentó un compañero de la empresa en la que trabajé antes de incorporarme a mi organización, justo el día antes de irme (iba a pasar de compañero a cliente en 24 horas): “…dentro de un año, probablemente ni nos hablemos…”.

Se equivocó, de hecho participamos en algunos proyectos juntos y salvo los desacuerdos lógicos que se producen en estos casos, seguimos hablando y teniendo una buena relación. Más tarde él empezó a trabajar en proyectos de otros clientes, pero siete años después ambos podemos decir que no se cumplió lo que predijo. ¿Podría haberse dado? Es posible, pero los proyectos funcionaron de manera adecuada, lo que propició una relación cliente y proveedor en la que cada cual defendía sus intereses, pero en la que había respeto.

Las relaciones clientes/proveedor son complicadas y es muy difícil que no se tengan roces. De hecho si me pongo a pensar en estos siete años que llevo dirigiendo proyectos no recuerdo un proveedor (hablo en términos de empresa) con el que no haya tenido algún problema y eso es normal, yo defiendo y exijo lo que creo que debo defender y exigir, el mismo derecho tiene el proveedor, a veces ellos tienen razón, otras yo, a veces gano yo, a veces ganan ellos y a veces ninguno. Lo importante por encima de lo anterior es el respeto y de la misma manera que he dicho que probablemente haya tenido uno o más períodos de crisis con los distintos proveedores con los que he trabajado, es igual de cierto que en la mayoría de los casos se ha mantenido el respeto entre las partes.

Si se está en este negocio es prácticamente imposible pretender que las relaciones siempre vayan como la seda, eso no es realista, hay que estar dispuesto a asumir que habrá períodos de crisis y circunstancias poco agradables y que estas vendrán solas porque los proyectos de desarrollo de software son complejos y porque detrás siempre hay un trasfondo económico.

Habrá momentos buenos, normales y malos, como en la vida. Ahora bien, lo que desde mi punto de vista marca la diferencia en proveedores y en clientes es cómo afrontes cada uno de esos momentos y particularmente los períodos de crisis, ya que en circunstancias delicadas no hay que perder el control, unas palabras fuera de tono o unas decisiones erróneas pueden provocar la pérdida de confianza de un cliente o la pérdida de confianza entre ambas partes y si no hay confianza es complicado trabajar persiguiendo objetivos comunes.