Position: Expert Golang Developer for Ciklum Digital
Company: Ciklum
Category: Golang
Experience required: 5y
English level: upper

About Project:

The awesome international team already operates in 40+ countries worldwide and is looking for the most talented people to join the team on their mission to ‘always deliver an amazing experience.’

The client is building the next generation online food-delivery platform, with data at the center of delivering amazing food experiences.

It was founded in March 2012 in Dammam, as one of the first online food ordering portals in the region, today is the food delivery platform leader in Saudi Arabia with more than 100,000 orders per day and millions of happy customers every month.

Responsibilities
Back-end development to meet customer’s business needs and implement components according to 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/update to specifications for the solution
Design and implement a set of various types of tests (unit, integration, functional, etc)
Proactive position in solution development, 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 plannings
To use high coding standards, software best practices and write highly testable, automatable and performant code over the whole SDLC

Requirements
Experience in software development for more than 5 years
Excellent knowledge in Computer Science, Computing Theory:
Paradigm & Principles (OOP, SOLID, DDD, TDD, BDD)
Database theory (RDBMS, NoSQL)
Code testing practices
Algorithms
Data structures
Architectural, Enterprise and Design Patterns
Microservices architecture, SOA
Autoscaling, monitoring, alerting approaches
Security patterns, Reverse engineering resistance, Common attacks types (OWASP)
Understanding of network interactions:
Protocols
Conventions (e.g. REST, RPC)
Authentication and authorization flows
Standards and practices (e.g. oAuth, JWT)
Excellent knowledge and experience in Golang (more than 5 years)
Practical commercial experience with:
Microservices architecture
REST API development
Web application frameworks, Testing frameworks, ORM
RDBMS (e.g MySQL, PostgreSQL, MS SQL)
Key-value storages (e.g. Redis, Memcached)
Messaging systems (e.g. RabbitMQ, Apache Kafka, Active MQ, Google Pub/Sub)
Version control systems (GIT)
Cloud computing platforms (Google Cloud Platform)
Integration with 3rd party solutions
Docker
Continuous Integration tools (e.g. Gitlab Pipeline, Jenkins, TeamCity, Bamboo)
Builders
Experience with:
Troubleshooting, profiling and debugging applications
Creation software architecture and design of complex applications, platforms, microservices solutions
Agile software processes and technologies
Code Review process
Refactoring process
Fluent or Upper-Intermediate English

Desirable
Experience in software development for more than 8 years
Experience with Ruby on Rails
Certifications on:
Cloud computing platforms (AWS, GCP, Microsoft Azure)
Understanding of orchestration and containerisation (e.g. Kubernetes, Swarm)
Knowledge in Deployment patterns
Practical commercial experience with:
NoSQL (e.g. MongoDB, ElasticSearch, CouchDB)
Experience with Search Engines (e.g. ElasticSearch, Azure Search, Apache Solr)
Provisioning tools (e.g. Terraform, Ansible)
Quality tools (e.g. SonarQube)

Personal skills
Positive attitude and proactive communication
Strong self-motivation, reliable and flexible team-player. High attention to details
Always seeking to improve processes and suggest better solutions
Working with new skill sets and continuously improving hard and soft skills

What's in it for you
Close cooperation with the client
A constant flow of new projects
Dynamic and challenging tasks
Ability to influence project technologies
Projects from scratch
Team of professionals: learn from colleagues and gain recognition of your skills
European management style
Continuous self-improvement