Pull to refresh

Comments 44

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

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

Как-то в споре по поводу тестовых заданий я дал такое решение:
«Задайте следующие вопросы:
— Где и как нужно задавать кодировку проекта?
— Как производить отладку скриптов (как выполнить трассировку)?
— Как логировать ошибки базы?
— Как фильтровать поступающие данные?
— Как отправлять и обрабатывать Ajax-запросы?
— Как правильно отдавать ответ на POST-запрос?
Если ответит на все, то не школьник. Либо очень умный школьник, которого не грех нанять.»

Реакция на такое решение была в стиле «закидаем помидорами этого неверного», но никто достоинстве ответы не давал. Меня этот момент заинтересовал (а я очень дотошный и любопытный) и я разослал этот «тестик» своим знакомых по специальности. Некоторые меня сразу послали. Два человека дали аргументированные ответы в течении часа, большинство провозилось полдня и больше. Один целых два дня готовил ответы и, отдавая их, меня послал. То есть в ходе эксперимента выявился разброс по времени выполнения.

Так вот, некоторые вещи знающий специалист может выполнить быстро, а незнающий долго. Если бы автор статьи когда-либо до тестового задания делал подобные вещи, то скорее всего тестовое задание у него заняло бы очень мало времени.
Могу в личку скинуть описания реально объёмных задач из раздела «которые неразумно выполнять». Моя оценка для одной такой — 1.5 дня для челоека в теме и 5 для просто знающего. Ну так всё равно неразумно выполнять, не встречавшись ни разу с работодателем, который такое скидывает при первом знакомстве по почте: ). Требовались не общие ответы, как у Вас, а реально работающий скрипт.
Я, если честно, не встречал заданий на 1,5 дня работы, но объёмными заданиями на полдня сталкивался (даже при помощи их устраивался на работу). И по рассказам начальника были люди, которые выполняли эти задания за 2-3 дня.

Хотя надо поправить — тут всё зависит как и от претендента, так и от адекватности работодателя. Вспомнил, был у меня один неадекватный, который хотел сделать таблицу из иерархической базы данных.
Как-то на вакансию разработчика Java (веб проект) мне дали задание реализовать мини приложение и там примерно 3 листа описания, про то какие EJB и как использовать, тамкже там была реализация клиентской части, ajax и тд.
Круто конечно что они охватили все, но так или иначе от меня это потребует
1) установки и настройки ПО (бд, сервер)
2) создание бд
3) написание серверного кода
4) верстка (хоть и минимальная)
5) js
отладка всего этого.

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

Первый и последний вопросы вообще не понятны. Да и остальные неоднозначны. Подразумевая веб-разработку на PHP:
— что за кодировка имеется в виду?
— куча способов. Что, кстати, под скриптом имеете в виду? Код на PHP? В каком окружении? Как вызывается?
— на каком уровне?
— куда и откуда поступающие, для кого или чего фильтровать и с какой целью?
— сформировать тело запроса, создать колбэки, отправить. Когда вызовутся колбэки проанализировать статус и обработать полученный XML (если он получен) согласно требованиям. Что-то мне подсказівает, что такой ответ не устроит.
— с чьей точки зрения правильно? RFC по HTTP? Какому, кстати, 1 или 1.1 — несколько логика отличается в разных ситуациях. Или вы под «правильно» имеете в виду «удобно для пользователя браузера, и пофиг что браузеры поголовно неправильно обрабатывают 301 статус ответа»?
Если Вам так интересно, то ответы предполагаются в виде кода (достаточно нескольких строк) и аргументации, если нужно. Подразумевается PHP + Apache + mySql. По вопросам:
— Где и как нужно устанавливать кодировку (PHP + mySQL + Apache)
— Приведите один из способов трассировки PHP с примером настройки.
— Логировать ошибки базы на уровне PHP.
— Данные поступающие от пользователя.
— С Ajax и POST просто пример кода.

Замечу, что я просто привёл пример теста выдранного из контеста.
Где и как нужно устанавливать кодировку

Кодировки чего? Отдаваемых страниц? Обработки данных внутри обработчиков запросов? Данных хранящихся в базе/файлах?
Данные поступающие от пользователя.

Видимо очень сильная связь с контекстом, в котором заданы правила фильтрации.
С Ajax и POST просто пример кода

