¿Cuál es la mejor manera de mejorar sus habilidades en arquitectura de software? Nos enseñaron patrones de diseño en la universidad, y veo muchos libros con ejemplos simples y directos, pero aparte de ellos, ¿cómo puedes aprender buena arquitectura? En otras palabras, ¿cómo evoluciona uno para convertirse en un gran arquitecto? ¿Cuáles son los requisitos previos?
architecture
skills
Adam Lear
fuente
fuente
Respuestas:
Red . Conozca algunos buenos arquitectos. Habla con ellos. Aprende de ellos y saca ideas de ellos.
Lee vorazmente . Hay cientos de libros sobre arquitectura de software (incluso varios buenos). Lea sobre el tema y lea temas relacionados (arquitectura de edificios, estructuras de gestión, ingeniería eléctrica, arquitectura operativa, etc.).
Estudiar arquitectura . Hay miles de plataformas y productos por ahí. Míralos. Diseccionar sus partes. Al principio, algunos de mis mejores aprendizajes fueron mirar arquitecturas geniales (ver los pequeños lenguajes, archivos empaquetados y estructuras simples en la fuente original de Doom, por ejemplo).
Piensa, dibuja, prueba . Practica tus habilidades de diseño en problemas imaginarios. Problemas divertidos Problemas interesantes
Hacer . Trabaja en sistemas reales. Envíalos. Siente el dolor causado por tus malas decisiones, el dolor que le causas a tus desarrolladores y aprende de ello. Una buena arquitectura es equilibrar lo que obtienes, cómo llegas allí y cuánto cuesta.
fuente
Personalmente, diría que he aprendido más de pura prueba y error que de la lectura. Puede que se sorprenda de cuántas de las ideas locas que tiene resultan buenas y la cantidad de ideas brillantes que resultan ser terribles. Pero nunca lo sabes hasta que lo intentas. Esto es tan cierto cuando comienza a escribir el código como cuando está a mitad de camino. No te quedes con una arquitectura que no funciona solo porque es lo que ya has decidido.
Por último, dedique tiempo a pensar en su solución. Haz tu mejor esfuerzo para no escuchar a los compañeros de trabajo y gerentes que te presionan para que no pienses bien y simplemente empieces a codificar.
fuente
Un codificador piensa en resolver el problema; un arquitecto piensa en mantener la solución, limita la implementación que impone la solución, las áreas de la implementación para mejorar según lo permita el tiempo, las áreas de la implementación que pueden omitirse o reducirse si el cronograma se desliza, dependencias (tanto internas como externas ) que pueden afectar el rendimiento de la implementación y las cosas que se pueden hacer para limitar la exposición al riesgo, la capacitación requerida para los nuevos usuarios del sistema, la documentación que se desarrolla y los cambios necesarios a medida que la implementación se desvía de la solución prevista, y cómo los interesados sienten sobre el progreso que se está haciendo y la aplicabilidad de la implementación al problema real que se está resolviendo.
Ser arquitecto requiere que puedas comunicarte de manera efectiva, organizar tus pensamientos y planes en un horario viable, descomponer un problema en piezas implementables, construir prototipos de piezas técnicamente desafiantes y coordinar la implementación de las piezas para que todo termine a tiempo.
Aprenda a diagramar su solución con Enterprise Architect , Visio o lápiz y papel. Como se menciona en otras respuestas, obtenga un mentor de arquitectos y comparta sus diagramas de soluciones con ellos para su revisión. Escuche los comentarios y revise sus diagramas.
Aprende a construir horarios realistas. Comience a realizar un seguimiento de cuánto tiempo le lleva implementar las cosas y realice un seguimiento de lo cerca que está de estimar correctamente cuánto tiempo lleva.
Divide tu próxima tarea en pequeños pedazos antes de comenzar a codificar y realiza un seguimiento de los pasos que omitiste. Aprenda a anticipar áreas problemáticas y prototipos antes de comenzar a codificar la solución final.
Vale la pena agregar aquí también el artículo vinculado por Pierre 303 en esta respuesta a una pregunta similar:
¿Quién necesita un arquitecto de Martin Fowler?
fuente