Our client is a company that uses location data to improve how businesses and cities run – at a fraction of the energy and environmental costs. The leading company product - world's number one location platform. It collects data from over 100 000 sources and serves 80 billion API calls per month.
In the process of Platform development, our client contributes to the various Open Source projects as well as uses Open Source products, components and libraries. It requires special process of selection, verification and accounting of the Open Source components.
The Engineer we are looking for will be tasked with developing a toolchain which helps companies and individual developers with the tasks that commonly need to be performed in the context of license compliance checks, especially for (but not limited to) Free and Open Source Software dependencies.
This toolchain is implemented as libraries for convenient programmatic use and also exposed as a command-line interface to use ad-hoc or as a part of CI/CD pipelines.
- Determination of the analyzed project's dependencies and meta-data;
- Fetching source code of the projects and their dependencies abstracting various VCS systems or other means are used to retrieve the source code;
- Set of source code scanners to detect licenses and copyrights;
- Security advisors to determine possible vulnerabilities in dependencies;
- Evaluating licenses/copyrights against preconfigured and customizable policy rules;
- Visual reports generator which helps the user to easily identify dependencies, vulnerabilities, licenses, copyrights or policy rule violations.
The toolchain is mostly developed as an Open Source project and is a part of the Linux Foundation, so the majority of the development is happening on GitHub in collaboration with contributors from various companies. Some tasks related to the integration inside the client's infrastructure are closed sourced.
The product is mostly written in Kotlin and built by Gradle with Kotlin Script as DSL. Practical practice of Kotlin is needed but it's ok if the most of your experience is Java related.
The general knowledge of the building tools for popular programming languages is welcome.
As a team member you will:
- Work closely with distributed team engineers to implement, test and continually improve Kotlin applications as well as integrate them into corporate infrastructure;
- 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 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;
- 1+ years of experience with Kotlin and adjacent open source technologies;
- Good understanding of basic software design approaches and architectural patterns;
- Good experience with OOP, algorithms, data structures, multithreading, design patterns and industry best practices;
- Experience working with CI/CD environments, preferably Github and Gitlab;
- Understanding of Docker concepts;
- Upper-intermediate level of written and spoken English, ability to articulate and communicate complex topics clearly.
Nice to have:
- Experience in contributing to Open source software products;
- Basic experience with Python;
- Basic experience with JS / React;
- Basic experience with various programming language package managers, build toolsets, VCSs and repository managers;
- 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.