C аякс ладно, если вы хотите посто убедиться что сосикатель знает как отправить запрос и обработать. А вот с пост всё равно непонятно, что значит «правильно» — за 10+ лет разработки в вебе на пхп в основном у меня толком ничего с этим не ассоциируется, не могут вспомнить какие-то особые правила их обработки. Скорее особые правила у GET и HEAD — они не должны вносить изменения в запрашиваемый ресурс.
Кодировки чего? Отдаваемых страниц? Обработки данных внутри обработчиков запросов? Данных хранящихся в базе/файлах?
Кодировки всего перечисленного. Я в скобочках всё перечислил — думал, что Вы поймёте.
за 10+ лет разработки в вебе на пхп в основном у меня толком ничего с этим не ассоциируется, не могут вспомнить какие-то особые правила их обработки
Это вопрос на вшивость. Не знаю как Вы, но я до сих пор встречаю людей использующих «профессиональную» вставку или десятки echo.

И пожалуйста, старайтесь использовать знаки препинания — по три раза перечитывать ваши комментарии нужно, чтобы понять. Без обид.
Про POST я ожидал каких-то особенностей HTTP, может коды ответов, кэширование… а вы про echo. Что ещё за «профессиональная» вставка или десятки echo?
«Профессиональная» вставка — это когда html-код смешивается с php-кодом. В незапамятные времена это было признаком профессионализма, но как показала практика этот способ очень неудобен для разбора кода. Некоторые новички для обучения используют древние книги, где сохранились эти предрасудки.

С echo всё проще. Эта команда выводит строку. Если точнее сказать, то добавляет её в ответный пакет. Эта процедура хоть и быстрая, но неоптимизируемая (т.е. опкэшер её скорость не увеличит). Отсюда логично следует вывод, что желательно использовать echo как можно меньше в коде (в принципе достаточно одного раза). Новички же, которые ни разу не делали трассировку и не понимают принципов работы опкэшера, этой особенностью пренебрегают и их код состоит из десятков/сотен echo.
Хм, а как одним разом обойтись? Подозреваю, вы скажете про буфер вывода… ладно, но как это с POST связано? По моему, вас неспроста посылали))
C POST это связано посложнее. При работе с FullAjax, если передавать многострочные команды, то JS будет их обрабатывать построчно (имеется в виду выполнение будет происходить с перерывами).
Про кодировку же можно в общем ответить: как её установить на клиенте, как на сервере и, самое главное, зачем и почему её нужно там устанавливать. Другие вопросы тоже, на мой взгляд, простые. Даже для меня, хотя веб-разработка была в моей жизни достаточно давно.
Для себя решил, что тестовые задания должны быть либо короткие (15 минут), либо интересные.
Однажды взял тестовое задание на пару дней, но с условием, что мне отпишут что сделано хорошо и что сделано плохо. На работу меня не взяли, но я остался очень доволен, т.к. разобрался с интересными стандартами и получил очень качественный feedback.
Задание на пять рабочих дней – это самая настоящая работа, она должна оплачиваться. (В некоторых фирмах так и делают.)
Для тестовых заданий стараюсь выбрать технологии, с которыми я еще не успел поработать. Например, в последний раз попросили сделать блог с мгновенными обновлениями (кто-то написал пост и он сразу у всех читателей появляется в ленте).
Выбрал метеор, о котором я раньше лишь смотрел пару скринкастов, потратил несколько часов на изучение его API и минут 40 на само задание (с метеором оказалось крайне просто всё сделать). Предложение не сделали, зато теперь я имею хорошее представление еще об одном инструменте и могу его использовать в работе.

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

В обоих случаях длинные тестовые задания (и их выполнение) допустимы. Хотя тоже не очень правильны.
Не хватает варианта ответа «Начинал выполнять, но забивал» :)

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

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

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

С точки зрения закона излишнее уточнение, имхо, в большинстве случаев. Исключительніе права на программу для ЭВМ остаются у разработчика, если нет никакого договора.
Как вариант взаимно приемлемого диалога, есть такой, как выполнение заданий в онлайне через Скайп/джаббер, с немедленным комментированием хода мысли.


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

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

