No estoy completamente de acuerdo con la respuesta de maple_shaft, ¡pero no había suficiente espacio en el comentario para decir todo mi comentario! ;-)
Estoy de acuerdo en que cada desarrollador puede y debe ser un arquitecto, pero eso no significa que cada desarrollador deba ser responsable de la arquitectura de un producto o sistema completo. Además, no creo que pueda pintar a todos los equipos de arquitectura con el mismo pincel ancho, y cuando se hace correctamente, los equipos de arquitectura pueden ofrecer un gran valor al proceso general de desarrollo de productos. La idea errónea es que los arquitectos deberían dictar cada aspecto del diseño del sistema. En su lugar, deberían centrarse en el diseño de nivel superior y dejar los detalles de implementación a sus equipos de desarrollo. Sin embargo, eso no quiere decir que los desarrolladores no deberían participar en el proceso de planificación y diseño desde el principio.
Cuanto más grande, más modular y, en última instancia, más complejo sea un producto, es más probable que encuentre diferentes partes del producto manejadas por diferentes equipos de desarrollo. Dichos equipos no necesitan comprender el sistema en su conjunto, siempre que tengan una comprensión completa de las partes del sistema de las que son responsables. A menudo, estos equipos adicionales son contratados como subcontratistas con el propósito específico de desarrollar un módulo en un área particular de tecnología en la que los arquitectos u otros equipos pueden no tener experiencia. Mis propios talentos particulares se encuentran en el desarrollo de API, y aún no he visto una API bien factorizada que se desarrolló completamente de forma orgánica sin ser un desastre completo en términos de usabilidad, o eso no requería que alguien se destacara como la persona que se aseguró de que hubiera un nivel de uniformidad entre los diferentes aspectos de la API. Puedo seguir enumerando muchos ejemplos y razones, pero no creo que este tipo de situaciones sean la torre de marfil BS que muchos podrían pensar que son. Desafortunadamente, hay muchos lugares, particularmente en las áreas de defensa, médica y los sectores financieros donde la paranoia corporativa resulta en un desarrollo de productos mal especificado y aún más mal administrado del tipo que estoy seguro de que maple_shaft estaba más preocupado. Estas son las cosas que creo que dan a los arquitectos un mal nombre mal merecido (en general). Desafortunadamente, hay muchos lugares, particularmente en las áreas de defensa, médica y los sectores financieros donde la paranoia corporativa resulta en un desarrollo de productos mal especificado y aún más mal administrado del tipo que estoy seguro de que maple_shaft estaba más preocupado. Estas son las cosas que creo que dan a los arquitectos un mal nombre mal merecido (en general). Desafortunadamente, hay muchos lugares, particularmente en las áreas de defensa, médica y los sectores financieros donde la paranoia corporativa resulta en un desarrollo de productos mal especificado y aún más mal administrado del tipo que estoy seguro de que maple_shaft estaba más preocupado. Estas son las cosas que creo que dan a los arquitectos un mal nombre mal merecido (en general).
Entonces, ¿dónde está el término medio que estaba buscando el OP? La respuesta tiene que ver con abrir canales de comunicación. Los arquitectos deben entregar especificaciones que describan sus diseños con suficiente detalle para garantizar que los equipos de desarrollo entiendan dónde están los límites. Historias y escenarios de características en el sentido más amplio, donde todo se considera una caja negra. Luego, los arquitectos deben asegurarse de que los equipos tengan acceso al tiempo del arquitecto para confirmar cualquier suposición, y que se responda cualquier pregunta sobre especificaciones que parecen demasiado amplias o poco claras. Después de eso, se trata realmente de garantizar que los equipos individuales sean conscientes de en qué están trabajando los otros equipos, y que sepan con quién comunicarse en los otros equipos para garantizar que cada parte del sistema jugará bien con las otras partes. Estos equipos se encuentran directamente. Una vez que el sistema ha sido diseñado al nivel más amplio, los arquitectos deberían ser realmente las personas a las que recurren los equipos cuando necesitan un control de la cordura, y para garantizar que se mantenga la "visión" del producto. También deben tener en cuenta cualquier proceso de integración requerido y proporcionar una "cobertura aérea" muy necesaria para los equipos de desarrollo de los gerentes, clientes y cualquier otra parte interesada, al tiempo que se aseguran de que estas diversas personas puedan reunirse para trabajar entre ellos cómo deberían funcionar las cosas.
En primer lugar, los arquitectos de la OMI deben ser facilitadores y comunicadores, y los diseñadores en segundo lugar. ¿En cuanto a qué nivel de especificación? Creo que los mejores arquitectos son los que preguntan a sus equipos sobre el nivel de detalle que un equipo quiere, y entre ellos encuentran un equilibrio que funciona. Los diferentes equipos pueden tener diferentes requisitos en términos de la cantidad de documentación o instrucciones requeridas. Los equipos de alto nivel pueden encontrar un diagrama aproximado y una conversación rápida puede ser suficiente para comenzar, mientras que los equipos llenos de desarrolladores relativamente jóvenes pueden necesitar un poco más para que funcionen. Sobre todo, el arquitecto necesita alentar a los desarrolladores a ejercer sus propios talentos de diseño para obtener el mejor resultado final de cada equipo.