Développeur C++

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

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 expert 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 compétitif dès le départ et une augmentation à 120 000 EUR annuels après un an seulement
Postulez dès maintenant par e-mail

Présentation

think-cell est un éditeur de logiciels en pleine croissance implanté à Berlin, en Allemagne, dont le but est de développer des produits graphiques qui se démarquent de l'offre du marché. Plus de 550 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 rentabilité de think-cell et de l'absence d'investisseurs externes. 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 l'entreprise 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 utilisons évidemment des fonctionnalités de C++11 telles que les références lambda et rvalue dans toute notre base de code, et sommes passés à C++14 lorsque nos compilateurs l'ont pris en charge.
  • 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.

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

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.

Description du poste

Nous recherchons des développeurs intelligents, créatifs et possédant de solides connaissances théoriques. La plupart des développeurs que nous avons recrutés sont titulaires d'un master ou même d'un doctorat en informatique qu'ils ont reçu avec les félicitations du jury. 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 la nuit, ni les weekends, et proposons à nos collaborateurs la possibilité d'une garde d'enfants à temps plein. La garde d'enfants est gratuite, que ce soit lorsque vos enfants sont malades ou simplement lorsque vous souhaitez sortir.

Nous proposons des salaires très compétitifs, et offrons à nos développeurs 120 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.

Postulez dès maintenant par e-mail

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 ?

Nous nous appuyons sur Subversion afin de contrôler la version car nous devons jongler avec de nombreux fichiers binaires, en plus du code pur. Nos développeurs sont ainsi libres de choisir le client svn ou git selon leur préférence.

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.

Postulez dès maintenant 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 des événements, veuillez contacter notre collègue Claudia Roman.

hr@think-cell.com
+49 30 666473-10