Antipatrones de desarrollo de software: Golden Hammer

Este es uno de los antipatrones más comunes de la industria.
"Cuando se posee un martillo de oro, todo parece un clavo."
Muchas veces, un producto de tercero ofrece una solución a un problema. Dado el costo inicial de adoptar esta solución el proveedor del producto a menudo provee más extensiones de esta solución para otras tecnologías y así reducir costos.

Generalidades

Supongamos que un equipo de desarrollo de software ha adquirido un alto nivel en una solución o producto en particular (al que nos referiremos como Golden Hammer). Como resultado, todos los nuevos desarrollos son vistos como algo que puede ser resuelto mejor con esta solución. En muchos casos, nuestro Golden Hammer no se ajusta a nuestro problema, pero se dedica muy poco tiempo a la investigación de soluciones alternativas.
Este antipatrón conlleva a aplicaciones erróneas de una herramienta, concepto o patrón de diseño. Los desarrolladores y los administradores de proyectos se sienten cómodos con un enfoque existente y reacios a aprender y aplicar uno nuevo que se ajuste mejor.


Síntomas y consecuencias

  • Herramientas y productos idénticos son usados en una amplia gama de productos diferentes.
  • Las soluciones tienen baja performance, escalabilidad, etc, cuando son comparadas con otras soluciones en la industria.
  • Los desarrolladores se aíslan de la industria. Demustran una carencia de conocimiento y experiencia con enfoques alternativos.
  • Los productos existentes dictan el diseño y la estructura del sistema.
  • Los nuevos desarrollos dependen en gran medida de un producto o tecnología.

Causas típicas

  • Varios casos de éxito han usado un producto en particular.
  • Se ha invertido mucho tiempo en conocer o experimentar un producto o tecnología.
  • El equipo se ha aislado del resto de la industria.

Excepciones conocidas

Este antipatrón, a veces funciona:
  1. Si el producto que define las restricciones de la arquitectura es una solución estratégica a largo plazo. Por ejemplo, usar una base de datos Oracle para persistir y procedimientos almacenados para el acceso seguro a los datos.
  2. Si el producto es parte de una suite que proporciona la mayor parte de las necesidades del software.

Solución

Esta solución involucra tanto un aspecto filosófico como un cambio en el proceso de desarrollo. Filosóficamente, una empresa necesita desarrollar un compromiso con la exploración de nuevas tecnologías.
Sin tal compromiso, existe el peligro de depender excesivamente de una herramienta o tecnología específica. Esta solución tiene dos aspectos: un mayor compromiso por parte de la administración para mejorar profesionalmente a sus desarrolladores conjuntamente con una estrategia de desarrollo que requiere límites específicos del software para permitir migrar de tecnología.
Los sistemas de software necesitan ser diseñados y desarrollados con límites bien definidos que faciliten el reemplazo de componentes individuales del software. Un componente debería aislar el sistema de las características propias de su implementación.
Además, los desarrolladores de software necesitan estar al día sobre las tendencias tecnológicas, tanto en el dominio de la organización como en la industria de software en general. Esto se puede cumplir a través varias actividades que fomenten el intercambio de conocimientos técnicos. Por ejemplo, los desarrolladores pueden crear grupos para discutir técnicas de desarrollo (patrones de diseño, estándares emergentes, nuevos productos) que puedan impactar en el futuro de la empresa.
Finalmente, la administración debe invertir tanto en el desarrollo profesional de los desarrolladores de software como en recompensar a aquellos desarrolladores que tienen la iniciativa de mejorar su propio trabajo.

0 comentarios:

Publicar un comentario

Muchas gracias por leer el post y comentarlo.

 
Copyright 2009 Programación SOLIDa
BloggerTheme by BloggerThemes | Design by 9thsphere