×Закрыть

«Пришлите фрагмент вашего кода» и 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?

LinkedIn

Лучшие комментарии пропустить

А ще треба на запит

Пришлите фрагмент вашего кода
відповідати, пришліть будьласка свій код теж, бо мені цікаво з яким саме кодом потрібно буде працювати.
Держите тестовое задание
"
Надайте тестову зарплатню?

Юра наконец-то запилил годную статью. Плюсую

Тестовое задание и трёп — две крайности, у каждой из которых есть свои преимущества и недостатки. Задание требует времени и усилий, чем может отпугнуть в меру ленивого кандидата (или того, который ценит свое время), тогда как трёп позволяет в лучшем случае составить общее представление о кандидате и понадеяться, что код он пишет не хуже, чем об этом говорит.
Предлагайте кандидатам больше вариантов. Не хотите показывать код? Держите тестовое задание. Не хотите заданий? Приезжайте к нам сделать code-review или поработать в паре с нашим разработчиком. Не хотите никуда ехать? Давайте по Skype. Тошнит от кода? Вот-с логические задачки.
Налицо полное непонимание процесса приема на работу и целей этого процесса.
Тестовое задание (ДЗ) и трёп — это 2 глупости, если вы не умеете их готовить.
Если вы способны определить по ДЗ подходит ли вам человек, то вперед ДЗ, если сделал, то испытательный срок (без него я не знаю как), и потом сотрудничество закрепленно (или нет) окончательно. Я еще ни разу не встречал чтобы по одному ДЗ (длинной менее 20 часов :) ) принимали на работу, посему есть вероятность того что ДЗ мало кто умеет готовить (если вообще такие есть).
«Треп». Ну тут аналогично, если собеседование превращается в треп, то вы не умеете его готовить. По моему опыту, общую адекватность можно проверить за 10-20 минут __осознаного общения__ на профессиональные темы; еще за 30-60 возможно оценить применимость человека к задача. Тут есть нюанс — надо понимать зачем вам человек.
Проверить общие навыки кодирования можно одной-двумя задачками на 5-15 минут (такими чтобы их можно было сделать на бумаге), прямо на собеседовании. Сумарно с правильными вопросами (и внимательно выслушаными ответами на них), вы можете сделать выводы о том какой код будет писать человек. Да, есть вероятность что зная как у вас проходит интервью, человек может «подготовится» и создать видимость, тут он сам себе злобный буратино, ибо он с большой вероятностью провалит ИС.
.
Более практическая часть:
1) Магический вопрос: Что __именно вы__ делали на предыдущем проекте? Какие задачи решали?
2) Магическую задачку не расскажу. Но вот пример второй задачки (специфичной для джаваскрипта): реализовать функцию namespace(’some.namespace.my.moduleName’, module), module может быть как функцией, так и сложным объектом. В результате ваш модуль должен быть доступен как глобальная переменная window.some.namespace.my.moduleName.
Во-вторых, в NDA порой указываются практически невыполнимые вещи вроде «не использовать полученные на проекте знания на проектах других компаний в течении пяти последующих лет» или «не рассказывать о проекте третьим лицам». Вы там атомную бомбу изобретаете, или очередную «уникальную» соцсеть для питомцев?
Это просто бездумная калька западного мира, где работают над cutting-edge technologies, а не над багфикс проектами. Например, сейчас в автомире работают над концепт карами 2019-2020 года, технических проблем существует множество, так как каждый год планка поднимается всё выше и выше. Естественно, человек знающий много, да и ещё на столько лет вперёд, будет на расхват.

116 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Фрагмент кода, вырванный из контекста, и без привязки во времени не имеет смысла и напоминает ответ «42». Также за бортом остаются ограничения проекта — например лицензия на какие-то крутые библиотеки, требования к форматированию (пробелы vs табы), checkstyle и т.д.
То что автор статьи предлагает нарушить NDA — минус ему в карму.

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

В большой корпорации, конечно, у непосредственного начальника вряд ли будет достаточно прав, чтобы снять NDA даже на пару второстепенных файлов.

