Java Algorithms DeveloperSoftware / IT Medior Noord-Brabant
In the Applications Algorithms group we are responsible for the development and implementation of the common algorithms that are then used by other teams to develop applications to optimize the production process of our customers. We are a group of experts on mathematics, algorithms, numerical methods and software engineering.
What do we expect from you?
- Master in computer science, mathematics, or relevant.Experience
- Java SE programming skills on expert level, at least 3 years experience with software development in large industrial environments / projects;
- Experience with scientific/mathematical programming;
- Good knowledge of algorithms and data structures in computer science;
- Good knowledge of linear algebra, preferability also on optimization techniques and control modeling;
- Understanding of the to-be-implemented mathematical algorithm and make solid java design to realize the algorithm;
- Experience with OO design principle, UML diagrams, design patterns;
- Experience with testing of large systems, understand the concept of unit, component, and system level testing;
- Experience in Continuous Integration, and with state-of-the art software engineering tools (like Maven, Git, and Atlassian stack);
- Extensive knowledge of profiling and debugging;
- Preferably have Matlab or other scripting experience of algorithms;
- Preferably have experience python and Julia;
- Preferably experience in optimizing algorithms for run-time performance and experience with developing for the Apache spark engineSkills
- Team player, supporting and challenging colleagues to continuously build a stronger and better performing team;
- Excellent verbal and writing communication skills;
- Analytical and abstract thinking;
- Result oriented;
- Able to coach other engineers.
Collaborate with our experts developing or improving algorithms / mathematical models and contribute to the development from a software point of view;
Create a solid software design for algorithms or parts of it, where speed and memory usage should be optimized;
Write quality code that is easy to test and maintain;
Define, automate, and execute tests on unit, component, and integration level;
Write clear documentation for design and qualification;
All of the above in close collaboration with team members, working closely together.