think-cell

Strebst Du nach struktureller Schönheit, wenn es um Programmierung geht? Hast Du ein lebhaftes Interesse an eleganten Algorithmen? Bist Du fit in C++? Falls ja, würden wir Dich gerne kennenlernen. Hier unser 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 wettbewerbsfähige Vergütung und eine Gehaltserhöhung auf 130.000 EUR Jahresgehalt nach nur einem Jahr ## Über uns Thank you, think-cell, for sponsoring the Standard C++ Foundation and challenging our Microsoft compiler team with complex C++ code. think-cell ist ein schnell wachsendes Software-Unternehmen mit Sitz in Berlin, das auf die Entwicklung innovativer Grafikprodukte spezialisiert ist. Mehr als 1.000.000 Nutzer weltweit verlassen sich bei ihrer täglichen Arbeit auf unsere Software, um grafische Präsentationen einfacher, schneller und effizienter zu erstellen. Zu unseren Kunden zählen viele renommierte Beratungsunternehmen sowie große internationale Firmen. Wir müssen hinsichtlich der Codequalität und -ästhetik keine Kompromisse eingehen, da think-cell ein hochprofitables 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 unsere Software Unser Schwerpunkt liegt auf geschäftlichen 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. Nachfolgend haben wir einige Highlights unserer Arbeit zusmmengestellt. ## 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 think-cell nur um C++. – Wir verfolgen die neuesten Versionen unserer Compiler, von Visual C++ und Xcode genau, damit wir immer die neuesten C++-Standardfunktionen nutzen können, sobald diese verfügbar sind. – 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. – Wir sponsern die Standard C++ Foundation und fördern so die Anwendung und das Verständnis von modernem Standard-C++ auf allen Compilern und Plattformen. ## 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. Wir haben dazu einen Vortrag gehalten und das meiste des Codes ist öffentlich. – 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 – think-cell 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. Hier siehst Du unsere neueste Version in Aktion! – Wir haben einen neuen Algorithmus für die automatische Beschriftung von Punktwolken entwickelt, der es zudem 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 Engineering – 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 in den 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. ## Über diesen Job Wir suchen intelligente, kreative Entwickler mit soliden theoretischen Kenntnissen. In unserem Entwicklerteam arbeiten Leute mit mehr als 15 Jahren Erfahrung in verschiedenen Bereichen zusammen mit frischgebackenen Absolventen in Informatik, Physik und Mathematik. Ein Hochschulabschluss oder Berufserfahrung mit C++, zusammen mit einem frischen und kreativen Problemlösungsansatz sind eine hervorragende Kombination für diese Position. Da alle unsere Einstellungsschritte aufgabenbezogen sind, erfolgt die Auswahl auf Basis der in unseren Tests nachgewiesenen Fähigkeiten. 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 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 think-cell 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. Wir schätzen Deine Ideen, auch wenn diese bedeuten, dass umfangreiche Code-Änderungen vorgenommen werden müssen, um Deine Vorschläge zu implementieren. Wir haben einige wissenschaftliche Artikel in den Bereichen Künstliche Intelligenz und Computergrafik veröffentlicht, wozu wir auch Dich ermutigen werden. Wir finanzieren Konferenzbesuche und haben enge Beziehungen zu Universitäten und Forschungseinrichtungen in den USA und Deutschland. think-cell fördert eine gesunde Work-Life-Balance. Wir erwarten keine Abend- oder Wochenendarbeit. Wir zahlen ein sehr attraktives Gehalt und bieten unseren Entwicklern nach einem Jahr Betriebszugehörigkeit ein Jahreseinkommen von 130.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.