Arquiteto de Software - Sênior
FCamara
- Ort
- Distans (BR)
- Arbetsplats
- Distans
- Anställningsform
- Heltid
- Publicerat
- I dag
- Källa
- Himalayas
A FCamara está em busca de um(a) profissional que possua um forte conhecimento técnico em desenvolvimento de software, especialmente em C#, e que seja capaz de aplicar esse conhecimento para projetar e implementar soluções de alta qualidade, escaláveis e seguras. A capacidade de comunicação, colaboração e resolução de problemas também são essenciais para o sucesso nesta função.
Arquitetura e Design da Solução:
- ➢ Escolher padrões arquiteturais adequados (micros serviços, filas de mensagens, etc.).
- ➢ Justificar a escolha dos padrões em relação aos requisitos.
- ➢ Considerar os trade-offs entre simplicidade e flexibilidade.
- ➢ Definir estratégias claras para lidar com o aumento da carga (escalabilidade).
- ➢ Implementar mecanismos de recuperação de falhas (resiliência).
- ➢ Atender ao requisito de não indisponibilidade do serviço de controle de lançamentos em caso de falha do consolidado diário.
- ➢ Definir como os componentes se comunicam (protocolos, formatos de mensagem, etc).
- ➢ Escolher ferramentas de integração adequadas e suas responsabilidades.
- ➢ Implementar autenticação, autorização e criptografia (segurança).
- ➢ Implementar mecanismos de proteção contra ataques (WAF, etc).
- ➢ Analisar a qualidade da divisão do sistema em partes menores e gerenciáveis.
- ➢ Abstrair e segregar responsabilidades entre as camadas.
Implementação:
- ➢ Garantir a aderência às boas práticas de desenvolvimento (Solid, Clean Code, etc).
- ➢ Escrever código legível, organizado e de fácil manutenção.
- ➢ Utilizar a linguagem C# de forma eficiente.
- ➢ Implementar testes com boa cobertura, qualidade e relevância.
- ➢ Cumprir os requisitos técnicos obrigatórios.
- ➢ Atender aos requisitos de negócio.
Documentação e Apresentação:
- ➢ Documentar a arquitetura de forma clara e concisa.
- ➢ Criar diagramas que representam a arquitetura.
- ➢ Justificar as decisões arquiteturais.
- ➢ Definir os fluxos de dados.
- ➢ Escrever instruções claras e detalhadas de como a aplicação funciona e como rodar localmente (Readme).
- ➢ Centralizar documentações.
- ➢ Descrever possíveis melhorias ou expansões do sistema.
- ➢ Demonstrar capacidade de visão e planejamento a longo prazo.
- ➢ Discutir trade-offs e desafios enfrentados durante o desenvolvimento.
Diferenciais e Boas Práticas:
- ➢ Garantir que o código seja executado de forma local e sem erros.
- ➢ Utilizar estratégias de Docker e Docker Compose.
- ➢ Implementar pipeline automatizada (CI/CD).
- ➢ Utilizar estratégias de IaC (Infraestrutura como Código).
- ➢ Realizar estimativas de custos.
Habilidades Comportamentais Desejáveis:
- ➢ Proatividade ➢ Pensamento analítico
- ➢ Orientação a resultados
- ➢ Colaboração
- ➢ Adaptabilidade
- ➢ Aprendizado contínuo
Experiência:
- ➢ Experiência comprovada em design e implementação de arquiteturas de software escaláveis, resilientes e seguras.
- ➢ Experiência prática em desenvolvimento de software utilizando a linguagem C#.
- ➢ Experiência com a aplicação de princípios de design de software (SOLID, Clean Code, etc.).
- ➢ Experiência com a implementação de testes automatizados (unitários, integração, etc.).
- ➢ Experiência com padrões de arquitetura (microsserviços, filas de mensagens, etc.).
Conhecimentos Técnicos:
- ➢ Profundo conhecimento da linguagem C# e do ecossistema .NET.
- ➢ Sólido conhecimento de padrões de design de software (Design Patterns).
- ➢ Conhecimento de princípios de arquitetura de software (microsserviços, filas de mensagens, etc.).
- ➢ Conhecimento de práticas de desenvolvimento ágil (Scrum, Kanban).
- ➢ Conhecimento de segurança da informação (autenticação, autorização, criptografia).
- ➢ Conhecimento de ferramentas de versionamento de código (Git).
- ➢ Familiaridade com metodologias de testes (TDD, BDD).
- ➢ Familiaridade com Docker e Docker Compose.
- ➢ Conhecimento de CI/CD (Integração Contínua / Entrega Contínua).
- ➢ Conhecimento de IaC (Infraestrutura como Código).
Habilidades:
- ➢ Excelente capacidade de comunicação e colaboração para trabalhar em equipe.
- ➢ Habilidade de análise crítica e resolução de problemas complexos.
- ➢ Capacidade de traduzir requisitos de negócios em especificações técnicas claras e concisas.
- ➢ Habilidade de tomar decisões técnicas embasadas em dados e em um profundo entendimento dos trade-offs envolvidos.
- ➢ Habilidade de documentar soluções de forma clara e organizada.
- ➢ Capacidade de aprender e se adaptar a novas tecnologias e ferramentas.
- Originally posted on Himalayas