TopJob für C++ Developer

bei einem der besten Arbeitgeber in Berlin

Der Arbeitgeber bietet

Strebst Du nach struktureller Schönheit, wenn es um Programmierung geht? Hast Du ein lebhaftes Interesse an eleganten Algorithmen? Beherrschst Du C++? Falls ja, würden der Arbeitgeber Dich gerne kennenlernen. Hier sein Angebot in aller Kürze:

  • Ein breites Spektrum an besonders spannenden Aufgaben in der C++-Entwicklung
  • Ein internationales Team brillanter Köpfe
  • Eine Arbeitsumgebung, in der das Team sich wohlfühlt und beständig wächst
  • Genug Zeit, um sicherzugehen, dass Deine Lösung bis ins kleinste Detail stimmt
  • Flache Hierarchien und genug Raum für Deine Ideen
  • Keine angesetzten Meetings
  • Familienfreundliche Arbeitszeiten, keine Deadlines, keine Überstunden
  • Unterstützung beim Umzug
  • Von Beginn an eine sehr wettbewerbsfähige Vergütung und eine Gehaltserhöhung auf bis zu 120.000 EUR Jahresgehalt nach nur einem Jahr

Über die Software

Der Arbeitgeber sagt über seine Software:

Unser Schwerpunkt liegt auf kaufmännischen Präsentationen (im Gegensatz zu eher künstlerischen Anwendungsbereichen), da diese ein größeres Potenzial zur Automatisierung von Aufgaben bieten, die bislang in der Regel von PowerPoint-Anwendern selbst durchgeführt werden. Die Herausforderungen sind dabei zahlreich: von einem eingehenden Verständnis dazu, was ein gutes Layout ausmacht und welche Richtlinien bei der Erstellung eines Layouts beachten werden müssen, über Algorithmen, die akzeptable Ergebnisse liefern, die schnell genug für ein interaktives Foliendesign sind, und einer neuen grafischen Benutzeroberfläche, die unseren neuen, originellen Ansatz bezüglich des Folienlayouts leicht verständlich und reibungslos gestaltet, bis hin zu soliden technischen Lösungen für die automatisierte Fehlerberichterstattung und automatische Updates sowie der Kompatibilität mit Software von Drittanbietern auf den Computern von über einer halben Million Benutzern.

Sprache

  • Wir programmieren alles in C++. Selbst unser Kundenportal ist in C++ geschrieben. Der Glue Code wird gegebenenfalls in Assembler erstellt und unsere Build-Scripts sind in Python geschrieben, aber davon abgesehen geht es bei uns nur um C++.
  • Selbstverständlich verwenden wir C++11-Funktionen wie Lambdas und R-Wert-Referenzen in unserer gesamten Codebasis. Und wir sind auf C++14 umgestiegen, wo unsere Compiler dies unterstützen.
  • Wir finanzieren die Arbeitsgemeinschaft für Programmiersprachen des Deutschen Instituts für Normung (DIN). Einige unserer Mitarbeiter sind Mitglied dieses Ausschusses und im internationalen Standardisierungsprozess von ISO/IEC C++ wahlberechtigt.

Bibliothek

  • Wir verwenden Boost in unserem gesamten Code, zum Beispiel Boost.Spirit für das Parsing.
  • Wir haben eine eigene Range-Bibliothek, die mit Boost.Range oder range-v3 von Eric Niebler vergleichbar ist, aber weiter geht als diese, indem z. B. externe und interne Iterationen vereinheitlicht werden. Zu diesem Thema haben wir einen Vortrag gehalten und der Großteil des Codes ist verfügbar
  • Wir entwickeln unsere eigene plattformunabhängige Bibliothek zur Unterstützung von Windows und Mac auf einer gemeinsamen Codebasis.
  • Wir haben unsere eigenen Reference-Counting- und Persistenzbibliotheken, um ganze Objektstrukturen zu speichern und wiederherzustellen.
  • Wir besitzen eine umfangreiche Infrastruktur für Fehlerberichte. Assertions- und Fehlerprüfungen bleiben im freigegebenen Code und unsere Software meldet Fehler automatisch an unseren Server. Der Server analysiert den Fehler, kategorisiert ihn und speichert ihn in einer Datenbank, auf die alle Entwickler Zugriff haben. Wird der Fehler durch ein Update behoben, kann der Benutzer dieses Update direkt von einer Fehlerantwortseite herunterladen.

Algorithmen

  • die Firma wurde mit dem Ziel gegründet, einen Algorithmus für ein automatisches Folienlayout zu entwickeln, und bis zum heutigen Tag befinden wir uns auf einer aufregenden Reise, um diese ambitionierte Vision zu erreichen.
  • Wir haben einen neuen Algorithmus für die automatische Beschriftung von Punktwolken entwickelt, der es ermöglicht, die Beschriftungen entfernt von den Punkten zu positionieren.
  • Wir haben einen neuen Algorithmus für die automatische Beschriftung von Säulendiagrammen entwickelt.
  • Wir arbeiten mit John Forrest, dem Verfasser des Linearen Solvers CLP, zusammen, um seinen Simplex-Code für unsere gegenwärtigen Probleme schneller zu machen.
  • Wir haben mehrere allgemeine Datenstrukturen entwickelt, die nicht in C++ oder Boost zu finden sind, zum Beispiel Partitionen.
  • Unsere Software erstellt nicht nur Diagramme, sie ist auch in der Lage, diese vom Blatt zu lesen. Für unser Tool zur Diagrammerkennung verwenden wir OpenCV und die Leptonica Image Processing Library.

