Développeur de logiciel senior – C++

Description:

    Sous la supervision du directeur, Recherche et développement (R&D), vous travaillerez avec notre équipe de R&D et vous dirigerez le développement de nos applications et de leurs fonctionnalités, lesquelles sont à la fine pointe de la technologie. En tant que membre senior de notre équipe de Développement, vous travaillerez avec des collègues de travail hautement qualifiés. En parallèle, vous développerez vos aptitudes de leadership et de mentorat en partageant votre vaste expérience, cette dernière vous permettant de produire un logiciel de sécurité de messagerie électronique de qualité supérieure. À cet effet, vous serez appelé à guider et à aider vos collègues de travail moins expérimentés au sein de l’équipe.

    En tant que leader senior, vous serez également impliqué au sein de toutes les étapes du cycle de développement du logiciel, avec un focus particulier sur le design et l’architecture; votre contribution s’étendra de l’élaboration des pré-requis jusqu’aux tests de performance. Nous vous demanderons de prendre la responsabilité des nouveaux systèmes et de ceux existants; ceci signifie redéfinir, développer mais aussi faire évoluer l’architecture afin de rencontrer de nouveaux défis et objectifs. Vous pourrez amener de nouvelles idées, partager votre expérience de l’industrie et introduire de nouvelles techniques et de nouveaux concepts à toute l’équipe. Vous serez encouragé à apprendre de nouvelles technologies et de nouveaux produits. Toute cette nouvelle information découlant de vos apprentissages et dont vous bénéficierez vous permettra d’améliorer nos façons de faire et notre technologie.

    En apportant vos propres idées, vous aiderez l’équipe à faire évoluer notre plateforme de messagerie électronique vers une direction nouvelle et puissante. Vous travaillerez avec des personnes de divers départements et disciplines, et développerez ainsi des outils et des techniques qui aideront nos clients à mieux combattre les pourriels.

Responsabilités:

  • Travaille avec les autres développeurs au sein de l’équipe en ce qui a trait à la recherche et à l’analyse du logiciel et de l’architecture actuelle. Le but de cet exercice de recherche et d’analyse est de comprendre le code (à un niveau macro et micro) et ainsi pouvoir procéder à des améliorations, ou encore résoudre des défectuosités techniques et des problèmes de performance;
  • Fait le design, le prototype et implante le contenu technique de l’application. Ceci inclut l’établissement des modèles primaires du design, la recherche et l’implantation des mécanismes techniques, l’établissement des tests unitaires, et l’évaluation et la sélection des composantes de tierce partie, tout ceci permettant la réalisation d’une application robuste et évolutive;
  • Travaille avec le directeur de Projets et le directeur R&D afin de définir les tâches, les étapes importantes à rencontrer ainsi que les délais pour chacun des projets. À cet effet, vous utiliserez un processus d’estimation relié au logiciel dans le but de pouvoir établir des estimées justes quant au temps de développement et au nombre de ressources requises pour les fonctions spécifiques;
  • Rédige les différents designs et spécifications du logiciel pour l’implantation;
  • Écrit le code en C++ (Visual Studio) pour développer des composantes « Core » et « Systems » en Microsoft Windows. Contribue, si nécessaire, au développement des composantes de l’interface usager avec C# et JavaScript;
  • Interagit régulièrement avec la Gestion de produit et toute l’équipe de Développement. À cet effet, il leur apporte des conseils/orientations dans le but de s’assurer que l’architecture technique soit en mesure de supporter les besoins et pré-requis du logiciel;
  • Travaille avec la Gestion de produit afin d’apporter des solutions aux pré-requis commandés par le marché, lesquelles sont innovatrices et fonctionnelles;
  • Contribue à l’amélioration de notre processus de développement logiciel Agile;
  • Investigue et fait le prototype des technologies et des algorithmes reliés à ses tâches;
  • Voit au maintien du code existant;
  • Travaille en étroite collaboration avec l’équipe QA afin de s’assurer que les fonctionnalités soient de meilleure qualité possible;
  • Apporte son soutien dans l’élaboration des scénarios et des « use cases »;
  • Fournit de l’information à l’équipe R&D et à la Gestion de produit afin qu’elles puissent prendre des décisions relativement aux priorités, lesquelles décisions sont basées sur l’architecture, le risque et la valeur de différentes composantes;
  • Améliore constamment ses aptitudes techniques afin de demeurer au plus haut niveau possible en ce qui a trait à l’expertise technique;
  • Effectue des évaluations détaillées de la technologie dans le but d’orienter les décisions « Build vs Buy »;
  • Travaille avec l’équipe de Support à la clientèle afin de mieux comprendre comment nos clients utilisent nos produits. Ceci permet de mieux comprendre leurs besoins et pouvoir ainsi fournir des commentaires quant au design du produit;
  • Enregistre constamment ses progrès en conformité avec le plan de projets et informe le directeur de Projets de tout délai;
  • Participe au processus rigoureux de sélection et d’entrevues de ses futurs collègues de travail;
  • Revoit le travail effectué par les membres de l’équipe;
  • Définit, promeut et améliore les meilleures pratiques de développement logiciel au sein de l’équipe.

Profil:

  • Baccalauréat en ingénierie ou en informatique, ou toute autre formation académique pertinente;
  • Un minimum de 8 années d’expérience pertinente en développement dont une expérience en tant que développeur senior au sein d’une équipe de R&D;
  • La personne doit avoir à son actif des réalisations concrètes relativement à la livraison de projets au sein d’un environnement technologique complexe;
  • Excellente connaissance de C++, programmation orientée objet, Win32 API (connaissance de STL, COM, programmation avec multiples fils d’exécution, SOAP, RPC, XML est un atout) et un expert de Microsoft Windows;
  • Bonne connaissance du design des bases de données, intégration et modélisation des données, et à l’aise avec SQL également;
  • La connaissance de l’environnement réseau, des protocoles internet, du chiffrement (« encryption ») et des protocoles de courrier électronique demeure un atout certain;
  • La connaissance de C#, JavaScript et de HTML serait également un atout;
  • Bilinguisme. Facilité à communiquer efficacement en anglais (la connaissance du français est un atout indéniable);
  • Très bonnes aptitudes au niveau des communications et des relations interpersonnelles;
  • Personne reconnue comme étant un joueur d’équipe;
  • Aptitudes exceptionnelles au niveau de l’analyse et de la résolution de problèmes;
  • Orienté vers les détails, approche consciencieuse et rigoureuse;
  • Aptitudes pour la rédaction technique (communication claire et efficace);
  • Autonome et responsable;
  • Intérêt à saisir de nouvelles opportunités avec dynamisme, initiative et leadership;
  • Enthousiasme à élargir ses connaissances des protocoles internet, de la sécurité au niveau de la messagerie électronique et de la technologie en général; quelqu’un qui apprend vraiment rapidement;
  • Bonne connaissance de soi et de ses capacités, ainsi qu’une passion envers son domaine d’emploi qui l’amène à constamment s’améliorer.