боюсь повторится но если до сих пор у когото проблемы с кодом который можно показать — идите в опенсорс проекты и учавствуйте в их разработке. В моей практике много времени на это не надо , 15-30 мин в день хватит чтобы начать.

вот пример работы студента — github.com/...ommits/master?author=MEZk , есть на что посомтреть и на чем пройтись на собеседовании и узнать это его старый стиль или он действительно понимает почему так надо писать. И всегда приятно поговорить с человеком который исправил тот самый назойливый фолс-позитив который ты недавно поймал во время написания кода, .... .

Пользуясь случаем пришлашаю поучавствовать в разработке checkstyle.sourceforge.net (github.com/...ckstyle/checkstyle/issues)

ты разрабатываешь чекстайл? респект! пользовались им, очень полезная тулза

Тошнит от кода?
Представил рабочее место )

Ніколи не парився з приводу відсилання коду і підписання NDA. Може тому що ніколи не працював над чимось унікальним. :) 100% фічерів які просили у мене замовники це — зробіть як ось тут. Тобто десь це вже вигадане і замовник просить зробити так само. Тому смішно коли вони ще і просять NDA підписати. Скоріш за все NDA — це для замовників просто така собі страховка від того, що ти тупо скопіюєш їх проект і продаси їх конкуренту, чи сам відкриєш аналогічний проект і якимось чином перетягнеш до себе їх клієнтуру/аудиторію. А усі ці використання елементів коду — це маячня і ніхто не буде подавати ніколи в суд, за те що ти зробив публічним якийсь клас, чи якийсь кастомний плагін для jquery. :)

А усі ці використання елементів коду — це маячня
Згоден. Якщо дотримуватись пункту про код, то вийде що й
var i = 0;
маєш право написати лише раз за життя
Если же скажешь HR’ам: «Так мол и так, я подписал NDA, поэтому показать код не могу», то они либо ставят в игнор, либо обижаются.

Нормальний рекрутер в жодному разі не образиться. А про ігнор — так це зовсім сміх: ігнорити розробника тільки за те, що він чесно дотримується контракту — безглуздішої сентенції я не чув.

работодатель, вероятно, хотел не только посмотреть на «сливки», но и убедиться в том, что ты кодер от бога
Работодатель, вероятно, не знал как определить знания и навыки кандидата, и решил глазами посмотреть на что-то эстетическое...
Найти что-ли свой любимый кусочек кода на ассемблере для процессора Z-80 конца 80-х годов? И показывать его, поместив распечатку в рамочку. А че? Я им горжусь!
Что? У вас в компании свой code style? И язык не ASM а JavaScript? Какая досада! А покажите мне, кандидату, ваш любимый кусочек кода! Позвольте мне угадать, почему вы им гордитесь? Тоде ведь метод, а? И не напряжный для обеих сторон.
Задание требует времени и усилий, чем может отпугнуть в меру ленивого кандидата
Вот это — таки да. Если кандидат заинтересован — он потратит время и приложит усилия. К тому же можно дать домашнее задание, и результаты рассмотреть через некоторый период. И такой метод работает для мотивированных кандидатов, которые с интересом рассказывают о том как и почему именно так они реализовали задание.

Юра наконец-то запилил годную статью. Плюсую

И был неузнан по заголовку. Мутирует...

Навіть по заголовку не впізнав)

Я думаю, що у більшості країн (за виключенням деяких штатів США), NDA та інші договори припиняє дію як тільки вам припиняють виплачувати з/п або компенсацію.

В NDA, як правило, прописується скільки часу діє документ навіть після припинення дії договору (контракту) працівника із компанією.

Писати можна, що завгодно, але більшість судів (за виключенням деяких штатів США) визнають договір таким, що припинив дію, з моменту припинення виплати компенсації.

Саме тому в особливих випадках люди сидять пару років на з/п, але не працюють.

