Think Cell

Since 2002

Company size: 40

Think-cell is a kind of company developers truly like. In fact, of our now 20 full-time developers, in 15 years of think-cell, only one ever quit his job. We are highly profitable, so we can give you the time and resources to write beautiful code. There are no meetings. All management (the two co-founders) are computer science PhDs, so no demands from people who don’t understand the trade.

Specialization: IT Service (outsourcing/outstaffing)

Posted on 04 Mar 2020

Status: Active

C++ developer

Candidate level: Senior

Offered Salary: $6000-10000



Vacancy Details





Team size


Job type

Full Time office

Project category

Ongoing development

Relocation package


Required english level

C1 (Advanced)

Probation period

3 months

Social package


Project description

We are working on revolutionizing the way presentations are made, reinventing the user interface and largely automating the slide layout. At the same time, we integrate this product into Microsoft Office, which means reverse-engineering and disassembling the innards of Microsoft’s code. And we do this all based on our very large, home-grown C++ library, which we have the liberty to perfect along with the rest of our code. think-cell is the only German company funding a C++ ISO committee delegation, so there is a good chance that components we invent will find their way into the standard.

• Location: A beautiful office in the middle of Berlin

• Language: fluency in English is mandatory, German is a plus

• Years of experience: entry level or senior

• Studies: usually computer science but not only

• Full-time position in Berlin, no remote or freelance work

• You would work in a team of 20 developers directly with the CTO

• Projects you might work on

• We will support with the relocation and visa process if needed

• Work life at think-cell

Vacancy description

Technical requirements:


• 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++.

• Naturally, we use C++11 features like lambdas and rvalue references throughout our codebase, and have switched to C++17 where our compilers support it.

• 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.


• 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.


• 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.


The office is beautiful and located in the middle of Berlin, there is breakfast, drinks and snacks available at the office every morning, there is a shower to use in case they do sports in between (several run or even go to work by bicycle), we support to find a nanny for families special occasions (when a couple needs a night out once in a while or when a kid gets sick) and a summer as well as winter party. For the summer party employees can invite up to 10 friends and/or members of their family. If the candidate is successful in the recruitment process other benefits can be negotiated by the candidate directly with one of the co-founders.

Additional information

Why it is so important for the C++ developer to have such a high level of mathematics and algorithm


The reason why think-cell has no comparable competitors in its field regarding its product and as a successful business, is because of the high quality of its development. It is important also because our product takes a lot of reverse engineering within Microsoft Office. The team is also working on revolutionizing the way presentations are made with a new extension called layout that includes AI, pretty exciting things to work with.

What could be the typical example of tasks/ projects dedicated for our C++ Dev.?

At think-cell an example of tasks they will do is the following: 1) Come up with a solution towards a feature request or an idea that nobody knows how to present yet, that might be a concept or in code; 2) Explain the solution you propose to our Technical Director or colleagues who will make questions, try to find holes to continuously learn. Also, iterate, improve what you or others developers came up with. All our developers program in C++ and they discuss things like concepts and code, conceptual design, usability and user experience. What they don't do (and as expressed by a Senior Developer this is as important as what they do) is not to have scheduled meetings, no time devoted to organizational stuff, documentation and no tracking of time. In general, they are not hired with only one project in mind, but they discuss their tasks and projects with the Technical Director, according to where their interests and skills meet what is needed by the product, team and company. You can see a few projects in our

What are the requirements in terms of previous studies and years of experience?

We welcome candidates of the most various fields since we have developers that are usually Computer Engineer majors but also Physics for example. As long as you have the skills and pass the recruitment process, we are open to hiring candidates that are new to the job market or candidates with seasoned experience.

What is the exposure of C++ dev. to the external Clients?

There is none since there is a support team that works closely with the clients. However, they are much closer to the client than other companies, with only one "layer" of people in between, instead of 3-7 "layers" or intermediaries.

What does the relocation package include?

To relocate a candidate we don't have a set package. Instead of a one-fits-all package, one of our co-founders and CEO speaks directly to the candidate about his/her needs to relocate and works to provide it. In general it may include support moving and accommodation when they first move to Berlin. I know that we don't say no if it's a reasonable request as I mentioned before. If the candidate has a family, we suggest first that they move alone to Berlin to try first and then move the family when they are more con?dent in wanting to stay. We support them also with their VISA issues if they need to apply for one.

What is average gross salary of a C++ developer?

It is 75.000-120.000€ a year as a range for gross net salary, depending on the experience and educational background, etc. of the candidate. After the first year they are offered 120.000€ annually.

Is there a possibility of working remotely?

No, we prefer to work at the same office. Since there is a nomeeting policy, it's good to have all colleagues nearby during office hours. However, these hours are flexible if the developers need to run an errand, they have to simply notify the others through the calendar. The office is usually open from 9:00 to 19:00 and closed on weekends, which means no overtime and no working on weekends.

Will they work in a team or alone?

In general, developers sit in offices with one or two other developers. All developers offices open the doors to a great hall. They don't work in teams necessarily, though it may happen.

What is the team size?

We are about 40 workers at think-cell, though 20 are developers.

How international is the team?

Nationalities at our company are varied and up to 17, including German, South African, Italian, Argentinean, Russian, etc. We are working on an internal demographics poll to answer to this in more detail. Unfortunately there is no remote work opportunity. We prefer to work at the same office. Since there is a no-meeting policy, it’s good to have all colleagues nearby during working hours. However, these hours are flexible. If the developer needs to run an errand, he can simply notify the others through the public calendar. The office is usually open from 9:00 to 19:00 and closed on weekends, which means no overtime and no working on weekends.