C++ developer in Lisbon

C++ developer in Lisbon

Lisbon Tempo inteiro 56700 - 69300 € / ano (est.) Presencial
A

Num relance

  • Tarefas: Desenvolver software desktop com C++ moderno e contribuir para a evolução de um produto crítico.
  • Empresa: Empresa de tecnologia inovadora com foco em colaboração e crescimento.
  • Benefícios: Salário competitivo, benefícios de saúde e oportunidades de desenvolvimento profissional.
  • Outras informações: Ambiente dinâmico com oportunidades de crescimento na carreira.
  • Porquê este emprego: Trabalhe em desafios técnicos complexos e faça a diferença em um produto maduro.
  • Qualificações: Experiência em C++ moderno e habilidades de resolução de problemas.

O salário previsto situa-se entre 56700 - 69300 € por ano.

Estamos à procura de engenheiros de software C++ experientes para contribuir para a evolução de uma aplicação desktop grande e crítica para os negócios, construída com C++20 e Qt. O produto tem mais de 15 anos de história de desenvolvimento e é suportado por uma base de código substancial e duradoura. Você será responsável por entender os componentes existentes, desenvolver novas capacidades, resolver problemas técnicos complexos e modernizar progressivamente a plataforma, enquanto protege a estabilidade e confiabilidade esperadas pelos seus usuários.

Esta oportunidade é ideal para um engenheiro que gosta de explorar sistemas complexos, tomar decisões técnicas pragmáticas e melhorar software maduro através de refatoração cuidadosa, cobertura de testes mais forte e práticas modernas de engenharia C++. Como engenheiro de software C++, você irá:

  • Desenvolver e evoluir software desktop usando C++ moderno.
  • Projetar componentes de software, APIs e capacidades de sistema que sejam manuteníveis.
  • Compreender e melhorar uma base de código grande e estabelecida.
  • Modernizar componentes legados sem introduzir riscos desnecessários.
  • Construir testes automatizados confiáveis e melhorar a cobertura de testes.
  • Resolver problemas complexos de software em ambientes Linux.
  • Participar ativamente de revisões de código e discussões arquitetônicas.
  • Melhorar a qualidade do software, manutenibilidade, desempenho e sustentabilidade a longo prazo.

Desenvolvimento de Software C++

  • Projetar, desenvolver, testar e manter software usando C++ moderno.
  • Construir componentes de software confiáveis e reutilizáveis.
  • Aplicar fortes princípios de design C++, incluindo: propriedade de recursos, RAII, correção de const, ponteiros inteligentes e uso da biblioteca padrão.
  • Escrever código limpo, manutenível e testável.
  • Equilibrar entrega funcional com qualidade de código a longo prazo.
  • Contribuir para a evolução da aplicação sem comprometer o comportamento existente.

Desenvolvimento de Aplicações Desktop

  • Manter e melhorar componentes existentes voltados para o usuário e de nível de sistema.
  • Trabalhar com Qt 5.15 ou posterior, quando aplicável.
  • Contribuir para uma comunicação confiável entre a interface, lógica de negócios e componentes do sistema.
  • Investigar comportamentos específicos da plataforma e problemas de desempenho da aplicação.
  • Suportar a evolução a longo prazo da arquitetura desktop.

Design e Arquitetura de Software

  • Projetar APIs, módulos e componentes de aplicação que sejam manuteníveis.
  • Contribuir para discussões de design de sistema e arquitetura técnica.
  • Avaliar trade-offs técnicos relacionados a: desempenho, manutenibilidade, confiabilidade, complexidade e compatibilidade retroativa.
  • Propor melhorias pragmáticas em vez de reescritas desnecessárias.
  • Documentar decisões técnicas e arquitetônicas relevantes.

Modernização de Código Legado

  • Compreender e modificar com segurança uma base de código com mais de 15 anos de história de desenvolvimento.
  • Identificar dívidas técnicas e áreas adequadas para modernização incremental.
  • Refatorar componentes legados enquanto preserva a estabilidade do produto.
  • Melhorar modularidade, legibilidade e manutenibilidade.
  • Aumentar a cobertura de testes automatizados em torno de funcionalidades críticas.
  • Reduzir riscos validando comportamentos antes e depois das mudanças.

