Empresa: FCamara
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 Requisitos: 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.