Executando verificação de segurança...
2

O que a Arquitetura de Software pode nos ensinar sobre aprender

Imagem

As arquiteturas de software modernas são baseadas na divisão do software em partes, o mais interessante disso é que esse princípio vai além da tecnologia, podendo ser aplicado em diversas áreas — inclusive para turbinar a velocidade com que adquirimos conhecimento.

Quem nunca se sentiu perdido diante da enorme quantidade de informações que precisa estudar — seja para aprender algo novo ou simplesmente para manter-se atualizado? Essa sensação de sobrecarga frequentemente leva algumas pessoas a considerarem abandonar suas aspirações profissionais.

Isso ocorre porque com o passar do tempo, as informações sobre qualquer tema tendem a se tornar mais complexas. No universo do software, acontece algo semelhante: a complexidade cresce à medida que os sistemas evoluem. A arquitetura de software enfrenta esse desafio aplicando o princípio da divisão em partes, um conceito que também pode ser aplicado em muitas outras áreas do conhecimento.

Por que dividir?

As arquiteturas de software modernas têm como base separar o domínio da infraestrutura. Mas por que essa separação é tão importante? Porque o domínio varia com muito menos frequência do que a infraestrutura. Uma arquitetura centrada no domínio, que é a parte mais estável, torna o software mais robusto e mais fácil de manter.

Imagem

De forma semelhante aos softwares, em nossas vidas, existem aspectos que mudam pouco com o tempo — os princípios — e outros que estão em constante transformação — os detalhes. Entender essa distinção é essencial para trazer mais estabilidade ao nosso ciclo de aprendizagem.

Qual é a vantagem de separar os princípios dos detalhes?

A premissa principal dos padrões arquiteturais é que, ao separar o domínio da infraestrutura, o software torna-se mais estável. O mesmo conceito se aplica a outras áreas da vida: ao basear nossas ações em princípios, que são atemporais, ganhamos consistência e clareza no que fazemos.

Aplicando ao mundo do desenvolvimento de software, compreender profundamente um princípio nos permite enxergar um novo framework, um novo banco de dados ou uma nova linguagem como apenas uma implementação específica de algum princípio. Ou seja, uma nova implementação de algo que já existia. Isso torna o aprendizado e a assimilação de novos conhecimentos muito mais simples.

Alguns exemplos

Considere os princípios do SOLID. Desenvolvidos ao longo de décadas, esses princípios são atemporais e independem da linguagem de programação utilizada. Eles são tão fundamentais que muitos desenvolvedores acabam os adotando naturalmente, mesmo sem nunca ter estudado diretamente sobre o SOLID.

Imagem

Outro exemplo de princípios fundamentais são os paradigmas de programação, como descrito no livro Clean Architecture. Até hoje, três paradigmas principais se destacam: Orientação a Objetos, Programação Funcional e Programação Estruturada. Todos os outros paradigmas podem ser considerados variações dessas abordagens. Por razões discutidas no livro, é improvável que um novo paradigma fundamental surja, e a principal evidência disso é que, embora esses paradigmas tenham se consolidado entre as décadas de 1950 e 1960, nenhum outro paradigma significativo foi acrescentado desde então.

Mas e agora? Como encontrar os princípios do que estamos aprendendo?

Os princípios pertencem à camada mais profunda do conhecimento, enquanto os detalhes estão na camada mais superficial e perceptível. Tudo o que é detalhe é, na verdade, a implementação de um princípio em um contexto específico.

Imagem

A melhor maneira de identificar princípios é realizando uma imersão no assunto que desejamos aprender. Muitas vezes, isso inclui praticar, explorar os detalhes perceptíveis, até conseguirmos reconhecer os padrões subjacentes e, por fim, os princípios que os sustentam.

Carregando publicação patrocinada...
1

Para quem quiser uma visão mais crítica (embora esse artigo não tente vender como panacéia, eu até confirmo o que foi dito acima, mas o livro diz algo diferente): https://pt.stackoverflow.com/q/441073/101 e espero que ajude a pessoa decidir com mais informações.

Sobre paradigma (aí teve um entendimento mais equivocado): https://pt.stackoverflow.com/q/141624/101.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).

1
1

Você leu o link que eu mandei? Lá tem uma deinição completa que pode identificar isso. As pessoas repetem o o que ouvem primeiro ou de algupem que ela usa como referência sem se questionar e pegar outras referências, por isso a definição equivocada é popular. Se você considera certo pode perdir uma explicação mais específica ou me falar mais porque acha que você definiu tudo certo nisso e o que você tem que sustenta isso.

1

Com respeito ao link, em uma das respostas, um paradigma é definido como: "... um estilo de como escrever um código...". Ao meu ver, essa definição está em concordância com o conceito de paradigma.

1

Sustento que os paradigmas são conhecimentos da categoria dos princípios porque eles são atemporais e se aplicam a diversos casos concretos (diversas lingagens de programação)
Eu elaborei esse pensamento com base nesse trecho do livro arquitetura limpa:
Trecho do livro