Soy un graduado de CS y quiero convertirme en un buen arquitecto de software. ¿Qué tengo que hacer?

Buena pregunta, difícil de responder. En primer lugar, debe adquirir experiencia como desarrollador de software. La arquitectura no es un ejercicio de torre de marfil. (Algunos arquitectos son de esta variedad, pero causan más problemas de los que resuelven). Un buen arquitecto necesita una experiencia amplia y profunda con la tecnología para poder tomar buenas decisiones.

No puedo decir cómo me convertí en arquitecto. En parte es algo personal: ¿tiene la capacidad y la inclinación para ver, crear y comunicar patrones más grandes en el software? Algunas personas son extremadamente buenas en problemas de codificación difíciles, pero no prestan mucha atención al panorama general. Este tipo de persona es tan valioso como un arquitecto, pero los dos tipos de personas tienen diferentes formas de ver las cosas o sus preferencias. También necesita buenas habilidades de comunicación y liderazgo para ser arquitecto.

Aunque no lo he leído todo, he estado atento al siguiente sitio, que tiene un blog, presentaciones y ahora ofrece un libro sobre cómo pasar de programador a arquitecto. Por lo que he visto, es bastante bueno.

Codificando la Arquitectura

Las respuestas a esta pregunta: http://www.quora.com/What-are-some-good-practical-books-for-software-architecture también pueden ser útiles (tengo una respuesta sobre esa pregunta, pero hay muchas buenas sugerencias)

También encuentro esta respuesta muy perspicaz: la respuesta de Gary Wisniewski a ¿Qué hace a un buen arquitecto de software? ¿Cuáles son las características definitorias de un arquitecto y las diferencias entre un arquitecto y un gerente de ingeniería?

Las respuestas de Vanessa y Greg cubren la mayoría de mis pensamientos sobre la arquitectura de software. Añadiría dos sugerencias específicas:

  1. Lea tanto código como pueda tolerar
  2. Concéntrese en la capacidad de prueba en sus diseños.

No te sugiero que leas al azar un montón de código en github. Hay algunos proyectos de código abierto muy populares que vale la pena entender en detalle. ¿Qué problemas resuelven? ¿Qué los hace tan populares? ¿Qué compensaciones hicieron en comparación con los proyectos menos populares? Comprender las respuestas a esas preguntas en detalle informará sus propios diseños.

El diseño centrado en la capacidad de prueba proporciona validación con respecto a los requisitos y la mantenibilidad. La arquitectura elegante se promueve en algunas escuelas y es digna de estudio, pero el mundo del desarrollo de productos gira en torno al horario y la adaptación en respuesta a los requisitos cambiantes. El mercado solo se preocupa por la funcionalidad. Puedes leer esto de otra manera: el diseño ganador no siempre es el diseño más hermoso.

A Einstein se le atribuye la siguiente máxima: “Todo debería ser lo más simple posible, pero no más simple”. Esas son palabras para diseñar.

Atribución de la cita: http://quoteinvestigator.com/201

Los mejores arquitectos de software con los que he trabajado tienen habilidades multidisciplinarias. No solo son buenos en ingeniería de software, sino que comprenden las necesidades de los clientes, la economía y muchas otras cosas. Son capaces de aplicar sus conocimientos a la tarea en cuestión. Sin embargo, no confunda esto con ser el tipo de “crack codificador” que gana concursos de programación. Esa es una habilidad diferente.

More Interesting

Aspirando a ser un profesional independiente en el desarrollo de software, ¿cómo empiezo?

Vengo de un país del tercer mundo donde los desarrolladores de software están mal pagados y en realidad no hay una compañía de software seria. Soy un desarrollador de software bastante serio. ¿Qué tengo que hacer?

¿Cuáles son los fundamentos del desarrollo web en los que todo ingeniero de software junior debería tener una sólida comprensión?

¿Son los desarrolladores de software rusos los mejores del mundo?

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

¿Puede un desarrollador de software escribir un poema? Si es así, comparte.

¿Se considera que un desarrollador de software de automatización de pruebas es un desarrollador de software "normal"?

Dentro de un año, ¿alguna startup en Sydney me emplearía para una pasantía remunerada como desarrollador junior de software? ¿Por qué o por qué no?

Cómo encontrar puestos de desarrollo de software de nivel de entrada, cuando parece que todos quieren desarrolladores senior

¿Por qué algunos programadores informáticos desarrollan un software sorprendente o nuevos conceptos, mientras que otros están atascados con el trabajo de programación básica?

Como desarrollador de software, ¿cuál es el error más razonable que hayas visto?

¿Dónde puedo encontrar desarrolladores independientes de aplicaciones para Android e iOS en Bangalore?

¿Qué puede hacer un ingeniero de software por su país?

¿Los desarrolladores de software depuran su propio código?

¿Cuál es la mejor computadora portátil económica para desarrolladores de software?