?

Log in

Cyril Pertsev Below are the 10 most recent journal entries recorded in the "Cyril Pertsev" journal:

[<< Previous 10 entries]

November 13th, 2016
10:28 am

[Link]

Алгоритм найма на работу
Офигеть, 10 месяцев не писал. Тут возник вопрос в ФБ и поскольку там даже свои посты-то с трудом найдешь, что уж говорить о комментариях, то решил написать сюда, ибо вопрос возникает редко, но регулярно.

Как с моей точки зрения правильно нанимать программистов/девопсов на работу:

0. Правильно составить объявление о найме. Сжато и быстро написать bid и ask. Что надо делать (на самом деле, а не всё на свете + еще немножечко) и что за это предлагается. Что делает компания и где лежат грабли (это важнее чем расписывать какая она leading и какие технологии bleeding). Грабли могут быть технологические (адовое легаси например), организационные (адский режим работы например), финансовые (от последнего раунда осталось полгода runway, и следующий раунд зависит как раз от результатов работы) и так далее. Это все равно всплывет, но тогда, когда вы уже потратите кучу времени. Не надо надеяться что вы "продадите" хорошему программисту (то есть человеку, предположительно хорошо умеющему в рациональное мышление) свою компанию. Если он может проигнорировать какие-то грабли - он придет на интервью как минимум. Если не может - то и не сможет, значит и на интервью не придет. С граблями лучше сгущать краски чем приукрашивать, верьте мне, люди.

1. Читаем резюме. Если идет поток треша, мы что-то не то написали в №0, идем обратно туда. Если говна не больше 80% с этим можно работать, но лучше оптимизировать. Я иногда получал практически 100% выход годных (когда натурально хочется позвать всех) но не знаю как это синтезировать искусственно. Быстро валидируем резюме на непротиворечивость (даты, продолжительности, технологии), потом выделяем интересные моменты (технологии, компании, обучение), причем не обязательно интересные для данной позиции, а просто знакомые лично вам, то есть что можно обсудить на интервью. Резюме русские писать не умеют, причем как не умели 20 лет назад, так и сейчас не умеют. Немного лучше научились оформлять разве что. Впрочем лучше пусть дальше так не умеют как скажем индусы умеют, когда резюме читать вообще смысла не имеет. Обратите внимание на оформление, кстати, если вы просили в ворде, а прислали - пдф, это звоночек. Если вы просили на английском, а прислали на русском или наоборот - это тоже звоночек. Это на самом деле важно, как показывает практика.

2. Если имеет смысл поговорить - договариваемся о телефонном интервью на полчаса-час, не больше. Сначала рассказываем о себе, о компании, плюсы-минусы и задаем уточняющие вопросы по плюсам-минусам, типа подходит ли вам расположение офиса или подходит ли вам удаленная работа или такой график, не важно. Предупреждаем про тестовое задание и выясняем есть ли у человека время на него и если да, то сколько. На этом этапе важно просто разговорить человека, это разминка. Ну и люди ценят что вы начинаете с себя а не тупого "расскажите о себе". Потом собственно переходим к "расскажите о себе" и просим человека изложить свой профессиональный опыт (если резюме очень длинное, то спрашиваем с какой-то точки, а про более раннее можно просто спросить "как же ты дошел до жизни такой, что стал программистом"). По мере изложения опыта читаем резюме и задаем вопросы по отмеченным местам. Поскольку эти области вам хорошо известны, то задаем вопросы, которые невозможно вычитать в интернете, если точно не знать что спросить. Про компании, технологии, языки программирования, совершенно безотносительно требуемого на данной позиции набора, ваша задача - в легком разговорном жанре выяснить степень владения "предметом" вообще, а также провалидировать резюме.

3. Задаем несколько вопросов как в №2, но по теме данной позиции и копаем вглубь пока лопата не зазвенит. Причем годятся любые вопросы, ответы на которые практически невозможно запомнить всухую. "А вы помните в каком релизе там фундепы внедрили?" Правильный ответ "что-то типа NNN или около того, но потом пришлось обратно всем откатываться, потому что оказывается что фундепы сломали тайпчекер, как оно тесты-то прошло, бгггг". Очень хорошо идут вопросы из резюме кандидата (из №2) но в приложении к технологиям из №3: "а вот вы рассказывали что вы делали ХХХ, а как бы вы сделали тоже самое, но уже с использованием YYY, которое нам нужно?". Тут люди очень часто заводятся и начинают увлеченно "проектировать" ибо чувствуют себя в своей тарелке. Вообще говоря, на этом месте иногда можно и закончить и послать человеку оффер (ну или наоборот), если повезет.
В завершение, если человек декларирует знание английского, то переходим на него и пару технических вопросов обсуждаем на английском.

4. Даем тестовое задание. Лучше иметь несколько на выбор, если ваше "основное" слишком длинное. Но в любом случае тестовое задание не должно быть больше 8 часов при требуемом вами уровне квалификации, а лучше меньше. Идеально - 4-5. Если есть возможность - не говорить кандидату на этапе №2 сколько именно вы рассчитываете займет задание. Просто отделайтесь "небольшое" и попросите его на этапе №5 оценить время самому.
Я стараюсь иметь бюджет на оплату тестовых заданий и плачу по разумной рыночной ставке, чтобы человеку было не обидно и замечено что люди даже за небольшие деньги гораздо внимательнее относятся к выполнению, включается психологический паттерн "работа". Задание даю так, чтобы его можно было сделать за отведенное время аккуратно, без висящих соплей. Стараюсь давать из существующего проекта, либо что-то новое (поскольку заплачено, то не стыдно и использовать будет) либо уже существующее (зато есть reference implementation и можно отдать на глубокое ревью тому, кто писал оригинал). Задание должно быть вырезано из существующего проекта аккуратно и не требовать экзотического тулинга и строго заданных ОС. Человек будет делать задание из дома, а там у него может не быть рабочего окружения, а просто игровой компутер с виндой. Можно дать доступ на EC2 инстанс, где уже все готовое установлено, а потом его просто убить.
Я читал много завываний что вырезать из существующего проекта небольшое изолированное задание очень тяжело, но что-то мне подсказывает что это у людей проблемы с проектированием и управлением проектом. У меня таких проблем никогда не было.
Задача должна быть реальная, делать что-то полезное, а не сортировать массив пузырьком, прости господи.

5. Ревью задания с кандидатом. Почему вы сделали так, а не иначе, что бы вы сделали если бы было больше времени, покрытие тестами, точки интеграции в "большой" проект, то есть обычная рабочая рутина. Посмотреть как человек вертится, как и что предлагает, насколько хорошо оценивает риски, и т.д. Желательно конечно убедиться что задание компилируется, работает и делает что обещано :-)

6. Мой любимый вопрос: "представьте себе что я вам дал миллион долларов и вы можете его потратить на что угодно в области вычислительной техники, что вы сделаете?". Это не решающий вопрос, но много интересного может рассказать о кандидате. А может и нет, но обычно впендюриваю. Бывало что по результатам я усердно гуглил потом и мне раскрывались разные бездны.

7. Никаких, упаси господь, задач из области компутер саейнса, вы программистов нанимаете, а не компутерных сайентистов. Если человек хорошо знает алгебру, логику, теорию категорий, графов, игр - это будет написано у него в резюме.
Никакого программирования в реальном времени на собеседовании, вообще кандидат должен при таком предложении вежливо распрощаться, это бред сивой кобылы (ну, кроме случаев когда надо в боевом режиме так программировать и это соответственно оплачивается). Никакого тестирования "стрессоустойчивости" при этом не происходит, ну что за бред.
Можно порисовать диаграммки на доске если интервью личное.
Если у вас так уж пригорает на тему "формального тестирования", то разработайте квиз с парой десятков вопросов системы "выбор из 4-5 вариантов". Но это пустая трата времени.
Никаких вопросов про пол, ориентацию, семейное положение, возраст, детей, etc. Это правонарушение и даже если вы нанимаете в какую-нибудь условную Руанду, где это не так, все равно ведите себя цивилизованно. Допустимо задать вопрос про командировки, если это требуется.

Нигде не написано в какой момент надо пригласить в офис посмотреть в глаза и поговорить. Это зависит от массы факторов, удаленности, бюджета, etc. Чем ближе к концу тем ниже риск, очевидно. Само очное интервью - это что-то из №2 и №3, но с бОльшим числом людей. Я нанимаю как с очным интервью, так и чисто удаленно и никакой разницы по качеству набора не вижу.

Набираю я хорошо, это по-моему, лучшее что я научился делать за 25 лет в этом вашем IT. К сожалению, я надеялся что научусь большему.

Пост наверное через некоторое время уберу во френдз-онли ибо я тут под своим настоящим именем и незачем давать готовую инструкцию "по прохождению интервью".

Tags: ,

(54 comments | Leave a comment)

January 30th, 2016
07:25 pm

[Link]

IoR: Internet of Russkies
А что чатик думает о том, сколько в России проживет интернет? В смысле хотя бы какая-то IP connectivity с остальным миром (если можно просунуть хотя бы UDP пакет, то дальше в общем можно справиться).
Или все-таки Жалкие Неудачники Вставшие с Колен не будут связываться и оставят коннективити для "временно не уехавших".

Tags: ,

(18 comments | Leave a comment)

October 6th, 2015
12:02 pm

[Link]

Оставлю это здесь
1. К разговору о http://kika.livejournal.com/151518.html?thread=2137310#t2137310
Простенький, но иллюстративный примерчик
https://gist.github.com/kofno/f5f34f03895e74727bc9

2. Надо написать некий сервис. Полночи читал что у мироздания есть на эту тему, нашел несколько SaaS сервисов и неплохую библиотеку от ASF (ну и гору плохих очевидно). Похоже что SaaSом обойтись не удастся, у них чуть другой юзкейз, поэтому придется писать на библиотеке, но должно быть несложно. Библиотека, очевидно (это ж ASF), на Яве, следовательно писать надо на Яве. Ну ок, с утра стою в душе и думаю - Clojure или Scala? Пытаюсь сообразить насколько придется освежать когда-то прочитанное. И только сев за компьютер до меня дошло что собственно можно же на Яве-то и написать!11 При этом на Скале я не писал вообще никогда ничего, на Кложе писал всякую муру подзаборную, чисто понять что за язык, а на Яве я как раз писал (ну, правда лет примерно 10-12 назад, ээээ).

Tags: ,

(1 comment | Leave a comment)

September 13th, 2015
02:21 pm

[Link]

Читая обсуждение http://ivan-gandhi.livejournal.com/3329246.html и ответы на мой коммент, я вдруг понял почему так тяжело идет. У меня нет никаких проблем барабанить на Erlang'е например, а Purescript, Elm или их идейный отэц Haskell (ну или ML) идет с гораздо большим трудом.

Потому что я пришел в программирование из программирования микропроцессоров. Для меня долгое время компьютер был просто гибкой логической микросхемой, которую можно было запрограммировать на последовательность действий вместо долгого и унылого паяния и протягивания проводов, а потом отладки пробником и паяльником же.

Потом как-то программирование на ассемблере превратилось в программирование на С, но компиляторы для этих микропроцессоров были таковы, что регулярно генерировали последовательности типа

mov bx, ax
mov dx, ax
mov bx, dx
mov ax, bx

Потому что так у него оптимизатор работает, видите ли. Ну или еще почему. И надо было компилировать в ассемблерный листинг, читать его и руками чистить от этого мусора, потому что иначе в ПЗУ не лезло.

А в универе учили как на Фортране ряды Тейлора вычислять, что тоже не прибавляло.

В результате я всегда когда программирую или читаю программу, симулирую в голове стековую-регистровую машину и "исполняю" на ней программу. И какие-нибудь list comprehensions, лямбды или хвостовые рекурсии отлично на такой голове исполняются. А вот стрелки и монады - почему-то нет.

Нужна книжка или статья "Функциональное программирование для недохардверных недоинженеров". Реквестирую у мироздания.

Tags: ,

(91 comments | Leave a comment)

August 11th, 2015
12:04 pm

[Link]

Need Mercurial guru
На короткий консалтинговый проект нужен subj. У нас есть заказчик, который нанял индусов, которые запороли репозиторий, создав в нем 100500 бранчей, кучу брошенных на полдороги мерджей и whatnot. Надо взять это в руки, починить, привести обратно в мерджащееся состояние, выяснить какие бранчи таки нужны, какие нет, и т.д. Почасовая оплата (you name the price). Расположение неважно, важна квалификация. Код в репозитории на яве. Классический такой кровавый энтерпрайз.