Reverse Engeneering

  • Wir nutzen häufig das Reverse Engineering mit dem Disassember IDA von Hex-Rays um Dinge zu erreichen, die über die dokumentierte API von Microsoft Office nicht möglich sind.
  • Wir haben das wahrscheinlich beste Modul für das Function Hooking geschrieben. Bei jedem Start unserer Software patchen wir die ausführbaren Dateien von Microsoft Office im Speicher. Anstelle von fest codierten Patch-Adressen suchen wir nach kurzen Abschnitten von Assembler-Code, um robust gegenüber kleinen Code-Änderungen in den Binärdateien zu sein.

Ablauf des Bewerbungsprozesses bei diesem Arbeitgeber

  • Du bewirbst Dich bei Brainfinder mit einem CV der Deine stärken in C++ unterstreicht
    • möglicherweise diskutieren wir mit Dir den CV noch mal
  • wir geben Deine Bewerbung an den Arbeitgeber weiter
  • Du wirst zu einem Coding-Test eingeladen
  • Deine Skills (anstatt Deines Backgrounds und Deiner Erfahrung oder Ausbildung) sind das was Dich in nächste Runde des Recruitments bringt
  • Die Programmier-Aufgabe muss innerhalb von 9 Stunden an einem Ort und zu einem Zeitpunkt Deiner Wahl fertig gestellt werden
  • Du bekommst einen Link zu Deiner persönlichen Recruiting Seite auf der Du den Test manuell starten kannst wann Du gern möchtest
  • Alle relevanten Informationen bezüglich der Aufgabe selbst oder des benötigten technischen Equipments um die Aufgabe zu lösen, wird auf der Recruiting-Webseite kommuniziert und/oder im Test selbst.
  • Der Test ist ein Problem das die Developer in der Vergangenheit gefunden haben und für das es viele Lösungen gibt, nicht nur eine.
  • Dies erlaubt es dem Arbeitgeber Deine Fähigkeiten fair mit denen anderer zu vergleichen.
  • Wenn Du eine funktionierende Lösung präsentieren kannst während des Coding Tests wirst Du zu einem TelefonInterview eingeladen.
  • Wenn Du diese Stufe bestanden hast wirst Du zu einen persönlichen Gespräch in die Firma eingeladen wobei der Arbeitgeber die Resiekosten trägt.
  • Der Arbeitgeber entscheeidet dann sehr schnell nach dem Gesprächj ob er Dich einstellen möchte und informiert Dich und uns per email.
  • Es ist wichtig, dass Du verstehst, dass Du kein individuelles Feddback zum Testergebnis bekommen kannst, egal ob Du den Test bestehst! Der Arbeitgeber wird sich nur kurz bedanken und Dir mitteilen ob Du bestanden hast.

Hier das kurze HowTo für eine Bewerbung bei Brainfinder LTD:

Bitte maile an hiring@brainfinder.eu mit Deinem vollen Vor und Nachnamen und C++ im Betreff
Hänge an die Mail bitte Deinen aktuellen CV
Teile uns Deine Verfügbarkeit mit
Nenne bitte Deine Gehaltswünsche
Teile uns mit ob Du Dich für einen Junior, Midlevel oder Senior hälst

Falls Dich neben dieser Stelle noch andere Stellen in Deutschland interessieren, dann lade bitte diese SkillMatrix herunter und fülle sie aus, speichere sie als Word97 und hänge die Datei dann an Deine Bewerbungsmail

Über den Arbeitgeber

Der Arbeitgeber ist ein schnell wachsendes Software-Unternehmen mit Sitz in Berlin, das auf die Entwicklung innovativer Grafikprodukte spezialisiert ist. Mehr als 550.000 Anwender weltweit verlassen sich bei ihrer täglichen Arbeit auf unsere Software, um PowerPoint-Präsentationen einfacher, schneller und effizienter zu erstellen. Zu seinen Kunden zählen viele renommierte Beratungsunternehmen sowie große internationale Firmen.

Er sagt: Wir müssen hinsichtlich der Codequalität und -ästhetik keine Kompromisse eingehen, da wir ein hochprofitables und von externen Investoren unabhängiges Unternehmen ist. In der Entwicklung fortschrittlicher Algorithmen und bei der Verbesserung unserer Benutzeroberfläche scheuen wir keinen Mehraufwand und können stolz auf eine Vielzahl zufriedener Kunden blicken. Unser Unternehmen wird von erfahrenen Informatikern geführt und das trägt mit Sicherheit dazu bei, dass sich außergewöhnliche Entwickler in dieser Arbeitsumgebung wohlfühlen.

Über diesen Job

