Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Apresentação Bichinhos da TI: o que é esse tal ...

Aleatório
February 21, 2024

Apresentação Bichinhos da TI: o que é esse tal arquiteto de software

Aleatório

February 21, 2024
Tweet

Other Decks in Technology

Transcript

  1. Sumário • Apresentação • O que é arquitetura de software?

    • Qual é a função de um arquiteto no time? • Como formar um arquiteto de software? • Qual é a parte feia? • O que é esse tal arquiteto de software? • Perguntas
  2. Apresentação • Aleatório • Arquiteto de Softwares • 17 anos

    desde m̶i̶n̶h̶a̶ p̶r̶i̶m̶e̶i̶r̶a̶ g̶a̶m̶b̶i̶a̶r̶r̶a̶ meu primeiro código • 11 anos repetindo que ganho dinheiro fazendo programa • Tecnólogo, MBA e Mestrando • Blogueiro Amador (aleatorio.dev.br) • @aleatoriodevbr
  3. “Arquiteto de software é um título pomposo que programadores exigem

    que seja colocado nos seus cartões de visita para justificar seus salários exorbitantes” Kent Beck
  4. O que é a arquitetura de software? “Arquitetura é o

    conjunto de decisões que você queria ter tomado logo no início de um projeto, mas, como todo mundo, não teve imaginação necessária para fazê-lo” Ralph Johnson “A arquitetura representa as decisões significativas de design que moldam um sistema, onde a significância é medida pelo custo da mudança” Grady Booch “Quando as pessoas na indústria de software falam sobre ‘arquitetura’, elas se referem a uma noção vagamente definida dos aspectos mais importantes do design interno de um sistema de software.” Martin Fowler
  5. O que é a arquitetura de software? • “Arquitetura é

    sobre o que é importante num software. Seja lá o que isso signifique” Ralph Johnson • Arquitetura é sobre mudança e evolução • Arquitetura é sobre abstração e alto nível • Arquitetura é sobre custo • Arquitetura é sobre complexidade (principalmente a escondida) • Arquitetura é sobre estrutura (módulos, componentes, camadas…) • Arquitetura é sobre interação entre partes do sistema
  6. Qual é a função de um arquiteto no time? •

    Diferentes organizações trazem diferentes funções para o arquiteto de software • Definir a arquitetura do sistema • Manter a integridade arquitetural • Definir os riscos técnicos (e como mitigar) • Participar do planejamento dos projetos • Definir um plano • Documentar • Orientar o time • Interação com as partes envolvidas
  7. Diferentes visões sobre arquitetura • Arquiteto Técnico (Technical Architect) ◦

    Participação direta nas entregas de uma determinada funcionalidade ◦ Focado em tecnologias ◦ Arquiteto Cloud, Arquiteto Linux, Arquiteto Web, Arquiteto Java… • Arquiteto de Soluções (Solution Architect) ◦ Focado na entrega de uma determinada solução ◦ Generalista • Arquiteto Empresarial (Enterprise Architect) ◦ Nível estratégico ◦ Soluções para toda a empresas
  8. Como formar um arquiteto de software? • Engenheiro(a) sênior (no

    mínimo de 7 a 9 anos de desenvolvimento) • Passar por vários projetos • Conhecimento sobre os fundamentos de software e computação • Participar de vários projetos • Estudar os clássicos da literatura • Conduzir vários projetos • Visão de negócio (saber como a empresa lucra dinheiro) • Aprender a se comunicar • Auxiliar vários projetos • Carreira em Psi (Ψ) • Eu já comentei a importância de ter experiência com projetos?
  9. Qual é a parte feia? • Reuniões. MUITAS REUNIÕES •

    Conflitos de forças opostas • Quanto mais você sobe, mais você é cobrado • Mais reuniões • Falta de reconhecimento • Ajustar expectativas • Menor contato com o código • Reuniões • Dizer não • Pensar no que vai dar errado
  10. O que é esse tal arquiteto de software? • Pessoa

    sênior • Responsável por cuidar do que é importante num software. Seja lá o que isso signifique • Orienta os padrões e desenvolvimento • Alinha as necessidades de negócio com as técnicas • Comunica com as partes interessadas
  11. Clássicos da literatura • Patterns of Enterprise Application Architecture, Martin

    Fowler • Design Patterns, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides • The Mythical Man Month, Fred Brooks • The Pragmatic Programmer, Andy Hunt e Dave Thomas • Software Architecture: The Hard Parts, Neial Ford • Introduction to Algorithms,Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein • Modern Operating Systems, Andrew S. Tanenbaum • The Art of Computer Programming, Donald Knuth • The Art of Unix Programming, Eric S. Raymond • Test-Driven Development, Kent Beck • Compilers: Principles, Techniques, and Tools, Ravi Sethi, Alfred Aho, Jeffrey Ullman, Monica S. Lam