Eu já tava com saudade dessa série aqui no canal onde a gente aborda as profissões que envolvem o mundo dos códigos já temos vídeos aqui falando sobre o engenheiro de software analista de sistemas o scrum Master e até o analista de testes e agora chegou a vez da gente desvendar o que realmente faz um arquiteto de software Esse é o tipo de vídeo que todo desenvolvedor precisa entender pois ele serve Inclusive para quem codifica se liga a arquitetura de software tem relação Direta com código então não deixe esse assunto de lado já me diga aqui
nos comentários se você curte estudar sobre arquitetura ou se ao menos já se interessou em estudar sobre o tema na minha experiência o Dev que estuda arquitetura de software sai muito na frente dos outros profissionais Então vamos combinar assim ó se no fim do vídeo você aprender algo novo então teremos o prazer de te convidar para se inscrever aqui no código fonte TV e acompanhar semanalmente todos os vídeos que nós produzimos se você já ouviu falar em arquitetura de software e confunde com engenharia de software ou com design de código Então vale a pena a
gente começar aqui com uma rápida definição Então vamos lá olha a arquitetura de software tem relação Direta com estruturação de sistemas de software incluindo seleção de componentes tecnológicos e a definição de como esses componentes interagem entre si para formar o sistema Então são decisões de alto nível que estabelecem o quadro geral do sistema focando em aspectos como escalabilidade disponibilidade confiabilidade manutenibilidade falei certo né manutenibilidade portabilidade e também a segurança o principal objetivo da arquitetura de software é garantir que o sistema seja estruturado de maneira que atenda aos requisitos funcionais e os requisitos não funcionais além
é claro de ser fácil de manter e escalar ao longo do tempo muita coisa né muita coisa mas e o design de código para muitas pessoas o design de código também faz parte da arquitetura de software porém ele é mais focado nos detalhes de implementação dos módulos e componentes dentro da arquitetura Geral do sistema ele se concentra em como o código é escrito e organizado no nível do módulo abrangendo ali escolhas sobre padrões de codificação nomenclatura e uso de padrões de design aqueles famosos design patterns o design de código é crucial pra qualidade do software
incluindo a sua legibilidade reusabilidade e testabilidade então Vanessa não tem como separar arquitetura de design eles estão muito misturados mas a engenharia de software é um termo mais abrangente que tá relacionado ao controle de processos que envolvem a arquitetura e o design de código então são muitos outros aspectos relacionados ao desenvolvimento de software a engenheria de software inclui o desenvolvimento de software em si né a programação desde a concepção e a especificação de requisitos até a manutenção e a gestão de software após o seu lançamento engloba técnicas e práticas como gestão de projeto análise de
requisitos design codificação testes e também a manutenção então fica tudo um pouco misturado né Pois é então apesar das responsabilidades diferentes o arquiteto de software tem um peso grande sobre suas decisões e é por isso que o papel deles dentro de projetos estão entre os mais bem remunerados aliás existe uma escola para aprender arquitetura de software de verdade e na prática que se chama full cycle Você já conhece ela além de uma didática Fora do Comum os casos de usos propostos são aplicáveis sim diretamente no mundo real você vai se sentir realmente preparado para atuar
em grandes projetos nós já tivemos o prazer de participar de eventos da full cycle e o nível técnico é simplesmente absurdo inclusive eles acabaram de lançar um MBA próprio para formação em arquitetura de software além de certificados reconhecidos você vai adquirir uma gama de conhecimentos que grandes empresas aqui no Brasil e até no exterior estão desesperadas para conseguir Mas então preste atenção o curso da full cycle dura 18 meses é online e ao final você recebe um diploma de especialista reconhecido pelo MEC no MBA você vai ter a visão Ampla das áreas de arquitetura de
soluções arquitetura de software sre além de habilidades interpessoais Ou seja te deixa realmente preparado pros desafios do mercado para conferir todos os detalhes do MBA em arquitetura full cycle é só acessar o link que tá aqui na descrição do vídeo agora você já sabe o que que é arquitetura de software Mas e no dia a dia o que que um arquiteto faz para ajudar o seu time primeiro nós temos que dizer que um arquiteto de software bom É sim necessariamente um bom desenvolvedor tem que saber sujar a mão no código mesmo que ele não vá
programar no dia a dia até porque são as suas decisões de arquitetura que influenciam em Como será implementado o código então não existe arquiteto de software que não programa e não é incomum ver arquitetos de software revisando e refatorando códigos É sempre bom frisar que mesmo que você só queira atuar como desenvolvedor a arquitetura de software é essencial eu diria até vital não tem para onde evoluir como deve se você não estudar arquitetura até porque mesmo que você não seja o responsável pela definição de padrões de arquitetura Você vai precisar ter conhecimento suficiente para conseguir
implementar né se você nunca deu atenção a técnicas como Solid dry o i agne e a paradigmas como orientação objetos ou mesmo devops infelizmente você já está atrasado em projetos onde grandes times de desenvolvimento atuam Solid cultura de testes e também o 12 Factor app já ouviu falar disso determinam o nível profissional das pessoas se você nunca ouviu falar desses princípios nós temos vídeos aqui no canal na descrição para você ir se ambientando tem inclusive muito código de exemplo a verdade é que embora devessem nem todos os times T um arquiteto de software esse papel
nesse caso acaba sendo atribuído a um Dev Senior ou a um Tech Lead mas a verdade é que o conhecimento sobre arquitetura precisa ser de todos por isso é importante saber exatamente qual é o papel de um arquiteto de software nos projetos Depois me diga aqui nos comentários se Essas atividades não são realmente vitais nas equipes de desenvolvimento e um dos principais papéis do arquiteto é justamente definir a arquitetura e os padrões de codificação ele define e mantém a arquitetura do sistema assegurando que ela atenda tanto as necessidades atuais quanto as futuros do negócio Além
disso ele estabelece padrões de codificação e práticas de desenvolviment o objetivo é promover a qualidade e a manutenção além da escalabilidade do software falando assim parecem só palavras bonitas mas quando se trata de software de alta qualidade não tem jeito elas são indispensáveis não basta apenas definir o arquiteto tem o papel de liderança e responsabilidade quando o assunto for arquitetura Pois é e um arquiteto também tem o papel de fazer mentoria e orientação técnica especialmente aos desenvolvedores incluindo técnicas avançadas de programação uso de padrões de design padrões de projetos e melhores práticas esse suporte ajuda
a elevar o nível técnico de toda a equipe promovendo um desenvolvimento mais consistente e de alta qualidade esse tipo de orientação é muito importante também para aqueles que estão entrando no projeto agora e precisam conhecer melhor as nuances é o famoso onboarding então toda vez que uma equipe cresce o arquiteto tem o papel de ajudar nesse processo o arquiteto também atua facilitando a colaboração funciona como um ponto de ligação entre diferentes membros da equipe e outros stakeholders como gerente de produtos equipes de kad desenvolvedores Engenheiros devops E por aí vai garantindo que todos estejam alinhados
com o objetivo do projeto e compreendam claramente a arquitetura e o porquê das decisões técnicas que foram tomadas por exemplo por que utilizar o serviço de Storage do azure ao invés de utilizar o S3 da aws ou qual o motivo da criação de uma redundância no modelo do banco de dados e qual será o processo de atualização desses dados ou ainda porque determinado serviço de terceiros está sendo utilizado com uma configuração específica ou seja são decisões atrás de decisões isso acontece para quem programa sabe né isso acontece o tempo inteiro e é preciso ter um
responsável por coordenar isso tudo agora sim uma das atividades mais legais de um arquiteto é o de conduzir revisões de código e padronizar o design de código isso é feito regularmente as revisões de código e design garantem que as implementações estejam conformidade com a arquitetura planejada e que os padrões de qualidade sejam mantidos essas revisões também são oportunidad de aprendizado pra equipe então não pode ficar chateado porque alguém pediu ou mexeu no seu código É nesse tipo de atividade que entram os design pats e princípios como Solid a atividade de criação de novos projetos ainda
mais em arquitetura de microsserviços é constante e determinar as regras e padrões é crucial o papel do arquiteto Nesse contexto é o que determina se um projeto vai pra frente ou não é nessa atividade que o uso de testes ajuda o projeto a evoluir sem gargalos Aliás o arquiteto precisa garantir que durante o desenvolvimento o sistema esteja coberto por testes seja de integração de desempenho end to end e também os de unidade sem isso não dá para garantir a evolução consistente do projeto exatamente imagina cada novo release uma feature descontinuada quebra alguma versão que ainda
tá em uso da aplicação não dá para brincar com esse tipo de coisa né e quando algo dá errado quem é que responde por isso pois é gerenciamento de riscos técnicos também é de responsabilidade do arquiteto que identifica e gerencia esses riscos que podem afetar a qualidade ou a entrega do projeto ele desenvolve estratégias para mitigar esses riscos como a introdução de novas tecnologias ferramentas ou processos que podem ajudar a evitar problemas Aliás o arquiteto também é muitas vezes o responsável por contratar e determinar o uso de bibliotecas e serviços de terceiros incluindo também o
dimensionamento de uso Por isso isso é tão importante o arquiteto tá muito próximo do código que tá sendo gerado Só assim ele vai ser capaz de determinar se uma solução está atendendo as expectativas do projeto e os requisitos de negócio vamos imaginar então que você precise contratar um serviço de CDN ou armazenamento de arquivos para melhorar a performance e o tempo de resposta mas não sabe exatamente qual é o melhor e se vai atender para todos os casos de uso esse tipo de decisão vai acabar passando pelas mãos do arquiteto de software pode ficar calmo
mas ainda tem mais coisa viu o arquiteto de software tem como papel também promover a Inovação dentro dos projetos é ele que encoraja a Inovação explorando novas tecnologias ferramentas e metodologias que podem melhorar a eficiência e a eficácia do processo de desenvolvimento Esse é um trabalho que nunca termina Ainda mais agora que estamos vivendo aí na era da Inteligência Artificial a integração com novos componentes é essencial pro ciclo de vida de longo prazo do projeto então quando malb sofre uma grande alteração e descontinuada ou mesmo muda o tipo de licenciamento como a gente viu recentemente
com o Reds nós precisamos pesquisar novas soluções e como mitigar a migração para novos componentes de forma que fique transparente pros usuários do software esse planejamento e a execução também muitas vezes é feito pelo arquiteto de software que determina não só a tecnologia mas também os prazos e as etapas para que isso aconteça só quem já esteve um grande projeto sabe o quanto acabamos ficando dependentes de algumas dependências externas seja um provedor Cloud ou mesmo uma biblioteca para disparo de meios e ou afins e que quando precisa ser substituída é que vemos o quanto um
bom planejamento e uma arquitetura e design de código acaba economizando tempo e dinheiro agora a resolução de problemas por parte do arquiteto é geralmente outra atividade bem desafiadora ele frequentemente ajuda a resolver os problemas técnicos mais complexos que surgem durante o desenvolvimento então é preciso ter um profundo conhecimento técnico de codificação inclusive para permitir que sejam oferecidas soluções eficazes e pragmáticas então Nesse quesito quem tem visão geral da estrutura do projeto acaba ajudando de forma mais eficiente o arquiteto também ajuda no planejamento e estimativa dos projetos assegurando que os prazos sejam realistas e que os
recursos estejam adequados para as tarefas planejadas ele também pode ajudar a priorizar tarefas com base em sua complexidade técnica e importância estratégica então ele atua junto com o gerente de produtos times de desenvolvimento para que tudo possa fluir da melhor forma seja entregando de forma contínua novas features como resolvendo ílios técnicos e por fim temos a documentação de arquitetura durante todo o ciclo de software é necessário criar e atualizar vários tipos de documentações deixando ela o mais acessível e Clara possível isso é uma referência valiosa pra equipe durante o desenvolvimento e para novos membros que
se integram ao projeto imagina só comigo um projeto que tá aí no ar há uns 5 anos e com diversos times envolvidos não dá para imaginar que um desenvolvedor que entra no time vá simplesmente ficar lendo só código para saber como é que tudo funciona a documentação técnica é essencial para deixar todos ali no mesmo nível de conhecimento e ajuda Inclusive a replicar o sucesso em outros projetos caso seja necessário Viu como o papel do arquiteto de software vai muito além de definir em que pastas vão ficar os arquivos dentro do repositório o arquiteto dentro
do ciclo de vida de software atua ali em todas as etapas até a entrega e é ele quem vai segurar o rojão quando algo precisar de ajustes Por isso mesmo mais responsabilidad gera mais retorno financeiro exatamente o arquiteto nas equipes em em termos de ganhos deve ser um dos mais bem pagos por isso é Ultra raro ver nas equipes arquitetos de software Júnior ou até pleno não é que não exista mas a carga de conhecimento e experiências precisa ser grande nas tomadas de decisões se você atua como arquiteto de software e percebeu que faltou alguma
coisa aqui nesse vídeo sinta-se à vontade para comentar nós vamos aqui destacar o seu comentário para que ele possa ajudar a quem tiver assistindo o vídeo ah e não se esqueça do MBA de arquitetura de software da full pych eu tenho certeza que é um dos melhores caminhos que você pode seguir para se tornar uma referência no mercado O link tá aqui na descrição se você gostou desse conteúdo nós ficaremos extremamente gratos com o seu like um grande beijo no coração e até um próximo vídeo tch C [Música]