С

Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

C++ developer to Berlin

от 7 500 до 10 834 EUR до вычета налогов


Do you believe in beauty when it comes to programming? Do you have a vivid
interest in elegant algorithms? Are you fluent in C++? If so, we would like to meet
you.

Here is what we offer in a nutshell:

 A wide array of extremely challenging C++ development tasks


 An international team of brilliant minds
 A working environment that makes this team stay and grow
 Enough time to make sure that every detail of your solution is perfect
 A flat organization and plenty of room for your ideas
 No scheduled meetings
 Family-friendly working hours, no deadlines, no overtime
 Support for relocation
 A competitive salary from the start and a raise to EUR 130,000 annually after
only one year
About us

"Thank you, think-cell, for sponsoring the Standard C++ Foundation and challenging our
Microsoft compiler team with complex C++ code." Herb Sutter, President of the
Standard C++ Foundation

think-cell is a fast-paced software company in Berlin, Germany, with a focus on


developing graphics products that stand out from the crowd. More than 950,000 users
world-wide rely on our software for their daily business as it makes creating graphical
presentations so much easier, faster and more enjoyable. Among our customers are
many renowned consulting companies and large international corporations (e.g.
Accenture, American Express, Coca-Cola, Google, Pfizer, Tesla Motors and many
others).

We do not have to make compromises with regard to code quality and beauty, because
think-cell is profitable. We are willing to go the extra mile of developing sophisticated
algorithms and refining our user interface, and we are proud of our many happy
customers. The fact that the company is owned and managed by seasoned computer
scientists certainly contributes to a working environment that makes exceptional
developers come and stay.

About our software

Our focus is on business slides (as opposed to more artful applications) because they
offer great potential for automation of layout tasks that are traditionally performed by
PowerPoint users themselves. Challenges are plenty: from a solid understanding of
what makes a good layout and which guidelines are followed by humans who do
manual layout, to algorithms that produce an acceptable output fast enough for
interactive slide design, to a graphical user interface that supports our new, original
approach to slide layout in a way that is easy to understand yet unobtrusive, to solid
technical solutions for automatic bug reporting and automatic updates, to compatibility
with third-party software on the computers of half a million users.

Here are some highlights of what we have done.

Language

 Everything we do is C++. Even our customer portal is written in C++. There is


some Assembler glue code where it is necessary, and our build scripts are
written in Python, but other than that think-cell is all about C++.
 We closely track the latest versions of our compilers, Visual C++ and Xcode, so
we can always use the latest C++ standard features as soon as they become
available.
 We fund the working group for programming languages of the German Institute
for Standardization (DIN). Some of our employees are members of this
committee and vote in the international standardization process of ISO/IEC C++.
 We sponsor the Standard C++ Foundation helping them to promote the
understanding and use of modern Standard C++ on all compilers and platforms.
Library

 We use Boost throughout our code, e.g., Boost.Spirit for parsing.


 We have our own range library, in the same spirit as Boost.Range or Eric
Niebler’s range-v3, but going further, for example, by unifying internal and
external iteration. We gave a talk about it, and most of the code is public.
 We develop our own cross-platform library to support Mac and Windows with a
single code base.
 We have our own reference-counting and persistence libraries to save and
restore whole object trees.
 We have an extensive bug reporting infrastructure. Assertions and error checks
stay in the release code, and our software automatically reports bugs to our
server. The server analyzes the bug, categorizes it and files it in a database that
all developers can access. If an update fixes the bug, the user can download the
update directly from a bug response web page.
Algorithms

 think-cell was founded on the idea for an algorithm for automatic slide layout, and
we are still on an exciting journey towards that ambitious vision. You can see our
most recent release in action!
 We developed a new algorithm for automatic point cloud labeling that allows
labels to be positioned away from the actual points.
 We developed a new algorithm for automatic column chart labeling.
 We are working with John Forrest – author of the linear solver CLP – to make his
simplex code faster on our kind of problems.
 We developed many generic data structures that are not in C++ or Boost, for
example partitions.
 Our software not only produces charts, it is also able read them back from paper.
For our chart recognition tool, we rely on OpenCV and the Leptonica Image
Processing Library.
Reverse Engineering

 We do lots of reverse engineering with the disassembler IDA from Hex-Rays, in


order to achieve things that are not possible via the documented Microsoft Office
API.
 We wrote probably the best function hooking engine out there. On each start of
our software, we patch the Microsoft Office executables in memory. Rather than
hard-coding patch addresses, we search for small chunks of assembly code to
be robust against minor changes in the executables.
About this job

We are looking for smart, creative developers with a solid theoretical background. Our
team of developers consists of those with 15+ years of commercial experience in
various fields, to fresh graduates in Computer Science, Physics and Mathematics. A
university degree or work experience with C++, together with a fresh and creative
problem-solving approach would be an excellent combination for this role. As all of our
recruitment steps are task-based, the selection is based on the skills demonstrated
during our tests.

You will work largely independently and will be responsible for the whole range of
activities when implementing a new feature. You should be able to look at a problem
from the user's perspective and discuss abstract concepts with fellow developers. We
expect each of our developers to do architecture, design, implementation, customer
feedback and bug fixing, rather than splitting these activities between several people.
We thus put everyone in control of their own work.

At think-cell, there are no deadlines, and no scheduled meetings. A feature is ready to


be released when you are convinced that you have implemented the best possible
solution. Meetings take place as needed, with only the people that are actually involved
being required to be present. At any time in the process, ideas, suggestions and
criticism from anybody in the hierarchy is welcome and is seriously considered. Your
ideas are welcome, even if they mean that we have to change a lot of code to make
things better.

We have published several scientific articles in the areas of Artificial Intelligence and
Computer Graphics and we will encourage you to do the same. We sponsor visits to
conferences and have close relationships with universities and research institutes in the
U.S. and Germany.

think-cell encourages a healthy work-life balance. We do not work at night or on


weekends, and support our staff's families with a full-time company nanny. She is
available for free when children are sick, or when you just feel like spending an evening
out.

We pay very competitive salaries and offer our developers EUR 130,000 annually
following one year of employment. If necessary, we will go out of our way to help you
relocate to Berlin, and will do what we can to help you acquire a work permit. While you
should be able to communicate effectively in English, knowing German is not required.
German language courses can be arranged, if desired.

You might also like