Position: Middle Golang Developer
Company: Softengi
Category: Golang
Experience required: 3y
English level: upper

**Duration: long-term (1+year)**

**Summary**
The container lifecycle management platform looking for a Middle/Senior Golang Developer. With the following criteria:
- Excellent knowledge and experience in Golang (more than 2 years);
- Experience in software development for more than 2 years;
- Excellent knowledge of Computer Science, Computing Theory;
- Understanding of orchestration and containerization;
- Experience with "NoSQL" data backends;
- Location: Ukraine;
- English: Upper-Intermediate;
- Time zone: US pacific time, or at least overlapping 5 hours.

**Skills**
Go
Nice to Have
NoSQL, OOP, SOLID, DDD, Test-driven development (TDD), Behavior-driven development (BDD), RDBMS, Code testing, OWASP, RPC, REST API, PostgreSQL, MySQL

**Project description**
Developed a container lifecycle management platform intended to help application developers create, build, deploy and run their cloud-native applications with less friction, complexity, and waste. The company's platform evaluates containers using combinations of run-time, and static container analysis and removes unnecessary files, executables, and packages by observing container run-time behavior, enabling clients to quickly build applications that power every business.

**Responsibilities**
Back-end development to meet customer’s business needs and implement components according to the modern software development environment (cloud-based platforms, microservice architecture, etc.);
Taking part in the decision-making process in design application architecture, solution development, architecture, and code review;
Develop and review feature design documents and provide inputs/updates to specifications for the solution;
Design and implement a set of various types of tests (unit, integration, functional, etc);
Proactive position in solution development, and processes improvements;
Working in an international distributed team in an Agile environment;
Communicate with PMs, engineers, Architects, QA, and other colleagues and stakeholders;
Delivering the product roadmap and planning;
Using high coding standards, and software best practices and writing highly testable, automatable, and performant code.

**Requirements**
Experience in software development for more than 3 years;
Excellent knowledge of Computer Science, Computing Theory:
Paradigm & Principles (OOP, SOLID, DDD, TDD, BDD);
Database theory (RDBMS);
Code testing practices;
Algorithms & Data structures;
Design Patterns;
Security patterns, Reverse engineering resistance, Common attacks types (OWASP);
Understanding of network interactions:
protocols;
conventions (e.g. REST, RPC);
authentication / authorization flows & best practices;
Excellent knowledge and experience in Golang (more than 2 years);
Practical commercial experience with:
REST API development;
RDBMS (e.g, PostgreSQL, MySQL);
Key-value storages (e.g. Redis, Memcached);
Messaging systems (e.g. RabbitMQ, Apache Kafka, Google Pub/Sub);
Version control systems (git);
Continuous Integration tools (e.g. Gitlab Pipeline, Jenkins, TeamCity, Bamboo);
Docker;

**Experience with**
Troubleshooting, profiling, and debugging applications;
Agile software processes and technologies;
Code Review process;
Refactoring process;
Fluent or Upper-Intermediate English.

**Desirable**
Understanding of orchestration and containerization (e.g. Kubernetes);
Practical commercial experience with:
Experience with Search Engines (e.g. ElasticSearch, Azure Search, Apache Solr);
Provisioning tools (e.g. Terraform, Ansible);
Quality tools (e.g. SonarQube);
Experience with web architecture at scale (20k rpm and above);
Experience with "NoSQL" data backends (Redis, MongoDB, ElasticSearch).