Développeur C++ (h/f/a)

Nous travaillons aussi à distance !

Rejoignez-nous en tant que développeur C++
Lieu : Berlin, Allemagne ou à distance

Croyez-vous au concept d’esthétisme en matière de programmation ? Éprouvez-vous un vif intérêt pour les algorithmes élégants ? Êtes-vous un(e) expert(e) en langage C++ ? Alors, nous aimerions vous rencontrer. Voici, en bref, ce que nous proposons :

  • Une large gamme de tâches de développement en C++ extrêmement stimulantes
  • Une équipe internationale d'esprits brillants
  • Un environnement de travail qui encourage cette équipe à rester et à se développer
  • Suffisamment de temps pour s'assurer que chaque détail de votre solution est développé à son plein potentiel
  • Une organisation horizontale et beaucoup de place pour vos idées
  • Aucune réunion programmée
  • Des horaires de travail favorisant la vie de famille, pas d’échéance, pas d’heures supplémentaires
  • Assistance lors des mutations
  • Un salaire initial compétitif et une augmentation à 130 000 EUR annuels après un an seulement

Présentation

Merci think-cell de parrainer la Standard C++ Foundation et de stimuler notre équipe de compilateurs Microsoft avec un code C++ complexe.

Herb Sutter, président de la Standard C++ Foundation

think-cell est un éditeur de logiciels en pleine croissance implanté à Berlin, dont le but est de développer des produits graphiques qui se démarquent de l’offre du marché. Plus de 1 000 000 utilisateurs dans le monde utilisent nos logiciels au quotidien parce qu’ils simplifient, accélèrent et agrémentent considérablement la création de présentations graphiques. Nous comptons parmi nos clients de nombreux cabinets de conseil renommés et de grandes multinationales.

Nous ne sommes pas obligés de faire des compromis sur la qualité et la beauté de nos lignes de code, en raison de la forte rentabilité de think-cell. Nous avons pour ambition d’aller encore plus loin dans le développement d’algorithmes sophistiqués et le peaufinage de notre interface utilisateur, et nous sommes fiers d’apporter satisfaction à nos nombreux clients. De plus, le fait que la société soit détenue et gérée par des ingénieurs informaticiens chevronnés contribue sans aucun doute à créer un environnement de travail dans lequel les développeurs de talent ont plaisir à venir travailler et à s’épanouir.

À propos de nos logiciels

Nous nous concentrons sur les diapositives professionnelles (par opposition aux applications plus ingénieuses), car elles offrent un potentiel fantastique pour l’automatisation des tâches de présentation généralement réalisées par les utilisateurs de PowerPoint eux-mêmes. Les défis sont multiples : d’une bonne compréhension de ce qui fait une présentation de qualité et des directives suivies par les hommes responsables de la présentation manuelle aux algorithmes qui produisent un résultat satisfaisant suffisamment vite pour assurer une conception de diapositives interactive, en passant par une interface utilisateur graphique à la fois simple à comprendre et discrète prenant en charge notre nouvelle approche originale de la présentation de diapositives, des solutions techniques fiables pour le signalement des bogues et les mises à jour automatiques, et la compatibilité avec un logiciel tiers sur les ordinateurs d’un demi-million d’utilisateurs.

Voici quelques-uns de nos principaux accomplissements.

Langue

  • Nous travaillons exclusivement en C++. Notre portail client est lui-même codé en C++. Un « glue code » assembleur est parfois utilisé lorsque cela est nécessaire et nos scripts d’intégration sont rédigés en Python, mais le reste de think-cell est pris en charge par C++.
  • Nous suivons de près les dernières versions de nos compilateurs, Visual C++ et Xcode, afin de toujours pouvoir utiliser les dernières fonctions de la norme C++ dès qu’elles sont disponibles.
  • Nous finançons le groupe de travail sur les langages de programmation de l’Institut allemand de normalisation (DIN). Certains de nos collaborateurs font partie de ce comité et participent aux votes du processus de normalisation internationale C++ ISO/IEC.
  • Nous parrainons la Standard C++ Foundation en l’aidant à promouvoir la compréhension et l’utilisation d’un C++ Standard moderne sur tous les compilateurs et plates-formes.

