El arquitecto de software es un rol especializado del desarrollador de software que pasa la mayor parte de su tiempo buscando soluciones para abordar los requisitos “no funcionales”. Ejemplos de requisitos no funcionales son la escalabilidad (tanto vertical como horizontal), reutilización, disponibilidad, etc.
En una empresa de nueva creación, un Arquitecto de software a menudo emerge del desarrollador de software principal que ha desarrollado un producto de software exitoso para su empleador, y está siendo utilizado en otro proyecto con alguna modificación / extensión. Luego, como desarrollador principal, define reglas o pautas sobre cómo extender o modificar su software. Entonces crea una especie de capa, que hace que el desarrollo del producto de software posterior sea más rápido y económico.
En una empresa establecida, un Arquitecto de software definirá requisitos no funcionales tales como escalabilidad, disponibilidad, partición de software con su API o una forma estandarizada de desarrollar aplicaciones que incluyan lenguaje de programación, marco de software, biblioteca de terceros. A menudo desarrolla prototipos como prueba de concepto de su diseño. Por lo tanto, la vida de otros desarrolladores de software que tienen que implementar requisitos funcionales es más fácil porque alguien ha proporcionado una guía y un ejemplo.
- ¿Por qué trabajas como desarrollador de software en lugar de construir tu startup?
- ¿Existe algún sistema de calificación para desarrolladores de software?
- ¿Es cierto que debería "fingirlo hasta que lo sepa" cuando solicito un trabajo de desarrollador de software que requiere habilidades que no conozco?
- ¿Qué diferencia a un gran desarrollador de software de los mediocres / malos?
- ¿Existe una lista existente de desarrolladores de juegos HTML5?
El resultado más tangible sería, en general, menos tiempo de desarrollo, calidad constante (mala / buena) y miembros más felices del equipo. 🙂
El arquitecto de software incompetente entrega un diagrama de componentes de muy alto nivel, generalmente sin especificación de cómo interactúa ese componente y permite que los desarrolladores descubran cómo implementar los requisitos no funcionales. Este arquitecto excusa que se supone que la arquitectura es de alto nivel, y no gobierna ni toca el trabajo de codificación sucio.
En resumen, el desarrollador de software es la persona que desarrolla la implementación de los requisitos.
Software Architect es un especialista que desarrolla y define el sistema y la capa subyacente que facilita el trabajo de otros desarrolladores de software.