What you will do
We are a team of software developers with excellence in the development of geometric modeling and computer graphics algorithms. We use sophisticated mathematical concepts, performant 3D data structures, and efficient modern algorithms. We study and implement state-of-the-art papers and contribute to the research field back. Here are some of the things we are working on and want you to work with us too:
- Precise geometric modeling (boundary representation): parametric and direct;
- Triangulation and different types of meshing algorithms;
- Voxels, point clouds, distance fields, octrees, bounding volume hierarchies;
- Collision detection, ray casting;
- Object classification, feature recognition, defeaturing;
- NURBS, Bezier, subdivision surfaces;
- Geometry simplification (decimation, wrapping);
- Interpolation and approximation with B-spline curves and surfaces.
- Boolean operations, Local operations, intersection algorithms for curves and surfaces.
- Representing CAD parts and assemblies in efficient graph structures;
Whom you will work with
We are a team of agile, multidisciplinary developers. We are young and initiative. We are passionate about programming, maths, engineering software, and superb yet simple UI. We pay strong attention to a well-structured code, testing, and continuous integration. We appreciate people focused on problem-solving rather than prooving on the infeasibility of a solution. We are on the way to create best-in-class applications targeted to win the global market. Our team contributes to the following products that you may reach out by yourself:
- CAD Processor (https://www.opencascade.com/content/cad-processor): that’s our flagship product aimed at solving a bunch of real engineering problems. CAD Processor offers a rich palette of accurate, robust, and powerful geometry editing algorithms.
- OpenCascade (https://dev.opencascade.org): that’s the open-source geometric modeling kernel being developed with the help of our team.
Besides doing commercial and open-source products, our team participates in the development of bespoke engineering software targeting specific customer’s needs. Our scope ranges from computational fluid dynamics and modeling turbine blades to conducting paid research for solving challenging problems by applying cutting-edge technologies.
The way we work
Our main product, CAD Processor, is a young software package being at a phase of growing up. Therefore we do a lot of research and experimenting towards developing new demanded features. We appreciate open-minded folks who not only do coding but have a healthy product mindset and are willing to improve things and themselves. We welcome everyone entering with bright ideas and let them try things out. We have big ambitions backed by years of successful product development. We are working very hard, but we are also making sure that nobody burns out. We respect your personal life and free time.
The skills we are looking for
- Strong computer science background: knowledge of data structures, algorithms, computer architecture.
- Experience in numerical methods, computational geometry, linear algebra.
- Strong in C/C++ (knowledge of any second language is an advantage).
- Experience with MS Visual Studio or any IDE in Linux.
- Experience with Git or any other version control system.
- English level sufficient for reading papers and writing technical specifications.
The skills we consider as an advantage
- Familiarity with geometric modeling in the application to CAD/CAM/CAE domains.
- Knowledge of NURBS curves and surfaces and the related algorithms.
- Experience in computer graphics or game development.
- Experience in writing commercial-grade software.
- Knowledge of parallel computing principles.
- Jenkins, Bitbucket, other DevOps including CI/CD.
- Proficient spoken English.
- Self-motivated, flexible team player.
- Being able to mentor/coach/train other colleagues as a domain expert.
If you doubt in suiting all the requirements mentioned above, go and contact us anyway. We are waiting for enthusiastic people to join our team.
Our interview is a highly personalized process. During the conversation, you will be talking to the team members, and you will be asked some technical questions. Also, be ready to take some homework so that we can appreciate the way you solve problems and do programming.