¿Cuál es la diferencia entre un arquitecto de software y un desarrollador full-stack? Quién cobra más y quién tiene más oportunidades?

Un desarrollador full-stack es exactamente eso: un desarrollador. Escriben código, por lo general bajo la dirección de alguien, ya sea el propietario del producto a través de historias de usuario ágiles, o simplemente el líder del equipo diciéndoles qué hacer a continuación. Puede haber otras maneras de obtener una dirección, pero en última instancia, se escribe el código.

Un arquitecto también escribe el código para un cierto porcentaje de su tiempo, pero este no es su trabajo principal. Su trabajo es analizar los requisitos no funcionales de un sistema de software y elegir los enfoques que se adoptarán para lograrlos. Por ejemplo, la extensibilidad. ¿Qué significa eso en el contexto de un proyecto determinado y cómo se va a conseguir? Lo mismo ocurre con la seguridad, la escalabilidad y otros "atributos de calidad". El arquitecto tiene que tener en cuenta el panorama general de un sistema de software, todas sus partes móviles, el diseño de alto nivel, los enfoques preferidos para ciertos tipos de problemas, etc. A continuación, tiene que comunicar todo esto al equipo y asegurarse de que esta visión se lleva a cabo a lo largo del proyecto. La parte de codificación del trabajo suele implicar "picos arquitectónicos", que son una especie de prototipo de una porción de arriba a abajo de un sistema para probar la viabilidad de un enfoque o conjunto de enfoques. También, y en una línea similar, los prototipos -también para probar la viabilidad de alguna idea y, además, para servir de punto de partida para que otros desarrolladores se basen en ella. Los arquitectos también evalúan y eligen las tecnologías que se utilizarán en un proyecto. Evalúan las compensaciones entre distintos diseños y eligen el camino a seguir. Son los pensadores, comunicadores y líderes de la visión global.

¿Quién tiene más oportunidades y mejores salarios? Sinceramente, no puedo responder a eso. Es probable que haya menos puestos de trabajo para arquitectos que para desarrolladores. Pero lo mismo se puede decir de cualquier especialista. Los salarios no puedo comentarlos, excepto para decir que los arquitectos suelen tener más experiencia laboral que un desarrollador típico full-stack, ya que se necesita más experiencia para convertirse en uno. Esto puede tener un efecto en los salarios esperados, pero de nuevo el mercado es bastante irracional y varía mucho de un lugar a otro. Alguien que se graduó ayer de la universidad y nunca ha trabajado como programador en su vida ganará un salario mucho más alto en el área de la bahía de San Francisco de lo que yo he ganado en mi carrera.