Qual é a melhor maneira de melhorar suas habilidades em arquitetura de software? Ensinamos padrões de design na universidade e vejo muitos livros com exemplos simples e diretos, mas além deles, como você pode aprender uma boa arquitetura? Em outras palavras, como evoluir para um grande arquiteto? Quais são os pré-requisitos?
architecture
skills
Adam Lear
fonte
fonte
Respostas:
Rede . Conheça alguns bons arquitetos. Fale com eles. Aprenda com eles e tire idéias deles.
Leia vorazmente . Existem centenas de livros sobre arquitetura de software (inclusive vários bons). Leia o tópico e leia os tópicos relacionados (arquitetura de construção, estruturas de gerenciamento, engenharia elétrica, arquitetura operacional, etc.).
Arquitetura de estudo . Existem milhares de plataformas e produtos por aí. Olhe para eles. Dissecar suas partes. Um dos meus melhores aprendizados desde o início foi analisar grandes arquiteturas (veja os pequenos idiomas, arquivos compactados e estruturas simples na fonte original do Doom, por exemplo).
Pense, desenhe, tente . Pratique suas habilidades de design em problemas imaginários. Problemas divertidos. Problemas interessantes.
Faça . Trabalhe em sistemas reais. Embarque-os. Sinta a dor causada por suas más decisões, a dor que você causa aos desenvolvedores e aprenda com ela. Uma boa arquitetura consiste em equilibrar o que você recebe, como chega lá e quanto custa.
fonte
Pessoalmente, eu diria que aprendi mais com pura tentativa e erro do que com a leitura. Você pode se surpreender com quantas das idéias malucas que você revelou serem boas e com o número de idéias brilhantes que acabam sendo terríveis. Mas você nunca sabe disso até tentar. Isso é tão verdadeiro quando você começa a escrever o código como na metade do processo. Não se apegue a uma arquitetura que não funcione apenas porque é o que você já decidiu.
Por fim, dedique algum tempo para pensar em sua solução. Faça o possível para não ouvir colegas de trabalho e gerentes que o pressionam a não pensar nas coisas e começar a codificar.
fonte
Um programador pensa em resolver o problema; um arquiteto pensa em manter a solução, limita a implementação que impõe à solução, áreas da implementação para melhorar conforme o tempo permitir, áreas da implementação que podem ser deixadas de fora ou reduzidas em escopo se o cronograma cair, dependências (internas e externas) ) que podem impactar o desempenho da implementação e o que pode ser feito para limitar a exposição ao risco, o treinamento necessário para novos usuários do sistema, a documentação que está sendo desenvolvida e as alterações necessárias à medida que a implementação se desvia da solução prevista e como o as partes interessadas sentem o progresso que está sendo feito e a aplicabilidade da implementação ao problema real que está sendo resolvido.
Ser um arquiteto exige que você seja capaz de se comunicar de maneira eficaz, organize seus pensamentos e planos em um cronograma viável, decomponha um problema em partes implementáveis, construa protótipos de peças tecnicamente desafiadoras e coordene a implementação das peças para que tudo termine no prazo.
Aprenda a esquematizar sua solução usando o Enterprise Architect , Visio ou lápis e papel. Conforme mencionado em outras respostas, obtenha um mentor de arquiteto e compartilhe seus diagramas de solução com eles para revisão. Ouça o feedback e revise seus diagramas.
Aprenda a criar agendas realistas. Comece a acompanhar quanto tempo leva para implementar as coisas e acompanhe o quão perto você está de estimar corretamente quanto tempo leva.
Divida sua próxima tarefa em pedaços pequenos antes de começar a codificar e acompanhe as etapas que deixou de fora. Aprenda a antecipar áreas problemáticas e prototipá-las antes de começar a codificar a solução final.
O artigo ligado por Pierre 303 ao longo de esta resposta a uma pergunta semelhante a pena acrescentar aqui também:
Quem precisa de um arquiteto de Martin Fowler
fonte