Our client is a company that enables people, enterprises, and cities to harness the power of location. By making sense of the world through the lens of location, it empowers their customers to achieve better outcomes from helping a city manage its infrastructure or an enterprise optimize its assets to delivering drivers to their destination safely.
Location data can reveal sensitive information about persons, which leads to a privacy breach. Collected location data needs to be anonymized for sharing, balancing the privacy level and utility of the anonymized data.
The Senior Java Engineer we are looking for will be tasked with developing one of the mission-critical components within what we call "Anonymization Library". Our Java-based library is a set of algorithms for performing use case specific anonymization of location data, including the following features:
- Loading location data;
- Assessing suitability of location data for a specific use case;
- Configuring the anonymization method and accompanying parameters;
- Performing anonymization of location data with specific method and parameters;
- Evaluating results of anonymization.
Our pipeline is Flink DataStream-based real-time data processing application on top of "Anonymization Library" deployed to our client's platform (environment for Flink and Spark jobs execution) that implements transformations on data streams (e.g., filtering, updating state, defining windows, aggregating). Apart from that, we are working on Spark Job based application for analyzing already anonymized data using ML to enhance our main algorithms.
Technological stack of the project includes but not limited:
Java 8, JUnit 5, Kafka, Flink, Spark, PostrgeSQL, Maven.
We are looking primarily for a true Software Engineer (not just a developer limited with Java stack) who is willing to learn things and apply new knowledge to solving business problems.
As a team member you will:
- Work closely with a Product Owner and Senior Engineers to implement, test and continually improve scalable Java applications and services;
- Take accountability for implementation and quality of software products as well as time and complexity estimation of own technical tasks;
- Develop software products using Agile methods, tools, and continuous delivery process;
- Collaborate with data science team other engineering teams to resolve dependencies and deliver high-quality software on time;
- Participate in design reviews, code reviews of your work and the work of your peer engineers;
- Support production issues both directly and indirectly with customers;
- Be ready to learn a lot!
- 4+ years of experience in software engineering with Java and adjacent open source technologies;
- Proficiency in Java 8-11;
- Good understanding of basic software design approaches and architectural patterns;
- Good experience with OOPS, algorithms, data structures, multi-threading, design patterns and industry best practices;
- Ability to understand and develop low-latency, high-performance backend applications;
- Experience working with CI/CD environments, understanding of Docker concepts;
- Upper-intermediate level of written and spoken English, ability to articulate and communicate clearly complex topics.
Nice to have:
- Experience with Spark / Flink is a big plus;
- Basic experience with Python is nice to have, but is not mandatory;
- Willingness to ensure the quality of your own code;
- Willingness to do some DevOps tasks along with other engineers in the team.
Higher Education: Bachelor’s Degree/Master’s Degree.