Position: NodeJS Engineer (Middle/Senior)
Company: FreySoft
Experience required: 3y
English level: upper

**Required skills:**
— At least 3+ years of work experience with commercial projects;
— JavaScript (ES6) or TypeScript knowledge;
— Strong knowledge of NodeJS frameworks (any of NestJs, Express, Koa, etc.);
— Experience working with APIs (Swagger, OpenAPI, REST, GraphQL, gRPC, SOAP) and complex apps;
— Strong understanding of microservice architecture;
— Strong understanding of Continuous Integration, Continuous Delivery, and GitFlow;
— Exposure to microservices, Serverless framework, and other techniques for creating loosely coupled architectures (e.g. messaging, event sourcing, CQRS);
— Experience with UnitTests;
— Experience in Docker / K8S;
— Team development experience;
— Good spoken and written English.

**It would be a plus:**
Experience in Java

**We offer:**
— The possibility to come up with ideas, be listened and see them implemented;
— Fully support from top/middle level management for ideas implementations;
— Interesting & challenging projects that truly make an impact at the company;
— Flexible working hours;
— Office or remote;
— Casual work environment;
— Medical Insurance;
— Paid vacation, sick days, and Ukrainian national holidays;
— Corporate events and activities.

**What are the job responsibilities?**
— Working with the product team to understand, scope, and advise on the best approach to achieve a business objective confirming the direction around approach and consistency, leading technical discussions, and supporting peers.
— Lead and advise on entire projects, contributing to design and implementation of the overall application architecture, contributing hands-on to new and existing code bases.
— Integration of user-facing elements developed by front-end developers with server-side logic, building reusable code and libraries for future use.
Optimization of the application for maximum speed and scalability whilst ensuring security and data protection.
— Discuss and design new systems from the ground-up with strong opinions about software and design principles Develop new and maintain existing systems Write documentation to record and explain decisions around architecture and design.
— Write unit integration tests as a first-class citizen Perform code reviews and participate actively in discussions, even around technologies you may not be an expert in.

Briefly:
— Design architecture of the payment system from scratch;
— Implement MVP and convert it to the final product;
— Build robust, lasting, and scalable application;
— Pragmatic and considered when selecting and introducing technologies into a solution;
— Evaluate the technical tradeoffs of every decision
— Developing REST API.