Внутри поста деньги. Очередной JavaScript-конкурс

от автора

Привет, друзья. Тут речь пойдет о маленьких конкурсах JavaScript-программистов, которые проводит стартап Хола. Мне до сих пор кажется, что посетители Хабрахабра — самая целевая аудитория для таких конкурсов, особенно после разделения сайтов на МикроМозг и тот, другой сайт.

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

Еще в этом посте я постараюсь подытожить опыт, сын ошибок трудных: что уже делали, что получилось, и как с этим теперь жить дальше.

Про конкурс

Сразу самое интересное: условия конкурса.

В состав Node.js входит имплементация высокопроизводительного связного списка, которая ко всему прочему бережно относится к оперативной памяти. Вот она, эта замечательная штука: github.com/joyent/node/blob/master/lib/_linklist.js

Этот код довольно специфичный: он написан для хранения idle timeouts (хоть это никак и не отражается на его работе), и не позволяет одному объекту содержать несколько списков. (Здесь, очевидно, имеется в виду непосредственное участие одного и того же узла в двух и более списках. — прим. перев.)

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

Побеждает самая быстрая, эффективная и обобщенная реализация.

Почитать оригинал на английском можно вот тут.

Решения принимаются до 30 июня. Призы: 1500, 1000 и 500 долларов США за три самых лучших решения, и 350 долларов за самую оригинальную попытку.

Анализ задания

Дальше чистая спекуляция, т.е. мое собственное мнение. Оно может оказаться верным, а может не оказаться — настоящая квантовая механика; как и кота Шрёдингера, мое мнение поэтому нельзя ни погладить, ни накормить.

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

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

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

О подвохе

А подвох вот в чем: нестрогость задания напрямую связана с настоящей целью проведения маленьких конкурсов. По секрету сообщаю: цель — найти программистов, чтобы пригласить их на работу. Работать в Холе можно удаленно, а можно локально, если вы случайно (или вовсе даже преднамеренно) очутились в Израиле.

Задачи, которые ставят перед соискателями ребята из Холы, отражают реалии работы в компании. Реалии таковы: подразумевается, что каждый программист может самостоятельно анализировать требования, проектировать и разрабатывать нужные вещи. Поэтому если постановка этой маленькой задачи вас смущает, вы, возможно, с высокой скоростью убежали бы из Холы на второй день, смешно размахивая руками.

Некоторым моим знакомым нравится так работать, а другим не нравится. Если провести аналогию с другим превосходным холиваром — одни думают, что Vim лучше, чем Emacs, а другим кажется, что Emacs хуже, чем Vim. Два еврея — три мнения.

Хроника событий

Конкурс, про который вы почитали выше — третий по счету.

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

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

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

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

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

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

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

Выводы

  • Можно написать ~10 строк кода и выиграть ~1000 долларов. Полтора барреля нефти за строку кода.
  • Когда на халяву дают деньги, надо брать.

Отдельно хочу упомянуть про удаленную и/или локальную (в Израиле) работу. Если вы по каким-то причинам жаждете устроиться в какой-нибудь хороший стартап на высокококооплачиваемую должность разработчика программного обеспечения для ЭВМ, но стесняетесь, то напишите мне. (Не рекрутер, не гербалайф. Просто много знакомых.)

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

Удачи!

ссылка на оригинал статьи http://habrahabr.ru/post/258245/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *