C разработчик (офис, Черногория)
Зарплата
Требования
Местоположение и тип занятости
Компания
Описание вакансии
Условия работы
Нам нужен C-шник. Да, он самый, вы не поверите. С - это то, что дает работу почти всем остальным - на нем написан Python, JavaScript, Erlang (да-да, а все те, у кого в голове про Erlang возникает слово "магия", я _не_ к вам обращаюсь) и почти все остальное из mainstream, как некоторые из вас догадываются. Нужно ли мне упоминать ядра Linux, FreeBSD и школьные поделки вроде uwsgi?..
Если вы понимаете, что такое pointer и чем отличается (char*)pointer+1 от (int*)pointer+1, то вам к нам. Если вы можете писать на языках высокого уровня (любых), но вам это _не_ нравится (хотя вы это делаете прекрастно!) и вы раз за разом возвращаетесь к тому, что некоторые называют основами, то вам тоже к нам. Еще, вам может немного нравится С++, и все бы ничего, он был бы прекрасен, если бы не время сборки. Да, вы смотрели Rust, изначально он показался вам отличной идеей, но потом (вы попробовали реальную задачу) вы все поняли...
Основные задачи:
- Написание нового кода по требованиям задачи и результатам обсуждения с CTO (и командой, но после);
- Детальный анализ и написание соответствующих инструментов для получения улик проблем, с которыми может столкнуться проект (высокая нагрузка - сеть, spawn приложения, плохой frame rate OpenGL приложения - что не так, GLSL плохой или bottleneck в данных? Thundering hurd? И так далее);
- Поиск и отладка проблем, работа с существующим кодом, написанным другими разработчиками (мало, но без этого никуда);
- Разработка архитектуры приложения в сотрудничестве с CTO;
- Взаимодействие с другими под-командами: back-end, DevOps.
Требования:
- Отличное знание C;
- Отличное знание libc (strtok - это же хорошо, правда?);
- Понимание построения компиляторов и VM (P-code? bytecode? Может, JIT? Что это?);
- Знание хотя бы одного из языков высокого уровня: Python или Perl или JavaScript или PHP или какая-нибудь другая похожая фигня;
- Понимание ценности functional programming! Да, в этой связи blocks, предложенные Apple надо знать (как происходит capture и т.д.);
- Понимание ООП (а compositing лучше, да? Правда?);
- Кристальное понимание, как работают sockets (в полной гармонии с select/poll/epoll/kqueue);
- SYN/ACK!?
- Понимание разницы между WebSockets и... sockets, хотя это почти оскорбление в купе со строками выше, да? Но все же;
- Знание UNIX подсистем, в особенности SysV IPC;
- Опыт написания parsers (хотя бы flex/bison, но понимание, что такое state machine и как бы это делалось "руками");
- Все то, что вы хранили в загажниках своего ума! Вас заставляли переходить на Python (или вставьте что-то другое, что вас бесит), но вы говорили им, что вы за то же время и эффективнее решите ту же задачу на С, и вам отвечали "да кто же это потом будет обслуживать"... И вам было нечего ответить (да, грустно);
- Стрессоустройчивость (умение спокойно и содержательно объяснять своим коллегам, которые не знакомы с С проблемы их подходов).
Приветствуется:
- Знание и опыт C++;
- Знание и опыт с OpenGL;
- Опыт с написанием ИскИнов (да, если это NN, то это совсем хорошо, но хотя бы игровой бот с поиском SP через алгоритм Dijkstra тоже считается);
- Win32 API (на нем НЕ надо будет у нас писать 99%, но опыт кое о чем говорит);
- Contributions to open source projects;
- Знание git (и как он работает ;), хаха);
Мы предлагаем:
- Вам, как C-шнику, уважение коллег во причине кристального понимания всего, что они делают (что бы они не делали - кроме, может быть, математики, использующейся в OpenGL - это все перекладывание данных из одного места в другое, да?). Однако, вы должны доказать это на практике;
- Интересные проекты;
- Оплачиваемые отпуска;
- Двойную почасовую оплату согласованной переработки сверх рабочего времени (OVERTIME);
- Возможность работы в нашем офисе в Черногории, фактически, в раю на берегу Адриатического моря (поможем с переездом вам и семье).
Бонусы
До моря 10 минут пешком. Природа здесь просто прекрасна. Размер зарплаты по опыту/знаниям (если хорошо знаете все из списка и чего-то, чего в нем нет и есть опыт, то верхняя планка). Рост по производительности.
Дополнительные инструкции
Для интервью необходимо выполнить тестовое задание.