Position: Backend Java Developer
Company: UPPeople
Category: Java
Experience required: 3y
English level: intermediate

A Sony Group subsidiary with offices in Tokyo, Barcelona and Lausanne. We aim to create a platform to easily deploy and run AI workloads on edge devices, taking advantage of AI accelerators and to run complex distributed workloads on a cluster of IoT devices, the fog/MEC, and cloud.

About the role
The Software Engineer will develop the backend components of the company’s products such as Edge Virtualization Platform (EVP) or Simple Training Service (STS). Together, these products make up an innovative edge computing platform that brings next-generation AI onto the IoT devices equipped with various cutting edge sensors. 

We are looking for a highly motivated team player with excellent coding abilities who is willing to learn new technologies and innovate and has strong analytical, problem-solving, and communication skills, as well as the ability to take on multiple responsibilities at once.

About the company
A Sony Group subsidiary with offices in Tokyo, Barcelona and Lausanne. We aim to create a platform to easily deploy and run AI workloads on edge devices, taking advantage of AI accelerators and to run complex distributed workloads on a cluster of IoT devices, the fog/MEC, and cloud, all managed by a SaaS platform.

Responsibilities:
· Develop backend components in high quality and on schedule to help achieve company business goals;
· Design and implement scalable and efficient software components;
· Deliver fully tested software and debug and troubleshoot it when necessary;
· Deliver software that has operability, security and support as first class concerns from the design phase all the way to operations;
· Contribute to architecture designs and evaluations;
· Interact with the product team to gather requirements and understand the reasons behind them as well as our customers’ needs;
· Be an active participant in Midokura´s engineering community helping to continuously push it to higher levels of excellence.

Requirements:
· Excellent communication and analytical skills;
· Experience designing and developing distributed systems (high availability, fault tolerance, consistency, replication protocols);
· A base of software engineering fundamentals;
· Development experience in Java and/or Golang and eagerness to learn new technologies and languages;
· Cloud platforms such as Azure and AWS;
· Container and container orchestration technologies such as Kubernetes and Docker;
· Good understanding of network protocols;
· Concurrent and asynchronous programming;
· Distributed storage: Cassandra, DynamoDB, Redis, etc;
· Version control, continuous integration, continuous deployment tools;
· Experience with developing microservices architectures and everything associated with them: instrumentation, service to service communication, testing, continuous deployment strategies, etc.;
· Experience being part of a team that takes full responsibility for the operations of the software it builds;
User management, RBAC, authorization and authentication;
· API designs (REST, etc).

Will be plus:
· Experience in C and C++;
· Machine Learning libraries, such as TensorFlow and PyTorch;
· Understanding on ML Dataset management (knowledge of COCO format);
· Sensor technologies and image signal processing;
· Experiences with IoT;
· End-to-end security architecture.

What we offer:
· Very flexible remote work policy: You can choose the days you want to come to our office;
· Career Plan: biannual performance evaluation;
· Health insurance full paid by Midokura;
 ·23 holidays + December 24th and 31st;
· Exchange program: possibility to move to our office in Tokyo;
· Training credits.