We are on the lookout for an experienced and ambitious Staff Backend Software Engineer. In this role you will use your skills and knowledge to help us set technical direction and develop our distributed system at scale effectively. We are looking for a self-driven and proactive specialist who has worked on bigger production systems and is able to use this experience to influence development.
At Neptune, we have a quite ambitious goal of becoming an MLOps standard for data scientists worldwide. Our platform is a metadata repository built for research and production teams that run multiple ML experiments. But remember – you do not need to have ML skills, our customers have this need.
We design Neptune to be extensible, flexible, and lightweight to ensure it fits any workflow and keeps up with this fast-paced field. Some of the things we do are pretty run-of-the-mill engineering work (REST, SQL, NoSQL), but often, we stumble upon a bigger challenge! After all, how many companies have implemented a custom scalable time-series storage moving data between various underlying storages?
Be sure to check our ultimate guide for candidates to the Neptune Engineering – easy to scan all-in-one PDF showing how we work, what are the challenges, how the recruitment process looks – and more.
Check now – the ultimate guide for candidates to the Neptune Engineering
Our tech stack:
- Java (+ Spring), Scala, Python
- Kubernetes, Helm, containerization
- Google Cloud
- MySQL, Elasticsearch, Kafka
In this role you will be:
- leading building larger, strategic features of an application that is:
- Scalable: we aim to be the standard for data scientists and ML engineers around the world – there’s quite a few of them;
- Portable: we offer both SaaS and on-prem installations. There are times when we need to be very lightweight;
- Flexible: Machine Learning is a very fast-paced field; we often need to adapt;
- cooperating with other Backend Software Engineers helping them move forward when needed,
- actively working with others at Neptune – helping to design new features,
- defining our application’s architecture,
- driving the agenda – actively setting priorities of technical initiatives, frequently by example implementing more complex ones (this is a hands-on role).
- You have 10+ years of experience in Software Development of distributed systems.
- You are proficient in Java and have solid experience with JVM-based applications (hands-on role).
- You have a working knowledge of Kubernetes and containerization in general; you understand its concepts.
- You are an expert in choosing proper technology to store data (e.g. SQL vs. NoSQL vs. distributed file stores; scalability vs. reliability vs. latency).
- You perform an excellent code review.
- You are proactive – you can influence, discuss, research, decide without supervision.
- If you have experience with Scala and/or Python, that’s great.
- You’re always hungry for more knowledge – learning new things is natural for you; you do it constantly.
- Knowledge of Machine Learning concepts would be awesome – but is not a must.
We can offer:
- Fully remote work and flexible working hours;
- The thrill of building a world-class product for some of the most innovative people on earth;
- Startup atmosphere and a lot of autonomy;
- Competitive base salary (inflation-indexed) and opportunity to participate in the Employee Stock Option Plan;
- 20 paid service-free days per year;
- Co-financing of Multisport card, private medical care, and free lunch if you ever happen to be at the office.