Так что моё мнение: решение в реальном времени — не самый лучший способ.
когда я находился в поиске работы, объемные тестовые задания на ранних этапах общения вызывали скорее раздражение, чем желание их делать.
Сейчас сам ищу себе работников и выработал следующую тактику:
-задание должно быть небольшим (макс. 6 часов рабочего времени)
-задание имеет смысл давать, только если в портфолио человека нет чего-либо подобного
-задание имеет смысл давать уже на более поздних этапах собеседования
-так как задание по итогу может не отображать всего того, что необходимо знать и уметь работнику, оно не должно являться основополагающим при принятии решения
Сделал тестовое задание примерно на 8 часов работы (приложение для твиттера под на андроид на 3 экрана), вылизал, отправил. Через пару дней HR таки ответила, что тот, кто мог бы его проверить — в данный момент в отпуске( Было обидно.
Недавно искал работу и в одной компании на высланное резюме сразу дали тестовое задание объемом дня 1,5 точно и просто сказали «делай до такого-то дня». На другой — дали задание, попутно позвали к себе, объяснили ошибки, помогли исправит (причём тратили своё время) и в итоге я с ними работаю. Да, у второй компании не так много людей и нет потока кандидатов, но само отношение сразу привлекает, хочется делать это задание, хочется работать у них.
Напишу в защиту больших тестовых заданий в некоторых случаях. Поставьте себя на место работодателя, который ищет человека на позицию какого-нибудь senior developer. Что покажет задачка на пару часов? Что разработчик может делать задачку на пару часов? А вот хоть как полно действительное владение всем, что в резюме, покажет тест на пару недель с учётом режима «делаю по вечерам после текущей работы». Так вскрываются и проблемы с самостоятельностью, и с умением уточнять ТЗ, и с поддержкой связи (никому не нужен senior, молча уходящий в offline берлогу на длительный срок), и с умением длительно держать темп разработки, и прочее.

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

Ну и да, такое задание дают уже в финале собеседований, когда понятно, что кандидат хороший и бегло порешал junior задачки.
Как по мне, если целево идёшь в определённую контору на определённую позицию с хорошим окладом, можно и понапрягаться.

Ну разве что действительно есть есть мечта или четкие планы попасть куда-то конкретно, тогда — может быть. Но обычно то идут не в конкретную фирму, а выбирают из нескольких подобных.
Смотря где и смотря кто. Утрирую: вакансия C++ senior в каком-нибудь Intel и вакансия C++ senior в десятке гаражных конторок (которые тоже могут интересными, конечно) — разные вакансии. Выбор между подобными обычно совершается во втором случае и да, там зачастую пофиг.
Основную проблему вызываю такие задачи на первом этапе общения, когда это просто твой «допуск» к настоящему собеседованию, так хотят отсеять на их взгляд не компетентных людей, не тратя время своих сотрудников. Считаю подход такой ошибочным.
Если большой тест дают на первом этапе, нужно сразу уходить, конечно, т.к. в 99% случаев это обман или непрофессионализм.
В моей практике было несколько предложений выполнить тестовое задание. 2 раза соглашался: 1 раз от яндекса было задание в реал тайме за 4 решить задание (справился лишь частично, потом за дополнительное время доработал, но толку не было в итоге) и один раз от mail.ru, задание потребовало около 2 дней плотной работы, с учетом что никогда подобным не занимался. В обоих случаях это были задачи, которые открывали доступ к собеседованию, а не подтверждение каких-то навыков после общения. Оглядываясь назад, не жалею, что за них взялся, но там на руку работодателю играло имя, заставляя постараться. После в процессе активного поиска работы, некоторые совсем неизвестные работодатели присылали свои приглашения рассмотреть их вакансии, в случае согласия общение начиналось с тестовых заданий, со слов HR после позволят поговорить непосредственно с IT специалистами и узнать подробнее о вакансии, ну и пройти настоящее собеседование. Стоит ли говорить, что здесь мотивации на самом деле 0, когда параллельно проходит по 2-3 собеседования в день и перспективы совсем не ясны с этими тестовыми заданиями. В целом я считаю, что такой подход оправдан для компаний, которые имеют достаточно большой конкурс на вакансию, как средство на финальной стадии проверить практические навыки, для все остальных это просто добровольное снижение потока потенциальных кандидатов.
Скажите а как вы относитесь к тестам типа сервиса codility? Не находите ли вы что это тоже часто просто трата времени?
В прошлом году я прошел 3 из 20 обычных собеседований, а также 3 из 3 по тестовому заданию в размере одного дня. Одно задание не доделал, поскольку в нем было 4 из 4 пунктов не по профилю.
Как только вижу в предложении слова «тестовое задание», сразу в спам добавляю и забываю о вакансии.
Даже если это «если у вас нет образцов кода, то можем прислать тестовое задание»?
Единственный случай, когда когда согласился на выполнение задания был примерно такой: «вот тут 4 варианта тестовых заданий, 1-3 — решение в коде одно из трех ИЛИ достаточно описания решения задачи номер 4» — я не поленился, за пару минут накидал по несколько вариантов 1,2(просто по-ходу) без всяких гуглов, местами покритиковал, по третьему пункту честно сказал «я хз че вы там имели ввиду, но вероятно тоже простая штука, принципиальных сложностей не вижу», по четвертому пункту подробно расписал несколько вариантов решения, при том, что это вообще была чисто математическая задача уровня этак класса девятого. Так вот, в ответ начали мяться и заливать «мы ничего не поняли — а значит все неправильно, давайте код». Лол. Я им предложил оплатить мое время на выполнение любого задания в любом объеме — отказались. Само собой на этом мы и расстались. А вообще: сегодня есть большой выбор где и с кем работать, что конечно не может не радовать. Так что надеюсь, что многие работодатели таки обратят на это свое внимание и будут искать более эффективные методы работы(для обеих сторон) в области найма персонала.
Опыт оплачиваемых тестовых заданий — из 1500 «ищущих работу» программистов, код прислали двое, и работающий патч сделал один. Тяжелые тестовые задания? Или все же (в среднем) ленивые соискатели?

Не работает ссылка по тексту. Вот задание: www.dataved.ru/2010/02/openmeetings-developers-landing-page.html
О, внезапно. Может быть потому что текст на английском по линку? Может быть потому, что для показа «предложения» надо посчитать сумму от 1 до 99 (это 4950), которое я заметил только после того как докрутил страницу до конца и попытался понять «что это вообще тут за страница такая?». Может быть из-за того, что по факту это исправление багов в неизвестном для многих приложении? Может быть потому что оба линка на тестовые серверы мертвы?
Кроме того, чтобы разобраться в том, как поставить опенмитингс и настроить его для своих нужд требуется несколько дней — именно столько времени у меня на это ушло, когда нужен был сервер веб-конференций чуть больше года назад. Подскажу: в сети где-то был скрипт автоматической установки на один или два экрана.Так вот, он использует старые версии нужных опенмитингсу программ/библиотек и его тоже старую версию. Просто так подсунуть новую версию туда не получится, т.к. есть зависимости от версий используемых программ/библиотек и для установки новой версии опенгмитингса надо искать искать требуемые ему либы/программы и собирать их, а у них там свои зависимости. И это только установка его. Затем его надо настроить, понять что он из себя представляет, заюзать, и только потом уже имеет смысл лезть в багтрекер и пытаться что-то исправить. А еще опенмитингс в основном работает на флеш. Много ли желающих работать с флеш?
Возможно стоит пересмотреть тактику, стратегию и методы подбора персонала?
Я однажды, на заре своей карьеры делал длинное тестовое задание, которое отняло у меня 3ое суток по 14 часов.
Тема была совершенно для меня новая — прикрутить дополнительные элементы к всплывающим меню во всех приложениях в винде. Пришлось курить мануалы и писать на С++, с которым я до этого только немного игрался.
Когда я принес работающее приложение, товарищи очень удивились — они не ожидали, что кто-то справится.
Но я бы сказал, что и интервьюеры были аховые (в плане опыта набора персонала), и сам я был еще очень зеленый (и сам долго еще делал грубые ошибки при интервьюировании, пока не набрался опыта).
Работу я получил, кстати, и не жалею — там было интересно. И задание это больше никто до конца не сделал… не нашлось таких… добровольцев-волонтеров :-)

Мое личное заключение — тестовые задания не практичны, ни для одной из сторон.

Вот в другом формате мы их используем — последнего нашего удаленного программера мы взяли после тестового задания, за которое мы сразу ему пообещали заплатить (естественно, после успешного интервью). Он нас приятно удивил качеством выполнения задания, мы его приняли, и очень довольны.
Расскажу парочку своих историй. Пару лет назад нашел вакансию на программиста (удаленно) в компании Smart-Soft (те самые, которые Traffic Inspector разрабатывают). Сразу же дали тестовое задание. Если верно помню, нужно было написать монитор для просмотра загрузки прокси-сервера на определенном порту. Написал на Delphi, как и просили. Задание выполнил примерно часов за 9. Отправил. В ответ тишина по сей день. Писал даже с разных почт, с других имен.
Один раз хотел пойти в компанию-разработчика веб-сайтов. Тестовое задание, якобы оплачиваемое — написать сайт. Написал, в итоге — кинули.
Для себя сделал вывод, что нужно просто делать хорошее портфолио, и присылать не код, а видео-демонстрацию
Sign up to leave a comment.

Articles