Vaga Full Stack

Desenvolvedor(a) C# .NET 9 Sênior

C# desktop Entity framework MVVM WPF .NET

SIP Soluções

SIP Soluções

Pequena/média empresa

Salário: Não especificado

Aceito candidatos de outras cidades/estados dispostos a se mudar para o local de trabalho

Descrição da empresa

Somos uma empresa especializada em sistemas de votação, online, presencial e hibridas.

Ao todo são mais de 30 anos de experiência.

Possuímos algumas soluções de prateleira, soluções customizadas e aplicativos personalizados.

Atividades e Responsabilidades

INFORMAÇÃO IMPORTANTE: A vaga não contará com valores, pois não colocamos preço no trabalho alheio, analisaremos sua proposta e se for adequado ao nosso projeto, aceita. Não fazemos leilão ou nada parecido, no máximo alguma negociação dentro do aceitável; Se um negócio for bom, que seja para todos.

===
+ Descrição
Estamos em busca de um(a) Engenheiro(a) de Software Sênior altamente qualificado(a) para assumir um papel de fullstack no desenvolvimento do projeto AVS. Trata-se de uma aplicação desktop sofisticada para o gerenciamento de sessões de votação eletrônica, construída sobre uma moderna stack .NET 9 com uma interface WPF.

O projeto já possui uma base arquitetural sólida e bem definida, utilizando padrões como DDD e CQRS. Agora, buscamos um(a) especialista para liderar a fase mais crítica e desafiadora: a integração completa com hardware externo, de votação física.

Esta é uma oportunidade para trabalhar em um projeto complexo que combina arquitetura de software de alto nível com comunicação de hardware de baixo nível, entregando um sistema de alta performance e confiabilidade para ser utilizado em ambientes de votação críticos.

Suas Responsabilidades
Realizar a Integração de Hardware: Assumir a responsabilidade pela camada de Infrastructure e implementar a integração completa com o SDK do hardware de votação, traduzindo a documentação do protocolo em código C# funcional e robusto.

• Desenvolvimento Full-Stack (.NET): Desenvolver, completar e testar funcionalidades em toda a stack da aplicação, incluindo o Domínio, a camada de Aplicação (handlers CQRS) e a interface do usuário (WPF/MVVM).

• Garantir Performance e Confiabilidade: Assegurar que o sistema atenda aos requisitos de performance e confiabilidade, especialmente sob alta carga (suportando até 4.000 aparelhos de votação simultâneos).

• Qualidade e Testes: Criar e manter uma suíte de testes automatizados (unitários e de integração) para garantir a qualidade do código e a estabilidade do sistema, sanando o débito técnico existente nesta área.

• Colaboração e Arquitetura: Colaborar diretamente com o Product Owner para refinar requisitos e garantir que a arquitetura do software permaneça limpa, escalável e alinhada aos objetivos do projeto.

=====
+ Nossa Stack Tecnológica
• Linguagem e Framework: C# 12, .NET 9
• Interface: WPF, MVVM (CommunityToolkit.Mvvm), MahApps.Metro
• Banco de Dados: Entity Framework Core 9, SQLite
• Arquitetura e Padrões: Domain-Driven Design (DDD), CQRS com MediatR, Injeção de Dependência
• Ferramentas: Serilog

Requisitos

====
+ Proficiência em .NET e C#
Nível avançado/especialista no ecossistema .NET (incluindo .NET 5+), com domínio de recursos avançados da linguagem C#.
===
+ Arquitetura de Software (DDD & CQRS)
Sólido entendimento e aplicação prática dos princípios do Domain-Driven Design (DDD) e do padrão Command Query Responsibility Segregation (CQRS), preferencialmente com a biblioteca MediatR.
===
+ Desenvolvimento Desktop com WPF
Forte experiência no desenvolvimento de aplicações desktop com WPF, utilizando o padrão MVVM de forma estrita.
===
+ Programação Assíncrona
Domínio de programação assíncrona (async/await) e multithreading para garantir uma UI responsiva e operações de I/O eficientes.
===
+ Testes Automatizados
Mentalidade proativa em relação à qualidade de código, com experiência na criação de testes unitários e de integração (utilizando frameworks como xUnit, NUnit ou MSTest).
===
+ Autonomia e Resolução de Problemas
Capacidade de trabalhar de forma autônoma, investigar problemas complexos e tomar decisões técnicas bem fundamentadas.
===
É desejável ter experiência comprovada na integração de software com dispositivos físicos via SDKs, portas seriais (RS-232), USB ou outros protocolos de comunicação de baixo nível.