Descrição de Vaga
| Código: | 16516 |
| Título da vaga: | Desenvolvedor de Software C# |
| Local: | Santos, SP |
| Nível Profissional: | Sênior |
| Nível Acadêmico: | Ensino Superior Completo |
| Áreas de Atuação Profissional: | TI - Projetos |
| Descrição: | Desenvolvedor de Software C# Nível: Pleno / Sênior Modelo: Presencial Área: Tecnologia da Informação |
| Habilidades: | Objetivo do Cargo Atuar no desenvolvimento, evolução e sustentação de soluções de software utilizando C#/.NET, aplicando princípios, práticas e padrões de engenharia de software para construir sistemas confiáveis, seguros, escaláveis, sustentáveis e de fácil manutenção. O profissional deve atuar além da implementação de código, participando da análise técnica, definição de soluções, arquitetura, integração entre sistemas, qualidade do código, testes, diagnóstico de problemas e evolução tecnológica das aplicações. O foco é transformar requisitos de negócio e necessidades técnicas em soluções de software estruturadas, sustentáveis e alinhadas à arquitetura tecnológica da organização. Principais Responsabilidades Desenvolver e evoluir aplicações, serviços e componentes de software utilizando C# e .NET, aplicando boas práticas de engenharia e padrões de desenvolvimento. Participar de todo o ciclo de vida do software, desde a análise técnica e definição da solução até desenvolvimento, testes, implantação, sustentação e evolução. Analisar requisitos funcionais e não funcionais, identificando impactos técnicos, dependências, riscos e alternativas de implementação. Avaliar a melhor abordagem técnica para cada necessidade, considerando arquitetura, desempenho, segurança, escalabilidade, integração, manutenção e custo de evolução. Desenvolver soluções com foco em baixo acoplamento, alta coesão, reutilização, legibilidade, testabilidade e facilidade de manutenção. Participar da definição e evolução da arquitetura das aplicações, contribuindo para decisões técnicas relacionadas à estrutura dos sistemas e seus componentes. Aplicar princípios de SOLID, Clean Code, Separation of Concerns, Design Patterns e boas práticas de arquitetura de software. Avaliar impactos e dependências antes de alterações estruturais em sistemas existentes. Contribuir para a modernização de aplicações legadas, reduzindo dívida técnica e dependências tecnológicas que possam comprometer a evolução dos sistemas. Identificar oportunidades de refatoração e melhoria arquitetural, evitando soluções pontuais que aumentem a complexidade ou a dívida técnica. Desenvolver e manter APIs, serviços e integrações entre sistemas internos e externos. Trabalhar com arquiteturas de integração baseadas em APIs REST, serviços, mensageria e outros mecanismos adequados à necessidade da solução. Garantir consistência, segurança, rastreabilidade e tratamento adequado de erros nas integrações. Avaliar impactos de alterações em interfaces e contratos entre sistemas. Desenvolver consultas e operações utilizando SQL e bancos de dados relacionais. Avaliar a forma como os dados são armazenados, relacionados e manipulados pelas aplicações. Garantir consistência e integridade dos dados durante o desenvolvimento e evolução das soluções. Analisar problemas relacionados a dados, identificando possíveis causas em código, consultas, integrações ou regras de negócio. O conhecimento de banco de dados deve ser utilizado como parte da engenharia da solução, não apenas como recurso para desenvolvimento de consultas. Desenvolver software considerando qualidade, confiabilidade, segurança e testabilidade desde sua concepção. Criar e manter testes automatizados sempre que aplicável, especialmente testes unitários e de componentes. Realizar validações técnicas antes da disponibilização da solução para o processo formal de QA. Trabalhar em conjunto com o Analista de Qualidade e Testes de Software, tratando defeitos identificados, analisando suas causas e realizando os respectivos ajustes e retestes. Contribuir para a redução de defeitos em produção e de reincidência de problemas. Investigar problemas técnicos em aplicações, integrações e serviços, utilizando análise de logs, rastreamento de execução, dados e demais mecanismos de diagnóstico. Identificar a causa raiz dos problemas, evitando correções exclusivamente paliativas. Atuar na correção de falhas considerando não apenas o problema imediato, mas também seus impactos e possibilidades de recorrência. Contribuir para melhoria da observabilidade das aplicações, incluindo logs, métricas, monitoramento e rastreabilidade. Desenvolver soluções considerando princípios de Secure Software Development. Aplicar controles adequados de autenticação, autorização, tratamento de dados, validação de entradas e proteção contra vulnerabilidades conhecidas. Considerar segurança desde a concepção da solução, evitando que requisitos de segurança sejam tratados somente após o desenvolvimento. Utilizar adequadamente sistemas de controle de versão, especialmente Git. Trabalhar com branches, pull requests, code review e estratégias adequadas de versionamento. Participar da evolução de processos de CI/CD, quando aplicável. Contribuir para a automatização de build, testes e implantação das aplicações. Documentar decisões técnicas relevantes, componentes, integrações e particularidades necessárias à manutenção das soluções. Realizar e participar de revisões de código, buscando identificar problemas de qualidade, segurança, desempenho, arquitetura e manutenção. Compartilhar conhecimento técnico com os demais integrantes da equipe. Propor melhorias de padrões, ferramentas, bibliotecas, frameworks e práticas de desenvolvimento. Contribuir para a criação e evolução dos padrões técnicos de desenvolvimento da área de TI. Conhecimentos e Competências Obrigatórios • C# e plataforma .NET; • Programação orientada a objetos; • Princípios de Engenharia de Software; • SOLID e Clean Code; • Design Patterns; • Desenvolvimento de aplicações e serviços; • Desenvolvimento de APIs REST; • SQL e bancos de dados relacionais; • Git e controle de versão; • Tratamento de exceções e erros; • Logging e diagnóstico de aplicações; • Análise e resolução de problemas; • Testes de software, especialmente testes unitários; • Conhecimento de arquitetura e design de aplicações; • Capacidade de interpretar requisitos funcionais e não funcionais; • Capacidade de análise de impacto técnico. Conhecimentos Desejáveis • ASP.NET Core; • Entity Framework / Entity Framework Core; • Arquitetura em camadas; • Clean Architecture; • DDD; • Microsserviços; • Mensageria e processamento assíncrono; • Docker e containers; • CI/CD; • Azure DevOps ou GitHub; • Cloud Computing, especialmente Azure; • Observabilidade, métricas, logs e tracing; • Testes automatizados; • Testes de APIs; • Práticas de DevSecOps; • Event-driven architecture; • Performance e escalabilidade; • Ferramentas de análise estática de código; • Ferramentas de IA aplicadas à Engenharia de Software. Diferenciais Será considerado diferencial possuir experiência com: • sistemas corporativos de alta criticidade; • integração entre múltiplos sistemas; • ERP, TMS, WMS ou sistemas operacionais; • sistemas com grande volume de dados e transações; • modernização de sistemas legados; • definição e evolução de arquitetura de software; • automação de testes e pipelines; • práticas de DevOps/DevSecOps; • desenvolvimento orientado a APIs; • aplicação de IA no ciclo de desenvolvimento de software; • ambientes com forte necessidade de rastreabilidade, disponibilidade e continuidade operacional. Conhecimento prévio do segmento de logística, transporte, comércio exterior, recintos alfandegados, terminais ou armazenagem será considerado um diferencial, mas não constitui requisito obrigatório. ______________________________________________________________________________________________________________________________________________ Engenharia de Software como Princípio O profissional deve demonstrar maturidade para compreender que desenvolver software não significa apenas escrever código. A atuação esperada envolve: Entender → Analisar → Projetar → Desenvolver → Testar → Revisar → Entregar → Monitorar → Evoluir Cada solução deve considerar, conforme sua criticidade: Funcionalidade + Arquitetura + Qualidade + Segurança + Dados + Performance + Testabilidade + Manutenibilidade + Evolução O profissional deve buscar soluções que resolvam a necessidade atual sem criar, desnecessariamente, novos problemas técnicos para o futuro. Integração com os Demais Perfis de TI O Desenvolvedor de Software C# / .NET atuará de forma integrada aos demais papéis da equipe: Analista de Negócios, Processos e Projetos → estrutura o problema, processo, necessidade e requisitos. Desenvolvedor de Software C# / .NET → analisa tecnicamente, projeta e constrói a solução de software. Analista de Qualidade e Testes de Software→ valida funcionalmente e tecnicamente a solução, incluindo os resultados produzidos no banco de dados. Infraestrutura / Segurança / Tecnologia → garante os recursos, ambientes, segurança e condições necessárias para operação da solução. Dessa forma, o desenvolvimento deixa de ser uma atividade isolada e passa a fazer parte de um processo estruturado de engenharia de software. Perfil Comportamental Espera-se um profissional: • com forte raciocínio lógico e capacidade analítica; • orientado à solução de problemas; • preocupado com qualidade e sustentabilidade técnica; • capaz de questionar requisitos e decisões técnicas quando identificar riscos ou inconsistências; • organizado e comprometido com entregas; • colaborativo e disposto a compartilhar conhecimento; • interessado em evolução tecnológica; • capaz de compreender o contexto funcional da solução; • responsável pelo resultado técnico daquilo que desenvolve; • com visão de longo prazo sobre manutenção e evolução do software. Indicadores de Sucesso A atuação poderá ser avaliada, entre outros aspectos, por: • qualidade das soluções desenvolvidas; • redução de defeitos em produção; • redução de reincidência de problemas; • redução de retrabalho; • qualidade e manutenibilidade do código; • cumprimento de prazos e compromissos técnicos; • evolução da cobertura de testes automatizados; • redução de dívida técnica; • melhoria de desempenho e estabilidade das aplicações; • qualidade das integrações; • evolução da arquitetura; • redução da dependência de soluções legadas; • adoção de boas práticas de Engenharia de Software. Conceito do Perfil O profissional ideal é um Desenvolvedor de Software C# / .NET com mentalidade de engenharia de software. Não se espera apenas a capacidade de transformar uma especificação em código, mas a capacidade de entender o problema, avaliar alternativas, projetar uma solução adequada, desenvolver com qualidade, testar, diagnosticar, evoluir e sustentar o software ao longo de seu ciclo de vida. |