Der Arbeitgeber sucht intelligente, kreative Entwickler mit soliden theoretischen Kenntnissen. Fast alle Entwickler dort haben einen überdurchschnittlich guten Master-Abschluss oder eine Promotion im Fach Informatik. Du wirst größtenteils selbständig arbeiten und bist bei der Implementierung einer neuen Funktion für den gesamten Prozess zuständig. Du solltest Probleme aus der Benutzerperspektive sehen und abstrakte Konzepte mit anderen Entwicklern erörtern können. Wir erwarten von allen unseren Entwicklern, dass sie selbstständig in den Bereichen Architektur, Design, Implementierung, Kundenfeedback und Fehlerbehebung arbeiten, anstatt diese Tätigkeiten auf mehrere Mitarbeiter aufzuteilen. Daher überlassen wir jedem die volle Kontrolle über seine Arbeit.

Bei diesem Arbeitgeber gibt es weder Deadlines noch anberaumte Meetings. Eine Funktion ist zur Veröffentlichung bereit, wenn Du überzeugt bist, die bestmögliche Lösung implementiert zu haben. Meetings finden nach Bedarf statt und nur diejenigen, die tatsächlich involviert sind, müssen daran teilnehmen. Ideen, Vorschläge und Kritik sind jederzeit während des Prozesses von jedem einzelnen willkommen und jedes Feedback wird ernsthaft berücksichtigt. Deine Ideen werden geschätzt, auch wenn diese bedeuten, dass umfangreiche Code-Änderungen vorgenommen werden müssen, um Deine Vorschläge zu implementieren.

Die Firma hat einige wissenschaftliche Artikel in den Bereichen Künstliche Intelligenz und Computergrafik veröffentlicht, wozu auch Du ermutigt wirst. Der AG finanziert Konferenzbesuche und hat enge Beziehungen zu Universitäten und Forschungseinrichtungen in den USA und Deutschland.

Der AG fördert eine gesunde Work-Life-Balance. Er erwartet keine Abend- oder Wochenendarbeit und unterstützt die Familien der Mitarbeiter mit einer vom Unternehmen gestellten Vollzeit-Kinderbetreuung. Die Betreuungsperson steht kostenlos zur Verfügung, wenn Deine Kinder krank sind oder Du gerne einfach mal abends ausgehen möchtest.

Der AG zahlt ein sehr attraktives Gehalt und bietet den Entwicklern nach einem Jahr Betriebszugehörigkeit ein Jahreseinkommen von bis zu 120.000 Euro. Bei einem Umzug nach Berlin oder falls eine Arbeitserlaubnis erforderlich sein sollte, werden wir natürlich unser Möglichstes tun. Du solltest über sehr gute Englischkenntnisse verfügen. Sprachkenntnisse in Deutsch werden nicht vorausgesetzt. Falls gewünscht, können Sprachkurse für Deutsch angeboten werden.

Einige Antworten zu häufig gestellten Fragen

Thats how the employer explains his DevOps:

Which IDE and compiler are you using?

We use Visual Studio with the MSVC compiler on Windows and Xcode with Clang on the Mac. As mentioned above, we compile from the same source code for both platforms.

Which toolkit do you use for UI?

We employ OpenGL on the Mac and DirectX on Windows to render our own user interface on top of PowerPoint's and Excel's window contents.

What do you use for issue tracking?

We have been using Request Tracker (RT) for many years now, but we are looking into alternatives.

Which version control system do you use?

We rely on a Subversion for version control because, in addition to plain code, we have many binary files to deal with. This gives our developers the freedom to choose the svn or git client, whichever they prefer.

Do you do unit tests?

We have implemented a toolkit that allows for an easy definition of unit tests directly in our code base. Unit tests are executed as part of every compile run.

Do you have a build server?

A dedicated machine runs Jenkins to continuously build the project and, in case of failure, automatically send email to developers that have committed code since the last successful build.

Do you have coding conventions?

We have a written set of coding conventions with very solid arguments for every single one of them. We do not hesitate to update our coding conventions when we find new or better arguments.

What do you think about static code analysis?

We tried a few tools but they hardly offered any valuable insights. Apparently, we are quite successful in avoiding the typical pitfalls by way of our coding conventions, and code reviews. More complex problems that escape our code reviews tend to go unnoticed during static code analysis as well. Employing a well-staffed test team and a vigilant support team with direct access to the developers has proven far more helpful in identifying sneaky bugs than static code analysis. That said, we keep looking for tools that help testers and developers to find more bugs more quickly.

What is your take on Agile as a methodology for software development?

We are aware of the modern software development methodologies that have evolved around the Agile movement and employ whatever is helpful for our project without getting into the way. This includes peer reviews; a high degree of self-organization and accountability; hallway usability tests; more formal tests with actual users; being ready to take new requirements or findings into account at any stage of the development process; frequent, automatic updates; a tight feedback loop with users, based on active user feedback as well as automatic reports from the software; using the best tools money can buy, like SSD RAIDs and gargantuan amounts of RAM for every developer; taking the time to ensure that every detail of our implementation gets the attention it deserves; taking the time to not write unnecessary code.