Для джунов в таком случае нормально как раз с нуля написать свой кусок кода. Код с проекта не годится, даже если никакого NDA нет и в помине — потому что ни в одном нормальном проекте код джуна без контроля более опытных разработчиков не уйдет в продакшн. А раз этот код выверяли на ошибки другие — это уже не код тестируемого джуна.
Написать простой класс, ну или там несколько, под любую прикладную задачу, на пару сотен строк. Если сложно выбрать тему — можно открыть хабр или еще чего-то для вдохновения.

Мы живём в эру вранья, к сожалению. Врут или привирают в резюме, например. Иногда можно даже найти советы так делать. А рекрутеры в свою очередь пишут стандартные тексты про молодую развивающуюся компанию и интересный проект. И всех это устраивает. Сложно будет новичку, который при такой ситуации будет показывать свой собственный код, не проверенный кем-то.

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

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

я бы никогда не посылал код с работы, и даже не из-за NDA — а потому что продакшн код как правило исключительно уродлив, и идет вразрез со всякими дизайн паттернами, SOLID и прочими clean code правилами.
что можно посылать — собственные проекты , или код тестовых заданий сделанных ранее для других работодателей :-)
кстати именно поэтому их и стоит иногда делать — у тебя появляется код который ты стараешься сделать чтобы произвести впечатление, а не тяп-ляп и в продакшн

у тебя появляется код который ты стараешься сделать чтобы произвести впечатление, а не тяп-ляп и в продакшн
продакшн код как правило исключительно уродлив
То есть Вы так и говорите — в продакшене я пишу говнокод?

В данный момент у нас код кодогенератором из DSL создается, понятно что он уродлив — огромные ветки ифов и свичей. И что там показывать?

То есть Вы пишете на DSL, который генерится в Джаву? Sculptor какой-то чтоли?

Самописная хрень

Все пишут говнокод время от времени. Мало кто признается. Зависит от мотивации и сроков. Если сроки зажимаются — будет говнокод, если проект надоел — будет говнокод, если платят мало — будет говнокод. Говнокод не будет когда проект интересный (ещё не надоел), зарплата позволяет не думать о деньгах, и фичу нужно запилить не на вчера, а в разумные сроки.
Яндекс недавно продемонстрировали яркий пример того, о чём речь. Кому-то хотелось выпустить новую версию навигатора прямо сегодня, кому-то не хотелось подвинуть сроки, и в результате получился небольшой скандальчик с последующим покаянием на хабре.

Говнокод получается когда заказчик требует быстрее запилить фичу в продакшн но не хочет тратить ресурсы на рефакторинг. «Не мы такие — жизнь такая»

Рефакторинг — это проблема клиента? Рeфакторинг входил в SOW, проданный клиенту?

Тут вы правы. Но и говнокод, если так — не проблема клиента, чего мы все переживаем.

Потому как тебе нравиться смотреть на красивое и читать интересное. А тут из твоих рук выходит говно (хотя ты понимаешь, что мог бы сделать лучще, если бы). Вот это и напрягает.
А клиенту действительно пофиг на код, главное, чтобы функциональность была сделана в срок и за предполагаемые им деньги.

Рефакторинг клиента не волнует нисколько, поэтому эта задача задвигается в бэклог на задний план как неприоритетная.... и до нее руки могут никогда не дойти — ведь надо пилить новые фичи

Паттерн «Продакшн» («Франкенштейн»). Потому что бизнесу надо не шашечки, как бы глупо это не доносилось.

Суровая правда

«Так мол и так, я подписал NDA, поэтому показать код не могу»
Часто, навіть така відповідь уже порушує пару пунктів того ж NDA.

В некоторых NDA запрещено разглашать о существовании NDA.

в бойцовском клубе появился айти отдел?)

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

ну такому даже нет названия :) это как соглашение не использовать букву «р» и начать картавить, просто бумажка

В некоторых NDA запрещено разглашать о существовании NDA.
Саме так. А, також згадувати будь-де назву контори в якій працював, проекти, технології.

Дебілізм, такі нехай самі на себе працюють. Не у розвідці працюємо.

Суворий вітчизняний оутсорс