Bibliothèque

  • Nous utilisons Boost pour l’ensemble de notre code, par exemple Boost.Spirit pour l’analyse.
  • Nous disposons de notre propre bibliothèque de plages, dans l’esprit de Boost.Range ou de range-v3 d’Eric Niebler, mais en allant plus loin, par exemple en unifiant l’itération interne et externe. Nous avons donné une conférence sur ce sujet, et la majeure partie du code est dans le domaine public.
  • Nous développons notre propre bibliothèque multiplateformes afin de prendre en charge Mac et Windows avec une base de code unique.
  • Nous possédons nos propres bibliothèques de persistance et de comptage de références pour sauvegarder et restaurer des arborescences d’objets complètes.
  • Nous disposons d’une importante infrastructure pour le signalement des bogues. Les assertions et les vérifications d’erreurs restent dans le code de version et nos logiciels transmettent automatiquement les rapports de bogues vers notre serveur. Le serveur analyse le bogue, le classe et le consigne dans une base de données à laquelle tous les développeurs peuvent accéder. Si une mise à jour corrige un bogue donné, l’utilisateur peut télécharger directement la mise à jour à partir d’une page Web de traitement des bogues.

Algorithmes

  • La société think-cell a été fondée selon l’idée d’un algorithme dédié à une présentation automatique de diapositives, et nous poursuivons notre route vers cette vision ambitieuse. Retrouvez notre dernière réalisation en action !
  • Nous avons développé un nouvel algorithme de création automatique d’étiquettes pour les nuages de points qui permet de placer les étiquettes à distance des points eux-mêmes.
  • Nous avons développé un nouvel algorithme pour la création automatique d’étiquettes sur les graphiques.
  • Nous collaborons avec John Forrest, créateur du solveur linéaire CLP, afin de rendre son code simplex plus rapide dans le traitement de problèmes que nous pouvons rencontrer.
  • Nous avons développé de nombreuses structures de données génériques qui ne sont pas en C++ ni en Boost, par exemple des partitions.
  • Notre logiciel produit non seulement des graphiques, mais il est également en mesure de les lire à partir d’une version papier. En ce qui concerne notre outil de reconnaissance graphique, nous nous appuyons sur OpenCV et sur la bibliothèque de traitement d’image Leptonica.

Ingénierie inverse

  • Pour accomplir certaines tâches que l’API documentée de Microsoft Office ne permet pas de réaliser, nous menons de nombreuses activités d’ingénierie inverse à l’aide du désassembleur IDA d’Hex-Rays.
  • Nous avons probablement développé le meilleur moteur d’interconnexion de fonctions du marché. Au cours de chaque lancement de nos logiciels, nous apportons des corrections aux fichiers exécutables de Microsoft Office en mémoire. Nous recherchons de petits fragments de code assembleur au lieu de codage en dur des adresses de correctif, afin de gérer les modifications mineures de code dans les exécutables.

Regardez Arno, notre directeur technique, qui répond aux questions

Arno Schoedl (fondateur et directeur technique de think-cell) et Volker Schöch (développeur logiciel sénior) répondent sur le forum aux questions sur la candidature et le travail au sein de think-cell en tant que développeur C++.

Cette vidéo répondra aux questions suivantes :

Description du poste

Nous recherchons des développeurs intelligents, créatifs et possédant de solides connaissances théoriques. Notre équipe de développeurs comprend des personnes ayant plus de 15 ans d’expérience commerciale dans divers domaines et de jeunes diplômés en informatique, physique et mathématiques. Un diplôme universitaire ou une expérience professionnelle en C++, ainsi qu’une approche pour la résolution de problèmes innovante et créative serait une excellente combinaison pour ce rôle. Comme toutes nos étapes de recrutement sont basées sur des tests, la sélection se basera sur les compétences attestées pendant ces tests.

Vous travaillerez en grande partie de manière autonome et serez responsable d'une grande variété d'opérations au cours de l'implémentation des nouvelles fonctions. Vous devrez être capable d'analyser un problème en adoptant le point de vue des utilisateurs et de discuter de concepts abstraits avec vos confrères développeurs. Chaque développeur doit être capable de prendre en charge l'architecture, la conception, l'implémentation, le retour client et la correction des bogues, ce qui évite de répartir ces opérations entre plusieurs personnes. Chacun est ainsi responsable de son propre travail.

Chez think-cell, les échéances n'existent pas, de même que les réunions programmées. Une fonctionnalité ne sera prête à être publiée que lorsque vous serez convaincu que vous avez mis en place la meilleure solution possible. Des réunions peuvent être organisées selon les besoins, et uniquement avec les personnes impliquées devant être présentes. À tout moment lors du processus, les idées, suggestions et critiques constructives d'une personne - quelle que soit sa position dans la hiérarchie - sont les bienvenues et véritablement prises en compte. Vos idées sont les bienvenues, même si elles doivent entraîner la modification de nombreuses lignes de code pour apporter des améliorations.

Nous avons publié plusieurs articles scientifiques dans le domaine de l'intelligence artificielle et de l'infographie, et vous serez encouragé(e) à faire de même. Nous finançons des interventions dans le cadre de conférences, et nous entretenons des relations étroites avec le monde universitaire et le milieu de la recherche aux États-Unis et en Allemagne.

