¿Cuál es la diferencia entre un desarrollador de software y un arquitecto de software?

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.

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.

El desarrollador de software es generalmente un ingeniero bien versado en un lenguaje de programación que se puede utilizar para crear software.

Software Architect es un profesional independiente del lenguaje que puede diseñar un software desde diferentes perspectivas.

Martin Fowler se refiere al arquitecto de software para que sea como un “urbanista”.

En mi experiencia, el Arquitecto de software y el Desarrollador de software son roles superpuestos. He visto a Arquitectos que son muy prácticos y pueden escribir un código excelente. Hay desarrolladores de software que pueden diseñar software maravilloso.

Si realmente está buscando la diferencia en dos roles, el desarrollador de software debe implementar el diseño creado por el arquitecto de software. Por lo tanto, el trabajo de Software Architect es una entrada para el trabajo del desarrollador de software.

Sígueme en Gautam Gupta porque puedo ayudarte a aprender las últimas cosas en Arquitectura de Software.

Todos tienen su propia definición de lo que es realmente la arquitectura de software, y las definiciones rara vez coinciden. Hace años, noté una tendencia común en estas definiciones y se me ocurrió mi propia metadefinición, pero a la mayoría de la gente no parece gustarle: la arquitectura de software es el aspecto de diseño estratégico de cualquier nivel en el que trabaje predominantemente.

En otras palabras, sea cual sea el nivel en el que esté trabajando, día a día, cuando se detenga a considerar los problemas estratégicos, debe alejarse a una altitud lo suficientemente alta como para poder comenzar a ver la forma del bosque en lugar de ver nada más que arboles Esa es la arquitectura.

Para el mejor talento tecnológico de una empresa, eso puede significar cosas como plataformas, protocolos, tecnologías, lenguajes de programación, etc.

Para el desarrollador de trincheras, eso puede significar cómo encajan los diversos componentes con los que están trabajando.

Para el arquitecto del equipo, eso puede significar cómo los diversos subsistemas de esta aplicación encajan entre sí.

En general, con proyectos que involucran a muchos programadores, es necesario mantener el contexto común en el nivel estratégico (es decir, arquitectura) coherente entre los desarrolladores. También es necesario tener una visión unificada para el panorama general, es decir, no solo cómo interactúan las diferentes partes del sistema de software a nivel estratégico, sino también hacia dónde va la dirección estratégica del sistema en su conjunto.

Tener una persona (o a veces un grupo) que aborde específicamente esos problemas es una forma de satisfacer esas necesidades. Dejando a un lado si es el mejor enfoque …

… para que una persona o personas hagan un buen trabajo, tener una competencia básica en todos o en la mayoría de los aspectos del desarrollo involucrado suele ser una buena idea. Esto se debe a una serie de razones, comenzando con el respeto (y el respeto * por *) de los otros desarrolladores, la capacidad de comunicarse con ellos, etc., pero lo más importante, tener una sensación innata decente de los desafíos y soluciones, y de los subsistemas que interactúan entre sí.

Además, un arquitecto generalmente necesita tener buenas habilidades para comunicarse con otras partes interesadas, generalmente no técnicas. Tanto para solicitar su opinión como para obtener su aceptación del plan estratégico. El software no existe en el vacío.

La persona que realiza la arquitectura del software puede o no tener que hacer también la planificación del proyecto, la gestión y el liderazgo del equipo, pero ciertamente al menos tendrá que trabajar extensamente con esas personas.

También hay habilidades importantes hacia adentro como la comunicación individual y grupal con los otros desarrolladores. Algunos de estos son “blandos”, como la resolución de conflictos, otros son técnicos, como una comprensión de UML mejor que la media, etc.

Software Architect es aquel que toma decisiones de diseño de alto nivel y dicta los estándares técnicos, incluidos los estándares, herramientas y plataformas de codificación de software.

El trabajo del desarrollador de software es investigar, diseñar, implementar y probar el software.

Vea mi respuesta a la siguiente pregunta, donde enumero algunas de las cualidades y habilidades particulares que busco en un arquitecto de software:

Si uno asume el rol de arquitecto técnico por ser desarrollador, ¿cuáles son los requisitos básicos para llegar allí?

Dado que esta pregunta es sustancialmente similar a varias otras en Quora, lo remitiré a mi respuesta en otro lugar en lugar de repetirla.

La respuesta de Doug Bell a ¿Cuál es la diferencia entre arquitecto de software, desarrollador, programador e ingeniero de software?

La herramienta principal de un desarrollador de software es eclipse.

La herramienta principal de un arquitecto de software es PowerPoint.

Triste pero cierto :).

Se trata de su zona de autoridad y responsabilidad, eche un vistazo: ¿Qué hace un arquitecto de software?

More Interesting

¿Qué lema debo dar para mi empresa de desarrollo de software?

¿Son felices los desarrolladores de software?

¿Qué actividades extracurriculares puede hacer un desarrollador de software para aumentar su currículum y aumentar el valor de mercado?

¿Vale la pena aprender Visual C ++ hoy?

¿Cuáles son las diversas metodologías de desarrollo de software?

Tengo más de 40 años, canadiense, mujer, sin experiencia laboral. ¿Cuál es mi oportunidad de encontrar un trabajo tecnológico (o cualquier trabajo)? ¿Qué debería aprender a continuación?

¿Cuál es su consejo para nivelar trabajo / estudio / proyectos / amor y lograr sus objetivos?

¿Cuántas personas suelen solicitar puestos de desarrollador de software remoto?

¿Cuál es el mejor lenguaje, plataforma, marco para construir un portal de comunidad social?

¿Cuál tiene un futuro mejor por delante, un desarrollador web o un desarrollador de software?

Como estudiante sin experiencia, pero con el conocimiento en desarrollo de software, ¿cómo puedo comenzar un gran proyecto de desarrollo de software?

¿Por qué hay tantas preguntas sobre cómo convertirse en desarrollador de software y casi tantas preguntas sobre cómo salir del campo?

Soy un desarrollador de Java con 5 años de experiencia, y actualmente estoy buscando cambiar mi empresa. ¿Para qué tipo de entrevista debo prepararme?

¿Cuál es una mejor carrera, ingeniero de software / desarrollador o agente de bienes raíces / desarrollador?

¿Cuál es la diferencia entre el desarrollador de soluciones y el ingeniero de software?