We are looking for smart, creative developers with a solid theoretical background. 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.
We have 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.
We encourage 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 really competitive rise 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.
Even more details on our DevOps
We use Visual Studio
with the MSVC compiler on Windows and Xcode
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?
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.
After reading this, if you feel this describes yourself as a professional..pleasy apply!
We are looking forward to talk to you.