18 November 2009

Si diseñas algo, deberías ser capaz de codificarlo

Como arquitecto, es tentador crear abstracciones y diseños elaborados para solventar una problemática actual. Incluso resulta tentador salpicar un proyecto con nuevas tecnologías. Al finalizar el día, alguien tendrá que implementar tu diseño, y las acrobacias arquitectónicas que tienen que realizar los desarrolladores impactan en el proyecto.

Cuando se diseña la arquitectura de un proyecto, necesitas saber la cantidad de esfuerzo necesario para realizar cada elemento de tu diseño – Si has desarrollado un elemento antes, será mucho más fácil calcular el esfuerzo que ello necesita.

No uses un patrón de diseño que nunca antes hayas implementado personalmente. No te fíes de un framework del cual nunca hayas desarrollado con él. No uses un servidor que nunca hayas configurado antes.

Si tu arquitectura depende de elementos/componentes que no hayas utilizado personalmente, existen ciertos aspectos negativos a tener en cuenta:
  1. No haber experimentado la curva de aprendizaje que el equipo tendrá que hacer.

    Si no sabes lo que se tarda en aprender la nueva tecnología, no serás capaz de hacer una buena estimación del coste de la implementación.

  2. No conocer los puntos de fallo o aquellos que son difíciles para evitarlos cuando se usen determinados elementos.

    Inevitablemente, las cosas no trabajan lo suficientemente bien como la demo proporcionada por el experto en la tecnología. Si no has trabajado anteriormente con la tecnología estarás ciego cuando esto suceda.

  3. Perderás la confianza de los desarrolladores.

    Cuando estos hagan preguntas sobre el diseño y no estés en posición de dar respuestas solidas, perderás rápidamente la confianza en Ti y tu diseño.

  4. Introducirás riesgos innecesarios.

    Sin saber estas cosas, introducirás grandes incógnitas sobre los elementos claves de la solución. Nadie quiere empezar un proyecto con un riesgo grande e innecesario dando vueltas por allí.
Entonces como hacemos para aprender nuevos frameworks, patrones y plataformas de servidor? Bien, eso es otro axioma en sí mismo: Antes de nada, un arquitecto es un desarrollador.

Mike Brown


- FIN -

No comments: