«Пришлите фрагмент вашего кода» и NDA

Для того, чтобы проверить навыки кандидата, на собеседовании ему часто дают тестовое задание (домой или прямо в офисе). Есть и другие варианты, когда, например, человека берут с собой на сессию парного программирования или же проводят устное собеседование, без какого-либо написания кода. Разве что попросят нацарапать пару блок-схем а-ля «схематическое решение».

Тестовое задание и трёп — две крайности, у каждой из которых есть свои преимущества и недостатки. Задание требует времени и усилий, чем может отпугнуть в меру ленивого кандидата (или того, который ценит свое время), тогда как трёп позволяет в лучшем случае составить общее представление о кандидате и понадеяться, что код он пишет не хуже, чем об этом говорит.

Покажите, пожалуйста, ваш код

Чтобы не впадать в эти две крайности, был придуман срединный вариант — «Пришлите ссылку на github» или «Покажите нам свой код, который вы уже когда-то написали». Или же, как мне сказали в одной французской конторе: «Show us the code which you are particularly proud of» — работодатель, вероятно, хотел не только посмотреть на «сливки», но и убедиться в том, что ты кодер от бога, у тебя есть любимые куски кода, которые ты бережно хранишь и смотришь на них, когда всё плохо.

Это честный вариант — ты не тратишь время на высосанные из пальца тестовые задания, да и твою репутацию не подвергают сомнениям. В этом ключе можно понять опытных и уверенных в своих силах разработчиков, которые игнорят те предложения о работе, где требуется выполнить тестовое задание или решить пару идиотских головоломок, которые не имеют ничего общего ни с работой, ни даже с жизнью. Но и у этого способа проверить квалификацию кандидата есть свои минусы.

Во-первых, не у каждого разработчика хранится код, который, к тому же, не стыдно показать. Даже не у всех есть Github. Во-вторых, не всегда по куску кода можно понять уровень разработчика — вдруг ему кто-нибудь помогал? Что если он потратил на написание вагон времени? В-третьих, вполне может быть, что человек соблюдает work-life balance и работает только в рабочее время, а в остальное занимается вещами, не связанными с написанием кода (допустим, если для него кодинг — не хобби). Что ему показывать?

Нарушьте, пожалуйста, NDA

Если домашнего кода нет, остается одно — показать тот, над которым трудился (или трудишься) на работе. Часто это значит нарушить соглашение о неразглашении (aka NDA), которое нередко действует ещё 2-3 года после увольнения. То есть, если хочешь показать свои наработки, нужно нарушать NDA. И даже отвечая на безобидный вопрос «Расскажите о вашем предыдущем проекте», ты тоже рискуешь нарушить соглашение! Если же скажешь HR’ам: «Так мол и так, я подписал NDA, поэтому показать код не могу», то они либо ставят в игнор, либо обижаются.

Таким поведением они не только подталкивают человека к нарушению договора (пускай и гипотетически), но и могут подставить третьих лиц. Был у меня случай, когда бывший сотрудник после увольнения «спохватился» и попросил переслать ему кусок написанного им контроллера. На вопрос «зачем» ответил, что ему нужно показать его для трудоустройства. Выходит, если я пересылаю ему этот код, то отвечаем уже мы оба: я — как действующий сотрудник, он — как бывший, но не дождавшийся истечения срока действия NDA.

Стоит ли игра свеч? Или есть смысл попридержать перо, да не подписывать NDA, как это, например, делает разработчик и CEO Маркус Пави, объясняя это тем, что:

Historically, ideas haven’t counted for much in the grand scheme of things, it is execution that matters. [...] Most NDAs in are harmful to my business and most importantly bad for my clients.

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

Ущербность большинства NDA

Во-первых, нужно хорошо постараться, чтобы доказать, что была разглашена именно коммерческая тайна. Например, есть нюансы, связанные с тем, что не каждый тип информации можно считать конфиденциальным. Да и подобная информация должна иметь «защиту от дурака» — чтоб какая-нибудь уборщица не могла прийти с флешкой и выкачать её. В противном случае это как бы и не коммерческая тайна.

Во-вторых, в NDA порой указываются практически невыполнимые вещи вроде «не использовать полученные на проекте знания на проектах других компаний в течении пяти последующих лет» или «не рассказывать о проекте третьим лицам». Вы там атомную бомбу изобретаете, или очередную «уникальную» соцсеть для питомцев?

Да и что такого ужасного случится, если конкуренты увидят один класс из вашего проекта? Придумают бизнес-план, привлекут инвестора, допишут остальные 99% проекта, запустят кампанию по продвижению и поднимут невиданную прибыль? Вряд ли. (Если же им это удастся, то дайте им денег! Хоть кто-то у нас умеет работать).

Что касается кражи идей, то Facebook не был первой соцсетью, как и Windows не был первой операционной системой. Едва ли не весь путь Apple и Microsoft — история взаимного воровства, от которой выиграл конечный потребитель. В конце концов, и многие разработчики — бессовестные воры, которые «крадут» решения из книг, бложиков и форумцов. Только это называется обмен знаниями, чему как раз и противоречат принципы NDA.

Одной идеи для создания чего-либо — мало. Один «засвеченный» при трудоустройстве файл — ничто. Поэтому есть смысл если не полностью отказаться от соглашений о неразглашении, то хотя бы предельно ограничить сферу их применения, оставив пространство на случай нужды продемонстрировать свой код.

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

Что делать работодателю и HR’ам

Предлагайте кандидатам больше вариантов. Не хотите показывать код? Держите тестовое задание. Не хотите заданий? Приезжайте к нам сделать code-review или поработать в паре с нашим разработчиком. Не хотите никуда ехать? Давайте по Skype. Тошнит от кода? Вот-с логические задачки.

Если человек отказывает вам на основании того, что подписал NDA, то наоборот заслуживает большего уважения, так как соблюдает соглашения. Значит, наверное, и работая на вас он будет вести себя так же корректно.

Поэтому остаётся молиться, чтобы NDA канул в небытие, как условность-атавизм, ограничивающий свободу выражения личности. И держим курс на Элона Маска, который щедро пожертвовал в open-source все патенты Tesla Motors. Пусть будут публичными не только хорошие идеи, но и код, который не стыдно показать. Ведь всё равно никто с ним, скорее всего, ничего толкового не сделает (как это обычно бывает с «идеями на миллион»). Why so serious?

Похожие статьи:
У Вашей профессии нет перспектив, и Вы хотите изменить свою жизнь, перейдя в IT-сферу? Тогда курс по тестированию ПО, как наиболее...
Здравствуйте, уважаемые читатели! Как вы относитесь с AMOLED дисплеям, PenTile и «грязноватым» цветам? В комментариях не забудьте...
Компания Google официально объявила о доступности в России для Карт Google схем зданий, благодаря чему можно быстро найти нужный...
В сети немало споров и дискуссий на тему того, кто должен проводить собеседование с разработчиком — HR или технический...
[Об авторе: Артур Богданов — в прошлом сооснователь drucode.com, сейчас занимается независимой разработкой игр. О текущих...
Яндекс.Метрика