Mostrando entradas con la etiqueta calidad. Mostrar todas las entradas
Mostrando entradas con la etiqueta calidad. Mostrar todas las entradas

martes, septiembre 15, 2009

Es Momento de Aplicar Reingenieria

"Las aplicaciones requieren constante mantenimiento y actualización. A veces la mejor actualización es su reescritura completa"


Como todos bien sabemos, todas las cosas especialmente los sistemas informáticos tienden a perder utilidad con el tiempo, ya sea debido a que no se adapta a los nuevos avances en hardware, no es compatible con las nuevas plataformas de ejecución o no logra satisfacer las nuevas necesidades del usuario.

De la misma manera como los activos fijos tienen su depreciación y fecha de expiración, cada programa de computadora tiene(o debería tener) definido su período de vida, de manera que los usuarios sepan cuándo sea el momento de reemplazarlos por otros más modernos. Lamentablemente no existe una unidad de medida infalible para saber cuándo un sistema informático ha expirado.

Cuando esto ocurre, es hora de aplicar reingeniería y empezar a rediseñar los sistemas existentes, manteniendo su funcionalidad actual pero utilizando herramientas de desarrollo mas ágiles, técnicas y disciplinas mas ordenadas y frameworks que permiten la extensibilidad del mismo, además de aprovechar para agregar nuevas características que pueda necesitar el usuario.

Si algo ya no sirve, vuélvelo a hacer desde cero.

Si es un programa hecho en Visual Fox Pro 6 que comparte archivos de tablas en una carpeta de red, aunque aún le sea útil al usuario, tú como programador sabes que será un completo dolor de cabeza tratar de consumir web services o transportar datos por Message Queue por lo que en lugar de seguir manteniendo un sistema pasado de moda desarrollado con código obsoleto, es mejor reescribirlo desde cero usando tecnologías que te ahorrarán mucho trabajo en el desarrollo y con capacidad de extenderlo según aparezcan nuevos estándares.

Desarrolla pensando en el futuro.

Como desarrollador puedo estar seguro que los usuarios no siempre saben lo que quieren que haga un sistema y cambian de opinión a medida que el sistema va siendo desarrollado. Por tal motivo, debes tener esto en cuenta a la hora de desarrollar tu sistema y diseñarlo de tal forma que pueda ser adaptable a posibles cambios, que tu sistema no "suponga" ni "imagine" que X o Y proceso se hace de tal manera, que todas las decisiones de negocio sean configurables! Ademas, permite que el programador que retomará tu sistema sea capaz de entenderlo y agregar nuevas funcionalidades que sean requeridas por los usuarios. Como una vez alguien escribió en Stack Overflow Programming Quotes:

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Siempre programa como si el que mantendrá tu código será un violento psicópata quien sabe donde vives)

-- Rick Osborne



Demuestrale al usuario que algo ha cambiado, y porqué este cambio es para mejora

Como escribí antes, el usuario está conforme y acostumbrado al viejo sistema del año 2000 que le resuelve a medias sus necesidades actuales y posiblemente el cambio que apliques no sea visible en la interfaz sino que solamente en las tecnologías de desarrollo. Aun así, hay que reflejar ese cambio también en la interfaz de usuario aplicando alguna nueva plantilla CSS(en el caso de una aplicación web), agregando nuevos servicios que quizá no eran necesarios pero que reflejen el cambio o agregando una sección de "Nueva versión, nuevas características" a manera de hacerle notar al usuario que algo ha cambiado y poder explicarle cuál es la nueva manera como ahora se realizan los procesos X y Y.

"Los developers de Gmail siempre han tenido la bondad de notificarnos cuando hay nuevas características disponibles"

Recuerden que en última instancia, nuestro trabajo como desarrolladores es satisfacer los deseos más oscuros y enajenados las necesidades de información de los usuarios de negocio en la empresa, por lo que tampoco es bueno pensar en reescribir todos los sistemas de la empresa solo por estar "in" en tecnologías de desarrollo de software.

Es Momento de Aplicar Reingenieria

"Las aplicaciones requieren constante mantenimiento y actualización. A veces la mejor actualización es su reescritura completa"


Como todos bien sabemos, todas las cosas especialmente los sistemas informáticos tienden a perder utilidad con el tiempo, ya sea debido a que no se adapta a los nuevos avances en hardware, no es compatible con las nuevas plataformas de ejecución o no logra satisfacer las nuevas necesidades del usuario.