Если у вас в багаже есть ява (томкат, джбосс, вебсфера), питон, линукс и желание работать в девопсе (собственно продукт моего подразделения - это готовые CI/CD окружения для разработки страхового энтерпрайза на яве) то возможно долговременное сотрудничество. $2500-$3500/mo, либо в офисе (Питер, Минск, Одесса, Рига) либо удаленно. Трактор потенциально возможен. Командировки в вышеперечисленные офисы и штабквартиру в СФ.

Резюме и почасовую ставку - kika АТ kikap ДОТ com

Tags: ,

(15 comments | Leave a comment)

September 7th, 2014
07:20 pm

[Link]

Ненависти (к Петону) псто
Ну вот как так можно написать, а? С той стороны приезжает JSON, я его парсю, нахожу в нем 'command', который 'exit' и в отладочной печати вижу "Now exiting the hive", но не вижу "Listener exits". И это нынче один из самых модных языков для разработки.
Read more...Collapse )

Tags: , ,

(23 comments | Leave a comment)

June 21st, 2014
04:02 pm

[Link]

Key-Value store
Я что-то не втыкаю, прошу помощи зала. Я хочу хранить JSON объекты в какой-нибудь простой базе, при этом не хочу руками заводить индексы. Хочу чтобы база сама парсила объекты и если в нем есть какой-то ключ, то по этому ключу заводила бы сама индекс. То есть я скажем пишу туда { name: "Vasya", surname: "Pupkin" }, и она заводит два индекса, добавляю в какие-то объекты birthday: "02/20/1969" - она создает третий индекс. Объектов - ну максимум десятки тысяч, то есть в принципе все можно держать в голове. Хочется без тяжелого рантайма, инсталляций с триллионом prerequisites и прочего девопс-кошмара.

В принципе это наверное можно соорудить вокруг Редиски. Наверняка почти любая RDBMS с этим справится тоже. Но хочется избежать "сооружения" и не хочется таскать за собой постгресс с кучей зависимостей или мускль со своими капризами.

Можно это соорудить вокруг Дивана (Кауча), если написать внешний кауч-процесс, который будет следить за новыми объектами и добавлять индекс при необходимости. Наверное я так и сделаю, если не найду ничего лучше, Кауч хотя бы заметно проще большинства RDBMS по части зависимостей, но все равно надо лепить горбатого вокруг. Зато хорошая репликация достанется бесплатно.

Или я извращенец и никому это не надо?

Tags:

(26 comments | Leave a comment)

April 29th, 2014
08:26 pm

[Link]

"MSDOS" hardware bugs
Cause:
Due to case-insensitivity in the PCB layout tool used, the schematic nets Pb/PB and Pr/PR are actually shorted together on the PCB so they do not match the schematic.

Tags: ,

(5 comments | Leave a comment)

March 29th, 2014
11:34 pm

[Link]

О текущем моменте

Tags:

(3 comments | Leave a comment)

December 20th, 2013
01:24 pm

[Link]

Герой моего романа
Второй акт трагикомедии "И за это меня тоже не уволят": http://roem.ru/2013/12/20/badpr88041/
Первый акт был http://kika.livejournal.com/135084.html

Я там прокомментировал в стиле роема, но тем не менее вопросы актуальны

Безмозглые пиарщики это не интересно, а интересно другое: мейлру публичная компания же ведь, да? Я не знаю требований к публичным компаниям в России, но в Штатах одно из требований SOX это внедрение change control procedures как составной части IT controls (ITIL, вот это вот всё, боже как я всё это ненавижу, кровь, кишки, сделайте мне развидеть это, ищу работу в стартапе).

Ну очевидно, имхо, что для почтового сервиса ручное внесение (или изменение алгоритма автоматического внесения) чего бы то ни было в спам лист - это одно из самых серьезных изменений, которые можно внести в систему вообще. Два вопроса:
1. Есть ли аналогичный SOX'у закон в России?
2. Знают ли подписчики/покупатели MLRYY о творящемся п-це?
3. Bonus track: а если узнают?

Ну то есть неленивая особь может перевести выдачу Артамоновой в фейсбук на английский и послать (веером по базе) в техкранч, пандодейли, вот это всё.

Tags: ,

(6 comments | Leave a comment)

[<< Previous 10 entries]

My Website Powered by LiveJournal.com