Меня когда просят написать свой код я шлю смотреть портфолио или даю телефоны куда звонить за рекомендациями. Все эти решите нам 2 листа задачек, и мы вам позвоним, только раздражают. А еще нравятся письма от HR типа есть проект, не знаю какой, на 3 месяца, надо там будет что-то делать фултайм, беретесь? Хочется отправить ее варить борщ.

Во-вторых, в NDA порой указываются практически невыполнимые вещи вроде «не использовать полученные на проекте знания на проектах других компаний в течении пяти последующих лет» или «не рассказывать о проекте третьим лицам». Вы там атомную бомбу изобретаете, или очередную «уникальную» соцсеть для питомцев?
Это просто бездумная калька западного мира, где работают над cutting-edge technologies, а не над багфикс проектами. Например, сейчас в автомире работают над концепт карами 2019-2020 года, технических проблем существует множество, так как каждый год планка поднимается всё выше и выше. Естественно, человек знающий много, да и ещё на столько лет вперёд, будет на расхват.

Я когда-то для себя решил, если еще кто заикнется о подобном, потребовать взамен исходники ихнего проекта. Но что-то уже давненько не предлагают.

Впрочем, один заказчик наоборот, устроил сессию парного программирования для того чтобы определиться «на живом примере».

я как-то просил показать исходники чтобы оценить степень запущенности. если бы показали нечто страшное, да еще и написанное в 2005 году, я бы всерьез задумался стоит ли туда идти

Даже не у всех есть Github.
Офигеть :)
Можно предположить что не все даже знают что такое Github и для чего нужен :)

У меня есть, но пустой)

У меня есть,
Как бэ плюс
но пустой)
как бэ два минуса :)))

Это аккаунт в стиле дзен

Радует всегда на интервью вопрос про value / reference типы для человека с 10+ лет опыта. :)

Засмучує коли ця людина не може на це питання відповісти, а потім на наступне, що таке кластерний індекс. І оцінює свої знання по SQL в 9 з 10. Якщо ти блін назвався Senior Developer то блін прочитай хоч одну книжку.

При переходе в Senior Developer нужно перестань называть индекс «первичным ключем» и начать называть «кластерным индексом»? :)

І ви туди ж. Primary key != Cluster Index. Це різні речі і використовуються для різного. То може ще поговоремо про

value / reference типы
? Відчуваю там також жуткий хлам в мозку.

Ок-ок) дайте пример создания кластерного индекса для MySQL InnoDB

Вот вам ссыль на stackoverflow: stackoverflow.com/...tered-index-actually-mean. А вы можете поискать есть ли что-то похожее в

MySQL InnoDB

Якщо

MySQL
не підтримує специфіку то це ще не означає що такого немає. А для
PostgreSQL, Oracle, MS SQL можна подивитися тут.
use-the-index-luke.com/...iew_index_organized_table

Але

Primary key та Cluster Index — це різні речі
Але
Primary key та Cluster Index — це різні речі
У випадку з MySQL innoDB — це часто одне й те ж:

If you define a PRIMARY KEY on your table, InnoDB uses it as the clustered index.

If you do not define a PRIMARY KEY for your table, MySQL picks the first UNIQUE index that has only NOT NULL columns as the primary key and InnoDB uses it as the clustered index.

If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index on a synthetic column containing row ID values. The rows are ordered by the ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.

dev.mysql.com/...n/innodb-index-types.html

Есть он и это одно и тоже для InnoDB, только выбора clustered/non-clustered нет, primary key всегда clustered.

Відчуваю там також жуткий хлам в мозку.
Можете говорить что мир на MySQL не сошелся, но судить по этому вопросу что у разработчика в голове хлам, как-то уж сильно радикально
value / reference типы
В принципе тоже самое, value/reference/alias в движке пхп работают не так, как на %вашейплатформе%

Ми ведемо дискусію про Бази даних чи про якусь конкретну БД Особисто я веду співбесіди по MS SQL і там це має дуже важливе значення. Можете почитати літературу Наприклад класику про реляційні БД
ru.wikipedia.org/...ение_в_системы_баз_данных
Там добре багато чого описано.
Якщо в автомобілі з коробкою автомат немає щеплення, то не потрібно казати, щеплення і педаль газу одне і теж.