Testes Automatizados

  • Desenvolver e manter testes unitários usando frameworks como: Catch2, Google Test e Boost.Test.
  • Usar frameworks de simulação onde apropriado, incluindo: Google Mock.
  • Criar testes para novas funcionalidades e comportamentos existentes.
  • Suportar a prevenção de regressões através de suítes de testes automatizados confiáveis.
  • Melhorar a testabilidade ao refatorar componentes existentes.
  • Contribuir para estratégias de teste práticas e sustentáveis.

Multithreading e Concorrência

  • Desenvolver e manter componentes de aplicação concorrentes ou multi-threaded.
  • Diagnosticar condições de corrida, deadlocks e problemas de sincronização.
  • Projetar modelos seguros de compartilhamento de recursos e execução.
  • Aplicar princípios modernos de concorrência em C++.
  • Considerar segurança de thread ao projetar APIs e componentes compartilhados.
  • Otimizar desempenho sem comprometer correção ou manutenibilidade.

Engenharia de Construção

  • Usar CMake para configurar, construir e manter projetos de software.
  • Melhorar scripts de construção e configurações de dependência.
  • Resolver problemas de compilação, vinculação e dependência.
  • Garantir que as construções permaneçam reproduzíveis e manuteníveis.
  • Contribuir para fluxos de trabalho de desenvolvimento e construção consistentes.

Qualidade de Código e Revisões

  • Participar ativamente de revisões de código entre pares.
  • Fornecer feedback claro, construtivo e tecnicamente fundamentado.
  • Revisar soluções quanto à correção, manutenibilidade, desempenho e cobertura de testes.
  • Usar análise estática, sanitizadores e ferramentas de qualidade onde disponíveis.
  • Ajudar a criar um ambiente de engenharia colaborativo focado na melhoria contínua.

Colaboração Baseada em Git

  • Trabalhar com fluxos de trabalho de desenvolvimento baseados em Git.
  • Criar e revisar solicitações de mesclagem ou pull requests.
  • Manter commits claros e gerenciáveis.
  • Colaborar com outros engenheiros em componentes e branches compartilhados.
  • Resolver conflitos de mesclagem e apoiar a integração controlada de código.
  • Garantir que as mudanças técnicas permaneçam rastreáveis e devidamente revisadas.

Depuração e Resolução de Problemas

  • Investigar defeitos complexos da aplicação e comportamentos inesperados.
  • Reproduzir problemas e realizar análise estruturada da causa raiz.
  • Usar ferramentas de diagnóstico e depuração adequadas.
  • Desenvolver correções sustentáveis em vez de soluções temporárias.
  • Assumir a responsabilidade pelos problemas até a resolução.
  • Comunicar riscos, descobertas e soluções propostas de forma clara.

O que estamos procurando:

  • Forte compreensão dos princípios de design de C++ moderno.
  • Experiência com: propriedade de recursos, correção de const, biblioteca padrão, código manutenível e testável.
  • Experiência em projetar componentes de software, APIs ou arquitetura de sistema.
  • Fortes capacidades de depuração e resolução de problemas.
  • Experiência em desenvolver testes automatizados usando: Catch2, Google Test e Boost.Test ou frameworks equivalentes.
  • Experiência participando de revisões de código.
  • Familiaridade com fluxos de trabalho baseados em Git.
  • Experiência em desenvolver e depurar aplicações em Linux.
  • Confiança ao usar a linha de comando do Linux.
  • Experiência prática com CMake.
  • Experiência trabalhando com bases de código grandes, duradouras ou legadas.
  • Bons conhecimentos de comunicação escrita e verbal em inglês.

Desenvolvimento Central

  • C++ Moderno, C++17, C++20, Biblioteca Padrão, Programação Orientada a Objetos, Gestão de Recursos, Desenvolvimento Desktop, Qt 5.15+, Aplicações Desktop, Interfaces Baseadas em Eventos, Desenvolvimento Multiplataforma.

