Apresentação bichinhos da TI: o que é esse arquiteto de software
1. O que é esse tal de arquiteto de
software?
Aleatório
2. 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
3. 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
4. “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
5. 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
6. 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
8. 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
9. 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
10. 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?
11. 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
13. 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
16. 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