Можете говорить что мир на MySQL не сошелся, но судить по этому вопросу что у разработчика в голове хлам, как-то уж сильно радикально
Я десь питав про кластерний індекс в MySQL ??? А коли людина обмежана кругозором однієї технології дуже викаблучується її потрібно ставити на місце. Також готовий подискутувати про варіанти реалізацій
value/reference
на різних платформах починаючи з Native (Pascal, C, C++) і продовжити в Java, .NET та Javascript. А за читання криг програмістами про РНР в Рівне взагалі бють ;)(анекдот)
А коли людина обмежана кругозором однієї технології дуже викаблучується її потрібно ставити на місце
кто сказал что нужно ставить на место ?и вообще зачем это делать ?

Людина намагаючись «кольнути» кинула виклик. Отримала обратку. Якщо уважно почитаєте то зрозумієте, що вона була не права в своїх твердженнях. А взагалі як то кажуть — мовчи зійдеш за розумного ;).

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

Полагаю, вот это идет вразрез:

Відчуваю там також жуткий хлам в мозку.
Людина намагаючись “кольнути” кинула виклик.
Вроде взрослые оба, а все МПХ меряетесь...
І оцінює свої знання по SQL в 9 з 10
Речь шла об SQL, нет? А у нас SQL давно стал заниматься еще и хранением на диске данных?

Уявляєте так.
en.wikipedia.org/.../Data_definition_language
The data definition language concept and name was first introduced in relation to the Codasyl database model, where the schema of the database was written in a language syntax describing the records, fields, and sets of the user data model.[1] Later it was used to refer to a subset of Structured Query Language (SQL) for creating tables and constraints. SQL-92 introduced a schema manipulation language and schema information tables to query schemas. These information tables were specified as SQL/Schemata in SQL:2003. The term DDL is also used in a generic sense to refer to any formal language for describing data or information structures.

Вот накинулись вы в буквоедстве на человека, а сами, разговаривая на родном языке, не знаете, что «щеплення» — то есть «прививка», а сцепление пишется на самом деле как «зчеплення». Будьте проще — и люди к вам потянутся

Мне тоже интересно

Там в посиланні вище є пояснення.
The MyISAM engine only uses heap tables while the InnoDB engine always uses clustered indexes. That means you do not directly have a choice.

Навіть для MySQL з різними engine відрізняєтсья організація табличного простору. От не потрібно мені тут казати про те що

Primary key дорівнює Cluster Index
? Відчуваю там також жуткий хлам в мозку.
Не дуже ввічливо. Зі сторони виглядає що ви накинулися на незнайому людину на форумі, не маючи на те вагомих причин.

Може і не вічливо, але не потрібно хизуватися кругозором обмеженим однією БД.

А він і не хизувався, то ви чомусь накинулись

А це як назвати ?

При переходе в Senior Developer нужно перестань называть индекс “первичным ключем” и начать называть “кластерным индексом”? :)

Людина з помпою виставили на показ свій обмежений кругозор та хизується.

Про вас можна також сказати, що ви хизуєтесь широким кругозором.

Ну здається хизуватися знаннями це не одне і теж що хизуватися їх обмеженостю. І дискусія була в рамках топіку про питання до розробників 10+ років. Які за десять років не вивчили базові елементи і в багатьох компаніях працюють на посадах Senior Developer. Що по суті девальвує звання. Працююємо під гаслом «продамо побільше Seniorів» «тупим жадібним буржуям». І це дійсно сумно.

