Hard skills:
Глубокое знание языка C (минимум C89/C99) и стандартной библиотеки C;
Глубокое знание языка C++ (минимум C++11/C++14) и стандартной библиотеки C++;
Опыт коммерческой разработки на языке С/С++ - от 5 лет (Senior);
Понимание алгоритмов, архитектуры и базовых принципов работы СУБД;
Опыт работы с СУБД PostgreSQL: общие знания основ баз данных, основ языка SQL, понимание базовых принципов работы СУБД PostgreSQL;
Понимание архитектуры и принципов работы современных ОС на основе Windows/Linux: управление памятью (виртуальная/физическая/swap), управление процессами и потоками, службами и фоновыми задачами, межпроцессное взаимодействие, управление вводом/выводом (блочные устройства, файловые системы, файловый кэш);
Уверенная работа со средствами виртуализации (VirtualBox, VmWare).
Опыт работы с многопоточностью и сетью (процессы/потоки, методы синхронизации, TCP/UDP, сокеты);
Опыт работы с основными системами сборки: GNU autotools, GNU make, cmake;
Опыт работы с разными компиляторами (gcc, clang, mingw64); - опыт работы с инструментами отладки и анализа кода (отладчики, санитайзеры, профилировщики, статический и динамический анализ кода);
Опыт работы с системами управления кодом (git), понимание принципов ведения веток и релизов в репозитории;
Опыт чтения чужого кода (в том числе legacy-кода), навыки проведения code review;
Опыт написания unit-тестов, правила оформления и документирования кода;
Уровень английского языка, достаточный для чтения и понимания технической документации, статей по тематике СУБД.
Soft skills:
Ответственность и умение работать в команде;
Умение сформулировать и поставить задачу своему коллеге;
Навык делиться своим опытом и знаниями с менее опытными коллегами (наставничество).
Будет плюсом:
Опыт написания расширений, разработка на уровне ядра СУБД PostgreSQL;
Глубокие знания устройства PostgreSQL: методов хранения и обработки данных, архитектуры памяти, методов хранения и построения индексов, знание принципов работы процессов и конвейера обработки запросов;
Навыки анализировать и оптимизировать сложные SQL запросы/планы запросов;
Базовый уровень знания одного или нескольких языков: Golang, Python, Perl, Shell (умение читать написанный код, умение писать небольшие скрипты);
Основные знания о контейнерах и опыт работы с ними.
Знание принципов построения и функционирования распределенных систем;
Опыт разработки ПО под высокие нагрузки;
Участие в конференциях и желание принимать участие в конференциях;
Опыт разработки под ОС Windows;
Опыт планирования в Agile, Scrum.