Fundamentos da Arquitetura de Software - Capitulo 2
Pensamento arquitetural. Nesse capítulo apresenta alguns aspectos básicos para começarmos a pensar como um arquiteto.
Pensando como um Arquiteto de Software: Estrutura, Trade-offs e Código
Você já parou para pensar no impacto que uma única alteração pode ter na escalabilidade de todo o seu sistema? Entender como diferentes componentes interagem e escolher as bibliotecas e frameworks corretos para cada cenário é a essência de pensar de maneira arquitetural.
Mas, na prática, o que realmente separa a arquitetura do design de software? E como o arquiteto consegue manter a mão na massa sem perder a visão do todo? Vamos explorar as respostas para essas questões.
Arquitetura vs. Design: Qual a diferença?
Embora andem de mãos dadas, a divisão entre os dois conceitos pode ser resumida em estrutura e aparência:
. Arquitetura lida com a estrutura do sistema. Envolve as decisões estratégicas e de alto nível.
. Design foca na aparência e no detalhe da implementação. Está diretamente ligado às decisões táticas do dia a dia.
A grande bússola para diferenciar os dois é a relevância dos trade-offs. Toda decisão técnica exige compromissos, mas quanto mais críticos, amplos e difíceis forem os trade-offs, mais arquitetural é a decisão em questão.
A Pirâmide do Conhecimento: Amplitude vs. Profundidade
Para desempenhar bem o papel, um arquiteto precisa desenvolver uma forte amplitude técnica.
Profundidade técnica é o domínio absoluto sobre uma linguagem ou framework (por exemplo, conhecer os detalhes internos do Java e do Spring Boot).
Amplitude técnica é saber um pouco sobre muitas coisas.
Podemos visualizar o nosso conhecimento como uma pirâmide dividida em três partes:
1. O que sabemos (Topo).
2. O que sabemos que não sabemos (Meio) — É exatamente aqui que a amplitude técnica do arquiteto deve atuar!
3. O que não sabemos que não sabemos (Base).
O Desafio: Equilibrando Arquitetura e Código
Um dos maiores desafios da área é não se afastar da codificação prática. Todo arquiteto deve codificar para validar suas ideias e manter certo nível de profundidade técnica. Para conseguir esse equilíbrio, siga estas 6 dicas:
1. Evite a "Armadilha do Gargalo": Não assuma tarefas de código que estejam no caminho crítico de entrega. Se você for chamado para resolver um problema de arquitetura, seu código não pode travar a equipe.
2. Crie POCs (Provas de Conceito): Validar decisões de arquitetura exige escrever código. As POCs são a oportunidade perfeita para testar hipóteses na prática.
3. Ataque a Dívida Técnica: Use seu tempo de codificação para refatorar, melhorar a estrutura existente e pagar débitos do projeto.
4. Corrija Bugs: Caçar bugs é uma excelente maneira de descobrir onde a arquitetura atual está frágil ou dificultando a vida dos desenvolvedores.
5. Automatize: Invista tempo criando scripts ou ferramentas que facilitem o fluxo de trabalho de todo o time.
6. Faça Revisões de Código (Code Reviews): Uma ótima forma de se manter próximo do código e garantir que as diretrizes arquiteturais estão sendo seguidas na implementação.
Para refletir e debater: E você, olhando para as tarefas do seu dia a dia, tem tomado decisões mais estratégicas ou mais táticas? Deixe sua visão nos comentários!
Recommended book
Want to dive deeper into this topic? Check out the book that inspired this post.
View book →