Ну здається хизуватися знаннями це не одне і теж що хизуватися їх обмеженостю.
Іноді це навіть гірше. Ну маєте ви академічні знання, а чи кожен день використовуєте? Якщо людина працювала тільки з MySQL — нічого дивного, що вона не знає як і що працює у інших СУБД. Буде необхідність використовувати іншу СУБД — дізнається. Якщо на вакансію потрібно вже знати декілька — значить людина не підходить і нічого страшного в тому немає.
в багатьох компаніях працюють на посадах Senior Developer
А заєте такий жах, що деякі власники успішних компаній не знають що таке веб-сервер, як воно працює і що локально на машині девелопера може бути прописний будь-який домен? І нічого, гроші лопатами загрібають. Я мало не впав, коли дізнався. Але це працює, бо власнику і не треба програмувати — у нього є технічний директор, який знає багато більше власника і керує програмістами. А програмісти знають ще більше за техдиректора, але кожен у своєму напрямку. Сенйор теж зобов’язаний мати знання у якійсь конкретній темі, і бажано практичні, а не визначення з підручнику.

По новій? Я писав людина пише в резюме MS SQL 9 з 10. і не знає.
Якщо буду проводити по

MySQL
співбесіду то буду питати інші речі, які впливають на швидкість роботи.

І з яких це пір

Senior Developer
у нас дорівнює власник ?

Ви написали

SQL
 а не
MS SQL

Допустим я знаю что это такое, и что в InnoDB это одно и тоже. Хотя по сути мне это нафиг не нужно знать. А так как Вы налетели с «хламом в голове», то создается впечатление, что Вы не знаете об особенностях того же InnoDB? Хороший кругозор

По новій? Вище ж писалося. Для вас я виділив слово ЧАСТО
У випадку з MySQL innoDB — це
ЧАСТО
одне й те ж:
Але це не одне і теж.
Врешті БД Це взагалі різні речі. Хоч і використовуються в звязці.

If you define a PRIMARY KEY on your table, InnoDB uses it as the clustered index.

If you do not define a PRIMARY KEY for your table, MySQL picks the first UNIQUE index that has only NOT NULL columns as the primary key and InnoDB uses it as the clustered index.

If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index on a synthetic column containing row ID values. The rows are ordered by the ID that InnoDB assigns to the rows in such a table. The row ID is a 6-byte field that increases monotonically as new rows are inserted. Thus, the rows ordered by the row ID are physically in insertion order.

dev.mysql.com/...n/innodb-index-types.html

Лучше головоломки загадывать и смотреть как человек их разгадывает, а не выяснять заучил ли он “хлам” из MSDN. Т.е. смотреть как человек решает реальніе задачи, а не знает определение кластерного индекса, который никому и нах. не нужен.
Кстати, вопрос про кластерные индексы — второй после типов. После этого хочется медаль повесить на грудь интервьюеру и пойти оттуда подальше.

Відповісти зазвичай з такими людьми і головоломки нічого не дають бо не розвязуть. Посилань на МСДН ніде не давав. Питання було про реляційну алгебру і фундаментальну теорію організації БД. А то після таких

Seniorів
потім ночами сидиш і правиш косяки з перфомансом. Бо настворюють «індексів» без розуміння суті.

Угу, еще бесит когда бекенды не могут макеты нормально нарезать и сверстать, сидишь потом переверстываешь за ними.

так це погано. Особливо якщо він зазначав в резюме, що він крутий верстальник ;(

Если бы региональный директор моей компании правил за мной код по ночам, я бы уволился сразу же, как только сделал бы git pull.

Кластерный индекс — это не теория и не алгебра БД. Это выдуманная вследствие имплементации идеи индексов сущность. В универе такого не учат, ни в теории множеств ни БД.

що таке кластерний індекс
Наверное есть Senior Developer’ы, которым не довелось клепать формочки к базам данных, поэтому и не знают что такое кластерный индекс?

Чтоб успешно «клепать формы к БД» не нужно вообще знать что такое кластерный индекс.

я сейчас собеседования провожу. некоторые синьоры с 10-летним опытом в CV не могут объяснить или не понимают как работает notify/notifyall чего уж говорить. так что всякие вопросы нужны

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

Потому что в ентерпрайзах никто давно тредов живьем не видел и на низком уровне редко когда пишут — все спрятано в недрах фреймворков

Аналогично люди плавали на С++ собеседованиях, придя из мира embedded

Тестовое задание и трёп — две крайности, у каждой из которых есть свои преимущества и недостатки. Задание требует времени и усилий, чем может отпугнуть в меру ленивого кандидата (или того, который ценит свое время), тогда как трёп позволяет в лучшем случае составить общее представление о кандидате и понадеяться, что код он пишет не хуже, чем об этом говорит.
Предлагайте кандидатам больше вариантов. Не хотите показывать код? Держите тестовое задание. Не хотите заданий? Приезжайте к нам сделать code-review или поработать в паре с нашим разработчиком. Не хотите никуда ехать? Давайте по Skype. Тошнит от кода? Вот-с логические задачки.
Налицо полное непонимание процесса приема на работу и целей этого процесса.
Тестовое задание (ДЗ) и трёп — это 2 глупости, если вы не умеете их готовить.
Если вы способны определить по ДЗ подходит ли вам человек, то вперед ДЗ, если сделал, то испытательный срок (без него я не знаю как), и потом сотрудничество закрепленно (или нет) окончательно. Я еще ни разу не встречал чтобы по одному ДЗ (длинной менее 20 часов :) ) принимали на работу, посему есть вероятность того что ДЗ мало кто умеет готовить (если вообще такие есть).
«Треп». Ну тут аналогично, если собеседование превращается в треп, то вы не умеете его готовить. По моему опыту, общую адекватность можно проверить за 10-20 минут __осознаного общения__ на профессиональные темы; еще за 30-60 возможно оценить применимость человека к задача. Тут есть нюанс — надо понимать зачем вам человек.
Проверить общие навыки кодирования можно одной-двумя задачками на 5-15 минут (такими чтобы их можно было сделать на бумаге), прямо на собеседовании. Сумарно с правильными вопросами (и внимательно выслушаными ответами на них), вы можете сделать выводы о том какой код будет писать человек. Да, есть вероятность что зная как у вас проходит интервью, человек может «подготовится» и создать видимость, тут он сам себе злобный буратино, ибо он с большой вероятностью провалит ИС.
.
Более практическая часть:
1) Магический вопрос: Что __именно вы__ делали на предыдущем проекте? Какие задачи решали?
2) Магическую задачку не расскажу. Но вот пример второй задачки (специфичной для джаваскрипта): реализовать функцию namespace(’some.namespace.my.moduleName’, module), module может быть как функцией, так и сложным объектом. В результате ваш модуль должен быть доступен как глобальная переменная window.some.namespace.my.moduleName.
Но вот пример второй задачки (специфичной для джаваскрипта): реализовать функцию namespace(’some.namespace.my.moduleName’, module), module может быть как функцией, так и сложным объектом. В результате ваш модуль должен быть доступен как глобальная переменная window.some.namespace.my.moduleName
Хм, так вроде это несложно. На первый взгляд, по крайней мере. Только немного непонятно,
module может быть как функцией
Имеется в виду функция-конструктор, из которой должен получиться объект-модуль; функция, которая возвращает модуль или же просто функция, которая должна быть доступна как есть? Или вообще все 3 варианта?
Хм, так вроде это несложно.
Так и не должно быть сложно :)
Имеется в виду функция-конструктор, из которой должен получиться объект-модуль; функция, которая возвращает модуль или же просто функция, которая должна быть доступна как есть? Или вообще все 3 варианта?
В первоначальной постановке задачи, про функцию речь не идет. После того как человек написал решение, мы поговорили по решению (если надо), задаются вопросы «Что и как бы вы делали если второй параметр функция? Почему так?» Попытки отстоять отличное мнение от того которое предложил кандидат. Поговорить про то зачем нужен __такой__ неймспейс и модули, нужны ли они сейчас (в 2015-м году), какие альтернативы может предложить кандидат.
Кстати, если кандидат называет книгу в которой есть готовое решение, это еще один плюс.

Как вы умудряетесь работать по 5 лет, что бы не осталось ни одного класса, который можно было бы показать?)
Вообще, как по мне, лучшая практика просить написать немного кода на тех. собеседовании, когда уже стало ясно, что кандидат конторе интересен.