De la misma manera como los activos fijos tienen su depreciación y fecha de expiración, cada programa de computadora tiene(o debería tener) definido su período de vida, de manera que los usuarios sepan cuándo sea el momento de reemplazarlos por otros más modernos. Lamentablemente no existe una unidad de medida infalible para saber cuándo un sistema informático ha expirado.

Cuando esto ocurre, es hora de aplicar reingeniería y empezar a rediseñar los sistemas existentes, manteniendo su funcionalidad actual pero utilizando herramientas de desarrollo mas ágiles, técnicas y disciplinas mas ordenadas y frameworks que permiten la extensibilidad del mismo, además de aprovechar para agregar nuevas características que pueda necesitar el usuario.

Si algo ya no sirve, vuélvelo a hacer desde cero.

Si es un programa hecho en Visual Fox Pro 6 que comparte archivos de tablas en una carpeta de red, aunque aún le sea útil al usuario, tú como programador sabes que será un completo dolor de cabeza tratar de consumir web services o transportar datos por Message Queue por lo que en lugar de seguir manteniendo un sistema pasado de moda desarrollado con código obsoleto, es mejor reescribirlo desde cero usando tecnologías que te ahorrarán mucho trabajo en el desarrollo y con capacidad de extenderlo según aparezcan nuevos estándares.

Desarrolla pensando en el futuro.

Como desarrollador puedo estar seguro que los usuarios no siempre saben lo que quieren que haga un sistema y cambian de opinión a medida que el sistema va siendo desarrollado. Por tal motivo, debes tener esto en cuenta a la hora de desarrollar tu sistema y diseñarlo de tal forma que pueda ser adaptable a posibles cambios, que tu sistema no "suponga" ni "imagine" que X o Y proceso se hace de tal manera, que todas las decisiones de negocio sean configurables! Ademas, permite que el programador que retomará tu sistema sea capaz de entenderlo y agregar nuevas funcionalidades que sean requeridas por los usuarios. Como una vez alguien escribió en Stack Overflow Programming Quotes:

Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. (Siempre programa como si el que mantendrá tu código será un violento psicópata quien sabe donde vives)

-- Rick Osborne



Demuestrale al usuario que algo ha cambiado, y porqué este cambio es para mejora

Como escribí antes, el usuario está conforme y acostumbrado al viejo sistema del año 2000 que le resuelve a medias sus necesidades actuales y posiblemente el cambio que apliques no sea visible en la interfaz sino que solamente en las tecnologías de desarrollo. Aun así, hay que reflejar ese cambio también en la interfaz de usuario aplicando alguna nueva plantilla CSS(en el caso de una aplicación web), agregando nuevos servicios que quizá no eran necesarios pero que reflejen el cambio o agregando una sección de "Nueva versión, nuevas características" a manera de hacerle notar al usuario que algo ha cambiado y poder explicarle cuál es la nueva manera como ahora se realizan los procesos X y Y.

"Los developers de Gmail siempre han tenido la bondad de notificarnos cuando hay nuevas características disponibles"

Recuerden que en última instancia, nuestro trabajo como desarrolladores es satisfacer los deseos más oscuros y enajenados las necesidades de información de los usuarios de negocio en la empresa, por lo que tampoco es bueno pensar en reescribir todos los sistemas de la empresa solo por estar "in" en tecnologías de desarrollo de software.

viernes, mayo 08, 2009

Comentario sobre "QA"...

QA (Quality Assurance) consiste en, como su nombre lo indica, probar un producto, para este caso software, y asegurarnos de que se mantiene en el estándar de usabilidad, que es aceptable el rendimiento del mismo, entre otros (más información sobre QA en la Wikipedia). Tener un trabajo como QA, no es tarea fácil: es repetitivo, y hay que conseguir un paraguas por la lluvia de bandeades que le caen a uno (por lado de los usuarios, y por el lado de los desarrolladores). Podemos concluir que un QA (también llamados Ingenieros de Pruebas/Calidad) esta en un desfavorable punto intermedio entre los programadores que "no se equivocan" y los usuarios que tienen "manitas mágicas" para arruinar software.