think-cell encourage ses collaborateurs à trouver un juste équilibre entre vie privée et vie professionnelle. Nous ne travaillons ni les weekends, ni le soir.

Nous proposons des salaires très compétitifs, et offrons à nos développeurs 130 000 euros par an après un an à notre service. Si cela s'avère nécessaire, nous mettrons tout en œuvre pour vous aider à vous installer à Berlin et à obtenir un permis de travail. Vous devez être en mesure de communiquer de manière efficace en Anglais, la connaissance de l'Allemand n'étant pas requise. Des cours d'apprentissage de cette langue peuvent toutefois être organisés si vous le souhaitez.

Encore plus d’informations sur nos DevOps

Quel environnement de développement intégré et compilateur utilisez-vous ?

Nous utilisons Visual Studio avec le compilateur MSVC sur Windows et Xcode avec Clang sur Mac. Comme indiqué ci-dessus, nous compilons à partir du même code source pour les deux plateformes.

Quels outils utilisez-vous pour l’interface utilisateur ?

Nous utilisons OpenGL sur Mac et DirectX sur Windows afin de présenter notre propre interface utilisateur par-dessus les contenus de fenêtre PowerPoint et Excel.

Qu’utilisez-vous dans le cadre du suivi des problèmes ?

Nous utilisons Request Tracker (RT) depuis plusieurs années déjà, mais nous recherchons des alternatives.

Quel système de contrôle de version utilisez-vous ?

Git hébergé sur site.

Réalisez-vous des tests unitaires ?

Nous avons mis en place des outils nous permettant de définir des tests unitaires en toute simplicité directement dans notre base de code. Les tests unitaires sont réalisés à chaque exécution de compilation.

Possédez-vous un serveur d’intégration ?

Une machine dédiée exécute Jenkins afin d’intégrer le projet en continu et, en cas de défaillance, celle-ci envoie automatiquement un e-mail aux développeurs qui ont soumis du code depuis la dernière intégration réussie.

Possédez-vous des conventions de codage ?

Nous disposons d’un ensemble écrit de conventions de codage, reposant sur des arguments très solides pour chacune d’entre elles. Nous n’hésitons pas à actualiser nos conventions de codage lorsque nous trouvons de nouveaux ou de meilleurs arguments.

Que pensez-vous de l’analyse de code statique ?

Nous avons testé quelques outils, mais ils ne proposent aucune perspective véritablement intéressante. Il semble que nous parvenions avec succès à éviter les écueils classiques grâce à nos conventions de codage et révisions de code. Par ailleurs, les problèmes plus complexes qui échappent à nos révisions de code tendent à passer également inaperçus lors d’analyses de code statiques. Le recours à une équipe de test compétente et à une équipe de support vigilante avec un accès direct aux développeurs s’est avéré bien plus utile que l’analyse de code statique pour identifier les bogues insidieux. Nous continuons toutefois à rechercher des outils capables d’aider les testeurs et les développeurs à trouver un nombre plus important de bogues de façon plus rapide.

Quel regard portez-vous sur Agile en tant que méthodologie de développement logiciel ?

Nous avons conscience des méthodologies modernes de développement logiciel qui ont évolué autour du mouvement Agile, et nous n’hésitons pas à mettre en œuvre toute solution pratique pour notre projet sans l’entraver. Parmi ces solutions se trouvent la révision par les pairs, un degré élevé d’auto-organisation et de responsabilité, des tests d’utilisabilité de couloir, des tests plus formels avec les utilisateurs réels, la capacité à prendre en compte de nouvelles exigences ou découvertes quelle que soit l’étape du processus de développement, des mises à jour fréquentes et automatiques, une boucle étroite de rétroaction avec les utilisateurs basée sur le retour actif des utilisateurs et les rapports automatiques du logiciel, l’utilisation des meilleurs outils possibles comme un SSD en RAID ou d’impressionnantes quantités de RAM pour chaque développeur, le temps nécessaire pour s’assurer que chaque détail de notre mise en œuvre bénéficie de l’attention requise, et le temps nécessaire pour rédiger un code à 100 % utile.

Cela vous parle ?

Si vous pensez être le collaborateur ou la collaboratrice qui manque à notre équipe, envoyez-nous votre candidature par e-mail.

Vous souhaitez plus d'informations ?

Si vous avez des questions sur l’environnement de travail chez think-cell, nos postes à pourvoir ou les événements, veuillez contacter notre collègue Julia Zhachuk.

hr@think-cell.com
+49 30 6664731-81

Représentante des RH chez think-cell.


Partager