Ambiente de Construção e Desenvolvimento

  • CMake, Linha de Comando do Linux, Git, Solicitações de Mesclagem, Pull Requests.

Testes

  • Catch2, Google Test, Boost.Test, Google Mock, Testes Unitários, Testes de Regressão, Automação de Testes.

Qualidade e Desempenho

  • Análise Estática, Análise de Desempenho, Refatoração, Design de API, Multithreading, Concorrência, Modernização Legada.

Nice to Have

  • Forte experiência profissional com C++17 e C++20.
  • Envolvimento anterior na modernização de bases de código C++ estabelecidas.
  • Experiência em introduzir testes automatizados em componentes legados.
  • Conhecimento de desenvolvimento de aplicações multi-threaded e concorrentes.
  • Experiência com Trompeloeil, Google Mock ou frameworks de simulação equivalentes.
  • Familiaridade com: análise estática, experiência em melhorar o desempenho da aplicação e uso de recursos.
  • Conhecimento de desenvolvimento de software multiplataforma.

Engenharia Pragmática

  • Capacidade de compreender decisões de design existentes antes de propor mudanças.
  • Foco em melhorias incrementais com valor mensurável.
  • Confortável em equilibrar modernização com estabilidade do produto.
  • Evita reescritas desnecessárias quando a refatoração segura é mais apropriada.

Propriedade Técnica

  • Capacidade de assumir responsabilidade por problemas técnicos desde a investigação até a resolução.
  • Abordagem proativa para identificar riscos e oportunidades de melhoria.
  • Forte responsabilidade pela qualidade do código e confiabilidade da aplicação.
  • Capacidade de explicar conceitos técnicos claramente em inglês.
  • Confortável em discutir abordagens técnicas alternativas.
  • Fornece feedback construtivo e respeitoso através de revisões de código.
  • Aberto a receber feedback e adaptar soluções quando necessário.

Pensamento Analítico

  • Fortes capacidades de depuração e análise de causa raiz.
  • Capacidade de compreender interações complexas dentro de um sistema maduro.
  • Abordagem estruturada para problemas ambíguos ou tecnicamente desafiadores.

Mentalidade de Qualidade

  • Forte compromisso com testes automatizados e código manutenível.
  • Alta atenção aos detalhes.
  • Foco em confiabilidade, estabilidade e melhoria contínua.
  • Apreciação pela sustentabilidade do produto a longo prazo.

Trabalhe em uma aplicação desktop tecnicamente desafiadora construída com C++20 e Qt. Ganhe uma profunda exposição a uma base de código substancial com mais de 15 anos de evolução. Resolva desafios complexos de engenharia e depuração. Aplique práticas modernas de C++ a um produto maduro e crítico para os negócios. Melhore a arquitetura, testes, processos de construção e qualidade do código de forma incremental. Colabore em um ambiente que valoriza revisões de código cuidadosas e decisões pragmáticas. Contribua para a evolução a longo prazo de uma plataforma de software estável.

Empregador para C++ developer in Lisbon: Act Digital

A Act Digital é um excelente empregador, oferecendo um ambiente de trabalho dinâmico e colaborativo em Lisboa, onde a inovação e a tecnologia estão no centro das operações. Os colaboradores têm acesso a oportunidades de crescimento profissional, formação contínua e um forte foco na automação e melhoria de processos, o que torna cada dia uma nova oportunidade para aprender e contribuir. Além disso, a cultura de apoio e a ênfase na segurança e fiabilidade dos sistemas bancários garantem que cada membro da equipa se sinta valorizado e parte integrante do sucesso da empresa.

A

Dados de contacto:

Equipa de recrutamento de Act Digital

Achamos que precisas destas competências para brilhares como C++ developer in Lisbon

C++20
Qt 5.15
Desenvolvimento de Software Desktop
Princípios de Design em C++
Testes Automatizados
Debugging e Resolução de Problemas
Análise de Causa Raiz