Supongo que muchos estudiantes de carreras afines a la computación comienzan trabajando como digitadores o como Ingenieros de Pruebas. Por esta misma razón, uno espera que cuando un Ingeniero de Pruebas notifique un defecto, este sea realmente provocado por la aplicación, sin embargo encontré este caso en SeverlaGolb que me parece particularmente preocupante. En el mismo, ellos señalan que:
"lo curioso del caso es que esta persona es un graduado de la Universidad X, empiezo a dudar sentirme muy orgulloso el graduarme de la misma universidad pues este espécimen no está en extinción, al parecer se multiplican muy rápidamente." (extracto)
A lo que voy, es que... ¿cuanto conocimiento de informática hay que tener para estar en un puesto de QA? Si un profesional no es capaz de distinguir entre un error y una característica de un complemento de Firefox, estamos perdidos.... totalmente perdidos, como este pobre perrito:

"Atrapado en las nalgas de la ingornacia"

Es el nivel de desconocimiento lo que me deja anonadado, con gente que puede reportar literalmente cualquier cosa: desde dar diez clics seguidos sobre un botón web o un vinculo, o hasta reportar que es un "error" que solo se permitan números en un campo de "código postal". En caso de que no lo sepan, no hay códigos postales con letras, vea la lista completa de códigos postales de Douglas Boynton. Se supone, que van a certificar que una aplicación funcione correctamente, todo esto, sin desafiar las leyes del sentido común y la simple lógica.

"La carrera por la calidad, no tiene meta.... así que técnicamente es una marcha hacia la muerte."

El punto es que quiero que me cuenten: ¿A cuantos de ustedes les ha tocado vivir una experiencia similar a esta?, ¿Y si eres un "Ingeniero de Pruebas", has visto casos similares?, ¿Que es lo mínimo que deben saber un Ingeniero de Pruebas?

Comentario sobre "QA"...

QA (Quality Assurance) consiste en, como su nombre lo indica, probar un producto, para este caso software, y asegurarnos de que se mantiene en el estándar de usabilidad, que es aceptable el rendimiento del mismo, entre otros (más información sobre QA en la Wikipedia). Tener un trabajo como QA, no es tarea fácil: es repetitivo, y hay que conseguir un paraguas por la lluvia de bandeades que le caen a uno (por lado de los usuarios, y por el lado de los desarrolladores). Podemos concluir que un QA (también llamados Ingenieros de Pruebas/Calidad) esta en un desfavorable punto intermedio entre los programadores que "no se equivocan" y los usuarios que tienen "manitas mágicas" para arruinar software.


Supongo que muchos estudiantes de carreras afines a la computación comienzan trabajando como digitadores o como Ingenieros de Pruebas. Por esta misma razón, uno espera que cuando un Ingeniero de Pruebas notifique un defecto, este sea realmente provocado por la aplicación, sin embargo encontré este caso en SeverlaGolb que me parece particularmente preocupante. En el mismo, ellos señalan que:
"lo curioso del caso es que esta persona es un graduado de la Universidad X, empiezo a dudar sentirme muy orgulloso el graduarme de la misma universidad pues este espécimen no está en extinción, al parecer se multiplican muy rápidamente." (extracto)
A lo que voy, es que... ¿cuanto conocimiento de informática hay que tener para estar en un puesto de QA? Si un profesional no es capaz de distinguir entre un error y una característica de un complemento de Firefox, estamos perdidos.... totalmente perdidos, como este pobre perrito:

"Atrapado en las nalgas de la ingornacia"

Es el nivel de desconocimiento lo que me deja anonadado, con gente que puede reportar literalmente cualquier cosa: desde dar diez clics seguidos sobre un botón web o un vinculo, o hasta reportar que es un "error" que solo se permitan números en un campo de "código postal". En caso de que no lo sepan, no hay códigos postales con letras, vea la lista completa de códigos postales de Douglas Boynton. Se supone, que van a certificar que una aplicación funcione correctamente, todo esto, sin desafiar las leyes del sentido común y la simple lógica.

"La carrera por la calidad, no tiene meta.... así que técnicamente es una marcha hacia la muerte."

El punto es que quiero que me cuenten: ¿A cuantos de ustedes les ha tocado vivir una experiencia similar a esta?, ¿Y si eres un "Ingeniero de Pruebas", has visto casos similares?, ¿Que es lo mínimo que deben saber un Ingeniero de Pruebas?

Sunsetting Sr. Byte.

El Sr. Byte ha estado más de 5 años inactivo. Digamos que estaba en " code freeze ". Pero ahora es el último release. Quizas no...