SENIOR BACKEND DEVELOPER (GO, RUBY, NODE.JS)
Great understanding of how applications work starting from OS system calls, virtualization, network interaction, to how GC works in programming language.
Knowledge of basic data structures and algorithms and how they are used is a must.
Good understanding of all building blocks of large web applications: databases, load balancers, application servers, message brokers, caching, monitoring, etc.
Good understanding of network protocols and stacks (OSI, TCP/IP, HTTP, PKI).
Good understanding of DB technologies: classic databases and modern no-SQL.
80% of your work will be in Ruby, so:
Vast knowledge of Ruby and Rails is very much desired, but not a strict requirement if you know similar languages and ORMs and are ready to learn Ruby.
Experience of developing DSLs in Ruby is a plus.
You need to know «ссылка устарела», Golang or Java at a good level.
Background in C, C++ or Linux system programming is a plus.
Excellent debugging, analytical, problem solving skills.
BS/MS, or PhD degree degree in Computer Science, Engineering or a related subject; 5+ years of industry experience.
Readiness to work remotely with teams distributed across the world and timezones.
We are looking for a Senior Software Developer with experience in building high-performance, scalable, distributed applications. As a developer of core runtime engine, you will build systems, services and modules which are at the heart of our system.
Build, extend, troubleshoot, fix complex heterogeneous applications as well as small self-contained µServices.
Improve execution engine of custom third-party code (Ruby DSL, isolation, performance, new features).
Integration of data storage solutions Postgres, S3, DynamoDB, Kafka, etc. Implement advanced data encryption schemes.
Write well designed, testable, efficient code in Ruby, «ссылка устарела», Golang.
Contribute in all phases of the development lifecycle.
Provide code reviews to your teammates.
Evaluate and propose improvements to existing system.
Identify bottlenecks and bugs, and devise solutions to these problems.
Help maintain code quality, organization and automatization.
You need to understand and plan how applications will be deployed, monitored, troubleshooted in production; work closely with DevOps.