Intersog® is a Chicago-based provider of software engineering, custom development, and IT consulting solutions. We empower businesses by creating dedicated software development teams that operate either locally in North America or from our R&D centers in Ukraine.
Our client is looking to transform experiments into executable instructions for Workcells and devices. This is why we are looking for a dynamic Lead Software Engineer to join our team.
You will lead a talented team of engineers while collaborating with cross-functional departments to deliver high-quality solutions that meet our clients' needs.
If you're passionate about technology, leadership, and creating user-centric applications, we want to hear from you!
Responsibilities :
Java Backend Service Development : Design, develop, and maintain scalable and resilient Java-based Kubernetes services using the Spring Boot framework and its code generation capabilities.
Leverage Spring's robust features, such as dependency injection, data access, and web development, to build efficient and maintainable microservices.
Microservices Architecture : Design and implement new microservices, and enhance existing ones, adhering to best practices of microservices architecture.
This entails utilizing message-based communication systems and effectively leveraging SDK clients or APIs for inter-service interaction.
Additionally, employ efficient data querying techniques to retrieve information from diverse data systems and ensure transactional data integrity to ensure no instruction is lost.
- Akka Actors and Distributed Systems : Design, Build, and test execution logic partitioned by akka actors. Develop new distributed systems designs as needed to support the volume of experiment requests in a laboratory.
- Constraint Solvers : The core capability of the Orchestration Layer is solving a scheduling problem. The scheduling problem is created by an input experiment and the available inventory in a target laboratory.
Choose the best algorithms and frameworks for the experiment request volume and the quantity of workcells and devices present in our client laboratories.
Execution Engine : Computing the execution plan for an input experiment is the first half of the Orchestration Layer. The second half is managing the execution of said plan.
Design, Build, and test the execution engine in the Orchestration Layer.
Workcell Software Expertise : Gain a deep knowledge of the execution models and access patterns for Workcell Software Systems.
The Orchestration Layer does not communicate directly with Workcell Software Systems but must generate execution plans and execute them in accordance with the current capabilities of Workcell Software Systems.
Mentoring and Vision : As a Lead Engineer the Software Engineer, Orchestration will Set the technical direction, mentor the software engineers, and ensure the code quality for the Orchestration Layer team.
Also provide recommendations about team construction, interfaces with adjacent teams, and staffing to the Director of Software Engineering.
Requirements
- 7+ Java based backend services
- 5+ Microarchitecture principles, Kubernetes and Docker based services
- 5+ Messaging frameworks, SQL and non-sql data storage systems, data layers and efficient data query techniques
- 3+ Distributed systems, specifically Akka actors
- 3+ CI / CD environments, using tools (Jenkins, Argo Workflows, Github actions)
- 2+ Constraint Solvers for Scheduling problems(i.e. IBM CPLEX or OR-Tools)
- 2+ Working with 3rd party API’s. Adept at RESTFUL concepts. Good understanding of the HTTP / S protocol and standard conventions.
Experience with api documentation tools (Swagger)