archivo

Archivos diarios: septiembre 25, 2011

Fresh software es lo primero que se me viene a la cabeza cuando pienso en la empresa de desarrollo de software que hace poco han abierto mis amigos Javi y Sergio.

Zuinq Studio es el resultado de la creatividad y talento de dos ingenieros de software para los que no existe límite en los retos que se le plantean y que se plantean, de ahí la heterogeneidad de los desarrollos que han realizado hasta ahora, que van desde el desarrollo de soluciones para dispositivos móviles (en las cuales son expertos), desarrollo de soluciones web (otra de sus especialidades), desarrollo de plugins, realidad aumentada, etc…

¿Por qué fresh software? Pues porque la palabra fresh, aúna buena parte de las características del software que desarrollan y del espíritu de ambos: nuevo, fresco, limpio, descarado, etc…

Si queréis conocerlos con mayor detalle, el enlace a su sitio web es el siguiente: Zuinq Studio.

Bogdan Bereza-Jarocinski es un desarrollador de software y psicólogo polaco especializado en la calidad del software, más concretamente en el campo del testing. No obstante, ha pasado prácticamente por los diferentes perfiles clásicos por los que suele pasar un desarrollador: programador, analista, jefe de proyectos…

Me ha resultado interesante una reflexión que realizó en el año 2000, sobre el proceso de automatización del testing (traducción libre): “Introducirse en la automatización de las pruebas es, a veces, como un romance: tormentoso, emocional, en ocasiones un fracaso y en otras un éxito espectacular”.

Esta cita puede ser válida en muchos campos del desarrollo de software cuando existe un cambio de la manera en que tradicionalmente se han hecho las cosas a otra diferente: nunca es fácil, genera un cierto desgaste, siempre aprendes y el resultado puede ser bueno o nefasto.

La automatización del testing, en todos los niveles, no solo a nivel de la definición de pruebas unitarias o la aplicación de técnicas orientadas a las mismas como TDD, supone un cambio de mentalidad importante en el desarrollo de software, ya que es la consecuencia de entender, por fin, que:

– El software es de naturaleza adaptativa o evolutiva, donde los mismos usuarios van refinando con el uso del producto la idea que tenían inicialmente del mismo y donde los mismos procesos de negocio evolucionan, dando lugar a nuevas versiones de la aplicación.

– Donde la calidad del software es un objetivo esencial a conseguir por cualquier desarrollador y que parte de esa calidad final depende de la capacidad de localizar errores en las etapas más tempranas posibles (para reducir los costes asociados a su corrección) y para reducir el número y criticidad de los mismos que llegan a entornos de producción.

Saber decir que no es un instrumento muy importante para la productividad en cualquier profesión. En el desarrollo de software es fundamental dominar ese arte porque de lo contrario te terminarás llenando de tareas que no te corresponden, lo cual será extensible también a los proyectos en los que trabajes.

Muchas veces no es a ti a quien a corresponde decir que no sino a tus superiores y si estos no son capaces de decir que no, nunca serán proporcionales las tareas a realizar con el tiempo disponible para poder llevarlas a cabo, consecuencias: overtime, desgaste, disminución de la calidad de los trabajos.

Sobre este tema me parece muy interesante la siguiente reflexión de Bilal Ahsan: “Si tu jefe no sabe decirle que no a su jefe, cambia de trabajo”.

Richard (Dick) Sites, en la década de los setenta realizó la siguiente reflexión: “Prefiero escribir programas que escriben programas, que escribir programas”.

Entre treinta y cuarenta años después, la generación de código sigue estando presente y resulta muy importante para reducir costes en los proyectos de desarrollo de software, por ese motivo la inversión en corregir sus incidencias, mejorar la calidad del código generado y la funcionalidad y alcance del mismo es algo a tener muy en cuenta en las empresas de desarrollo de software.

La generación de código, la reutilización de código, la delegación de funcionalidades entre componentes, una buena elección de la arquitectura y del framework, son elementos fundamentales para mejorar la productividad en los desarrollos.