O documento discute a carreira e o papel de um arquiteto de software. Ele define arquitetura de software e discute os padrões de projeto. Também descreve as responsabilidades de um arquiteto de software, incluindo tomar decisões importantes, definir a arquitetura, avaliar tecnologias e garantir a qualidade. Além disso, fornece conselhos sobre como se tornar um bom arquiteto de software, como dominar inglês e sempre se manter atualizado com novas tecnologias.
1. O papel e a carreira do arquiteto de software
Leonardo Loch Zanivan
2. Apresentação
▪Arquiteto de Software na Trier Sistemas (Tubarão)
▪Trabalho com desenvolvimento há mais de 7 anos
▪Especialista em Arquitetura de Software
▪Palestrante voluntário
▪Natural de Criciúma
3. O que é arquitetura de software?
A arquitetura de software de um programa ou sistema computacional são as estruturas do sistema, compostas por elementos de software, suas propriedades visíveis externamente e as relações entre elas. (Clements et al, 2010)
4. Padrões de projeto
Os padrões de projeto, também conhecidos como design patterns, surgem para descrever, capturar e nomear técnicas para solução de problemas de software. (Buschmann et al, 2007)
Big Ball of Mud, conhecem algum software assim?
5. Papel do arquiteto de software
▪Titulação “Arquiteto de Software”
▪Software Craftsmanship Manifesto
▪Toma as decisões importantes
▪Não é um superhero
7. Atribuições do arquiteto
▪Define e desenha a arquitetura
▪Avalia e seleciona as tecnologias*
▪Possui a visão do todo
▪Liderança e comunicação
▪Treina as pessoas
▪Garante a qualidade
▪Participa do projeto
8. Experiência profissional
▪Sucesso em projetos desafiadores com as linguagens C++, PowerBuilder, JavaScript e Java
▪Desenvolvimento desktop, web, mobile e cloud
▪Na área de P&D e arquitetura há mais de 7 anos
▪Realização de treinamentos na área de segurança da informação e desenvolvimento mobile Android
▪Participação de conferências como palestrante, como o TDC 2012, 2014 e JavaOne 2014*
9. Formação acadêmica
▪Técnico em Informática Industrial, Bacharel em SI, MBA em Arquitetura de Software
▪Certificação Oracle Java SE 7
▪Cursos OWASP Top 10, Web Application Security, Startup Engineering, Functional Programming, etc
▪Proficiência em Língua Inglesa
10. Carreira do arquiteto
▪Como se tornar um bom arquiteto de software?
▪Onde posso trabalhar como arquiteto?
▪Como lidar com novas tecnologias?
▪O que devo estudar hoje?
11. Como se tornar um bom arquiteto de software?
▪Traçar objetivos e metas atingíveis
–Aprender novas tecnologias
–Fazer certificações e cursos
–Participar de eventos
–Publicar artigos
12. Como se tornar um bom arquiteto de software?
▪Dominar o inglês
–É a língua de facto na área de tecnologia
–Deve se ter uma ótima compreensão
–Todos os bons materiais são em língua inglesa
–Para se atualizar tem que conviver com inglês
–É mais fácil que Português
13. Como se tornar um bom arquiteto de software?
▪Não ficar estagnado
–Hackear (no bom sentido)
–Participar de eventos e cursos
–Estudar outras disciplinas além do que você conhece
14. Como se tornar um bom arquiteto de software?
▪Ler bastante
–Livros de programação, padrões, arquitetura, gerenciamento de projetos
–Artigos, Blogs, Twitter (apenas conteúdo relevante)
–Autores: Martin Fowler, Uncle Bob, Kent Back, GoF
“In theory, theory and practice are the same. In practice, they are not.” ― Albert Einstein
15. Onde posso trabalhar como arquiteto de software?
▪Empresas locais e regionais
–Polos tecnológicos em Florianópolis e Tubarão
–Grandes empresas em Criciúma
▪Empresas de grandes centros ou exterior
–Trabalho remoto (home office)
–Mudar-se para grandes centros ou exterior
▪Sempre haverá lugar para um bom arquiteto dentro de um time, é só questão de amadurecimento
16. Como lidar com novas tecnologias?
▪Avaliar os requisitos, a equipe, o negócio e o RoI
▪Ficar atento a movimentação do mercado
▪Participar e contribuir com comunidades Open Source (devlists, GitHub)
▪Selecionar a tecnologia de forma responsável
17. O que devo estudar hoje?
▪Arquitetura REST
▪Plataforma JavaEE e NodeJS
▪Frameworks Client-Side (AngularJS)
▪Banco de Dados NoSQL
▪Desenvolvimento Mobile
▪Cloud Computing