Как вы умудряетесь работать по 5 лет, что бы не осталось ни одного класса, который можно было бы показать?)
Фишка в том что тот «класс» который вы написали 5 лет назад, может не отображать ваш актуальный стиль кодирования.

А знаете, убедили. Попытался представить подобную ситуацию, если бы не pet проекты — актуального кода для демо не было бы.

и что с одного класса можно понять? конструктор с 1-2 интерфейсами и один метод, который эти интерфейсы дергает

Какая задача «покажите пример вашего кода», такое и решение :)

поэтому есть индивиды, которые не скромничают и сразу говорят — пришлите весь проект целиком :).

За 5 лет «твой класс» могут изменить не один раз коллеги, если не сам работаешь

Парням, которые сразу после универа в Гугле работают, будет совсем-совсем нечего показать и через 10-15 лет. Думаю, с MSFT и FB та же история.

А ще треба на запит

Пришлите фрагмент вашего кода
відповідати, пришліть будьласка свій код теж, бо мені цікаво з яким саме кодом потрібно буде працювати.
Держите тестовое задание
"
Надайте тестову зарплатню?

Как я понял, «тестовое задание» обычно присылают джунам, которым хоть бы куда и хоть бы кем, так что это может быть нормальным в некоторых случаях.

It depends.
Тестовое задание могут дать и мидлу, если ему совсем нечего показать, а собеседование вживую невозможно (другой город или страна). Иногда оно может носить формальный характер — мол, кандидат понравился, собеседование по Skype прошел, задание (неважно какое) выполнил — значит можно брать.

Тестовое задание могут дать и мидлу, если ему совсем нечего показать,
Могу Вас заверить, что его дают даже тем, кому очень есть чего показать (я о проектах разумеется) :)))
а собеседование вживую невозможно (другой город или страна).
Зачастую его дают после часа-двух собеседования с HR, потом с технарем, а если повезет еще и с оунером :)
задание (неважно какое) выполнил — значит можно брать.
Задание выполнил и понравился, но зачастую даже не утруждают себя ответом, а забугорные господа могут отписать, что ты классный и офигенный, но мы подумали и решили взять тут по-местному :)

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

qr.ae/Ro5Z5j , особливо камент “interviewing for a job they want should be on their best manners. To show arrogance by saying ‘I know coding better than you do’ which is what was suggested, is not likely to help you land the job.”

Как по мне, показывать часть исходного кода работающего не опенсорсного коммерческого проекта, овнером которого ты не являешься, априори плохая идея, связан разработчик NDA или нет, потому что это прямая возможность найти уязвимость в данном проекте. И пускай в 99% случаев код никуда не уплывет, сбрасывать хлипкую возможность того, что код попадет не в те руки, имхо, все же не следует :)

Покажите код (вообще, сомнительной ценности вопрос для уровня выше джуниора) предполагает фрагмент кода. По 1 классу много не наломаешь, тем более это всегда будет самый вылизаный класс (напоказ же)

А який саме код ви чекаєте від джуна? На то він і джун щоб стати мідлом.

Ні, я кажу не про те, що код джунів поганий, а про те, що код можна використовувати при оцінці джунів, може мідлів, а навички сеньора шматок коду не продемонструє.

І взагалі навіщо марнувати час кандидата або працівників які перевіряють це завдання? якщо компанія дійсно серїозна, то чому б не автоматизувати цей процес? Наприклад одне завдання на всіх, завантажуєшь результат на сервер і бачиш навіть свій рейтинг (час виконання, розмір, тощо).

Або ще краще щось на кшталт www.pythonchallenge.com

Многие компании частично автоматизировали процесс первичного отсева кандидатов путем использования сервисов оценки, вроде codility.com. Там каждому кандидату за ограниченное время предлагается решить N небольших задач (разного уровня). Решения прогоняются через заранее определенные наборы тестов и оценивается как кандидат может решать типовые задачи, беря во внимание time/space complexity. А дальше уже идет обычное техническое.

Останнє посилання щось явно не туди веде.

Дякую, виправив. Правильне посилання таке:
ain.ua/2014/06/13/528508

Подписаться на комментарии