Я пришел на собеседование с лайвкодингом — и меня с позором размазали



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

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

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

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

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

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

    Скайп, тёмный экран, голоса — один за другим мне представляются интервьюеры. Ни одного из них не было на предыдущих этапах. Четыре штуки. Объясняют правила игры, говорят, что могу думать сколько угодно, что никто не давит, код пиши там где привык, так, как привык. Можешь гуглить все что хочешь. Но есть одно ключевое условие: задачу нужно решать в манере TDD.

    — Ты уже работал с этим? Как это первый раз слышишь, что у нас такое требование? У нас все работают только по такой методологии. Ты тоже будешь. Вот тебе «простейшая университетская задачка», приступай.

    Задача и правда была простой. Надо было написать парсер выражений, начать с простейших «1+2», а закончить настолько глубоко, насколько возможно за отведенные два часа.

    Механизмы в моей башке заскрипели: так, просто сложение сделать невероятно легко, вычитание тоже, умножение потребует порядка действий — только оно стоящее. Если я не сделаю им умножение, они меня пошлют. Твою мать, читал же месяц назад про паттерн интерпретатор, они точно ждут именно его. Блин, я не помню как его делать! Сколько я уже думаю? Несколько минут? Они посчитают, что я идиот. Блин-блин-блин, если я сейчас же не начну хоть что-то писать, мне конец.

    — Какие-то проблемы, Филипп?

    Ну всё. Они все уже решили. Хотя нет, может они просто участливые? Да пиши же ты уже код!!!

    Дрожащими ватными руками я нажимаю «Add file». Боже ж ты мой, как его назвать? Какой-нибудь экспрешн парсер! Стоп. В дотнете же есть родные штуки для распаршивания выражений. Они точно ждут не велосипедиста, а умного разраба, который пойдет и применит готовое решение. Открываю гугл, начинаю вбивать.

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

    Ооох, братан, если бы ты слышал мои мысли сейчас, интервью бы давно закончилось. Но бог с тобой. Создаю файлик, начинаю описывать интерфейс парсера.

    — Филипп, что вы делаете?
    — Я прикидываю структуру решения, пишу код, чтобы все в голове встало по местам, и я понял с какой стороны заходить.
    — Филипп, я просто напоминаю вам, что у нас в компании применяется методология TDD, и мы в первую очередь хотели бы увидеть, насколько вы хороши именно в этом.

    А я хочу увидеть, как тебе хлещут дохлой мороженной рыбиной по морде. Создаю файлик с тестом. Я не знаю, зачем. Уже очевидно, что никуда я не прошел. Туплю в нагенеренный студией код теста, одну минуту, две, три. Слышу возмущенное покашливание из скайпа. Господи, ну почему они не могли прислать на это интервью людей с предыдущего? Чтобы хотя бы один человек с той стороны экрана знал, что я блин не самый тупой человек на земле, и действительно кое-что знаю. Для этих, я определенно стал конченным дном.

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

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

    — Филипп, вы забыли добавить модификатор public к тесту.
    —…
    —…
    — processing…

    Я понял. Выругался. Замьютил микрофон, выругался покрепче. Вернул микрофон. Добавил public, тест прошел. Я начал писать тест на вычитание. И вдруг как гром среди ясного неба:

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

    А я уже знал как все сделать. Я решил задачу в голове, но они этого не увидели — они увидели, как я кучу времени писал сложение. Куда вообще все это время делось?! Видимо я слишком долго тупил в моник, размышляя о том, что они обо мне думают.



    Со мной, конечно, никто не связался. Это они очень правильно сделали. Ведь если бы они меня приняли, я бы разыскал этих людей в офисе, взял за яйца, и заставил писать код.

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

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

    Рынок огромный, мы найдем себе работу, но осадочек останется. Этот собес был лет пять назад, но он меня кошмарит до сих пор. Недавно я говорил со своим хорошим другом, который живет в США, и он рассказал мне, что у них мода на лайвкодинг проникла в каждый даже самый маленький стартап.

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

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



    На правах рекламы


    Мощные виртуальные серверы с процессорами AMD EPYC для разработчиков. Частота ядра CPU до 3.4 GHz. Максимальная конфигурация позволит оторваться на полную — 128 ядер CPU, 512 ГБ RAM, 4000 ГБ NVMe.

    VDSina.ru
    Серверы в Москве и Амстердаме

    Комментарии 251

      +16

      Ну зачем ты так, опять эти флешбеки...

        +26
        Я аж собес в яндексе вспомнил…
          +8
          Ох мои соболезнования…
            +4
            Это вы еще на собеседовании в Одноклассники(!) не были…
            В Яндексе задачки обычно проще.
              –6
              Написать калькулятор достаточно типовая задачка для собеседований.
              Там делов то. Вспомнить про стек и вперед. () — рекурсией тоже просто.

              И все ()*/+- покрываются на раз. Строк 30 кода, если не особо над переполнениями заморачиваться. За типовой час пишется на доске и разбирается с запасом.
                +1
                () — рекурсией тоже просто.

                Специально пошёл смотреть "алгоритм сортировочной станции", чтобы проверить не забыл ли я там рекурсию. Нет — не нужна. И честно говоря я сомневаюсь что вы уместите его в 30 строк.

                  +2

                  Зачем вы искали рекурсию в алгоритме сортировочной станции, если алгоритм рекурсивного спуска — это совсем другой алгоритм, который алгоритмом сортировочной станции не является?

                    +1

                    Стек в этом алгоритме заменяет рекурсию. Ведь рекурсия — это и есть фактически и есть стек.

                    –1

                    У меня вариант попроще описан.
                    Который проще придумать, проще написать и он не сильно хуже. Собеседование же, все на лету.


                    Уложу в 30. Простейший вариант естесвенно. Целые цисла, целочисленная математика, числа по одной цифре. Чтобы не писать не показательные вещи вроде парсинга чисел из строки.

                      –1
                      По моему, для этого нужна обратная польская запись. И там вроде бы стэк и все несложно.
                      Алгоритм
                      Пока есть ещё символы для чтения:
                      Читаем очередной символ.
                      Если символ является числом или постфиксной функцией (например, ! — факториал), добавляем его к выходной строке.
                      Если символ является префиксной функцией (например, sin — синус), помещаем его в стек.
                      Если символ является открывающей скобкой, помещаем его в стек.
                      Если символ является закрывающей скобкой:
                      До тех пор, пока верхним элементом стека не станет открывающая скобка, выталкиваем элементы из стека в выходную строку. При этом открывающая скобка удаляется из стека, но в выходную строку не добавляется. Если стек закончился раньше, чем мы встретили открывающую скобку, это означает, что в выражении либо неверно поставлен разделитель, либо не согласованы скобки.
                      Если существуют разные виды скобок, появление непарной скобки также свидетельствует об ошибке. Если какие-то скобки одновременно являются функциями (например, [x] — целая часть), добавляем к выходной строке символ этой функции.
                      Если символ является бинарной операцией о1, тогда:
                      1) пока на вершине стека префиксная функция…
                      … ИЛИ операция на вершине стека приоритетнее o1
                      … ИЛИ операция на вершине стека левоассоциативная с приоритетом как у o1
                      … выталкиваем верхний элемент стека в выходную строку;
                      2) помещаем операцию o1 в стек.
                      Когда входная строка закончилась, выталкиваем все символы из стека в выходную строку. В стеке должны были остаться только символы операций; если это не так, значит в выражении не согласованы скобки.


                      ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%80%D0%B0%D1%82%D0%BD%D0%B0%D1%8F_%D0%BF%D0%BE%D0%BB%D1%8C%D1%81%D0%BA%D0%B0%D1%8F_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C

                      П.С. Кстати, вот для этого и нужно университетское образование. Я не помню как именно это делается, но я помню, как это называется и где смотреть.
                        0

                        Не нужна тут ОПЗ. Вместо формирования выходной строки можно или сразу вычислять выражение, или же строить AST.


                        ОПЗ — это такой способ записи выражений, который позволяет избежать "продвинутого" парсинга, вроде алгоритма сортировочной станции. Но заставлять пользователя использовать ОПЗ в 2020м году как-то странно, а чтобы преобразовать инфиксную форму в постфиксную — вам придётся алгоритм сортировочной станции использовать. Ну и зачем в таком случае ОПЗ?

                          0
                          Вы скопировали решение другой задачи. Да еще и на русском языке, вместо любого языка програмирования. Вместо того чтобы придумать решение для обычного калькулятора.
                          Что же в этом хорошего?
                        0
                        На олимпиаде по Ораклу вроде писал парсер на SQL.
                        Вот тут было весело.
                          0
                          В Одноклассниках калькулятор мне не задавали.
                          Задачки были несколько посложнее. Ну и вторая из них выглядит как выносящая мозг любому Java-разработчику в силу своей специфики.
                    +15
                    Одна из причин почему не вылазим с фриланса. Внезапные приступы тормозной тупости с реактивной гениальностью. Работает по принципу как в том мультике "Лучше день потерять потом за пять минут долететь"
                    Один раз, в глубокой молодости, интервью случилось аккурат в приступе «реактивной гениальности» и к несчастью прошло успешно. Первая неделя была крайне интересной — каждый день 8 часов тупого пяления в монитор и 3 строчками кода, потом приступ кодинга вечером в домашнее время и притащенное утром решение задачи над которым контора уже 3 дня билась. Через неделю увольнение, после беседы с директором, который это объяснение выслушал с недоверчивым прищуром и явным подозрением, что у нас дома спрятана какая-то команда индусов, а собес был просто куплен по знакомству.
                    Теперь принцип простой. Только проектный фриланс. К любой задаче даже 1 день сроком прибавляется неделя на выполнение. Никакие задачи не показываются в состоянии "тут будет дом, а то что сейчас забор после 50% срока, это норм" Со студиями спускающими нам проекты как «неграм» очень даже работает (правда портфолио не пополняет), с конечными клиентами это уже сложнее (обычно хотят видеть плавный постоянный прогресс, а не авралы с простоями), а вот в команду с таким подходом без шансов — незакоммитил пару килобайт за сутки — весь следующий день будешь оправдываться перед тимлидом вместо работы — это сильно расстраивает на самом деле.
                      +3
                      Где такие заказы:
                      К любой задаче даже 1 день сроком прибавляется неделя на выполнение.
                      ?=) Никогда толком фрилансом не занимался, но как не попадется какая-нибудь «подработка», то вечно с какими-то горящими-сумасшедшими сроками. Не люблю торопиться, поэтому никогда не беру, поэтому нет дополнительных денег (а хотелось бы=) ).
                      незакоммитил пару килобайт за сутки — весь следующий день будешь оправдываться перед тимлидом вместо работы — это сильно расстраивает на самом деле.
                      — очень не очень, согласен!
                        +2
                        ?=) Никогда толком фрилансом не занимался, но как не попадется какая-нибудь «подработка», то вечно с какими-то горящими-сумасшедшими сроками. Не люблю торопиться, поэтому никогда не беру, поэтому нет дополнительных денег (а хотелось бы=) ).
                        Зачастую сводится к цене.
                        Высокий ценник — будут лишь авральные заказы по типу «надо было вчера», т.к. иначе за что платить при прочих равных? Будет низкий ценник — будет из чего выбирать, в т.ч. и заказы вида «мне не горит, главное что бы цена приятная» будут.
                        Тут просто вопрос насколько Вы готовы снижать цену ради приятности заказа. Допустим приходит к Вам заказчик и кидает на стол штукарь баксов «что бы завтра все было готово», а Вы так задумчиво три сотни оттуда тянете, остальное ему обратно двигаете и говорите «а что насчет следующей недели»? И зачастую спешка внезапно куда-то пропадает.
                        .
                        Вторая частая ситуация — многим нужна не столько срочность, сколько гарантированность сроков. А срочность они просят просто потому, что хотят иметь время найти кого-то еще, если тут продинамят. В таких случаях можно обсудить увеличение сроков в обмен на повышенные финансовые гарантии со своей стороны. Типа — а давайте я сделаю это за неделю, а не за день, но если пропущу сроки, то не Вы мне косарь отвалите, а я Вам в качестве неустойки. Достаточно типичный вариант со студиями, кстати, которые сами перед заказчиком отвечают.
                          +2

                          Очень кстати прикольное предложение про "за три сотни и никуда не торопимся", чем-то оно мне нравится.


                          Напоминает анекдот про давно прошедшие времена в судах России:


                          К судье приходит секретарь и говорит: «Ваша честь, у нас проблема. Ответчик дает 130 тыс., а истец дает 100 тыс. Что будем делать?» Судья говорит: «Верните 30 тыс. ответчику, и будем решать дело по закону».

                          И второе предложение хорошо смотрится. Блин. Почему такая практика нигде не прижилась?? Что для этого нужно?

                            0
                            Почему такая практика нигде не прижилась?? Что для этого нужно?
                            Не так много людей кому это подходит.

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

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

                            Странный директор — если проблемы решаются, какая разница каким образом это делается?
                            Paskin «самураю не важна цель, ему важен путь» как-то так. В крупных фирмах предсказуемость и планируемость на первом месте, т.к. иначе невозможно управлять большими процессами. Представьте себе что у Вас колесо авто то 1 оборот в секунду делает, то 10, но в среднем выдает те самые нужные 5 — надо оно Вам в автомобиле?:)
                        +4
                        Странный директор — если проблемы решаются, какая разница каким образом это делается?
                        К нам как-то пришла на интервью девушка, прямо сказавшая что руками она тестировать умеет, а автоматические тесты только начала изучать — но у нее муж крутой спец в этом деле и будет ей советовать если мы ее возьмем.
                        То ли девушка поскромничала, то ли муж действительно оказался крутым спецом — но тестов она написала целую кучу и вполне по делу.
                          +1

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


                          Тесты не имеют отношения к алгоритмам. Рассказ про то как тесты мешали написать интепретатор смахивает на сказочку.


                          Владение лайвкодингом это признак готовности или неготовности. Всё тренируется. И да не спешите. Тяните время. Но это интересно на самом деле проверять самого себя.

                            +1

                            Некоторые действительно не могут эффективно писать по TDD. Особенно если вообще тесты никогда не писали.

                              0
                              Достаточно одного! но крутого действующего проекта, которым можно хлестать по фейсу любого интервьюера.

                              Одного — но действительно крутого — проекта — вполне достаточно для того, чтобы вообще не связываться с интервьюерами, а разговаривать сразу с CTO за ланчем.

                                +4
                                Тесты не имеют отношения к алгоритмам. Рассказ про то как тесты мешали написать интепретатор смахивает на сказочку.

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


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

                                  +3

                                  Причём, емнип, по канону сперва код должен сперва быть такой, чтоб тест падал.

                                    +3
                                    нормального программиста просто от такого будет воротить и придется преодолевать себя

                                    Какой-то у вас неправильный нормальный программист :) для задач уровня парсера выражений TDD очень даже удобен, там тесты нужны уровня expect(calculate("2+2*2"), equals(6));
                                      0
                                      Ну, это такое. Лично я считаю, что TDD — это overhyped фигня, которая не везде подходит, а часто написание тестов «после» намного удобнее и дает большее покрытие.
                                      А тестирование некоторых вещей — долго и дорого, по сравнению со стоимостью/сроками решаемой бизнес задачи.
                                        +1
                                        а есть ещё совсем свежее поколение разработчиков которое считает что логирование не нужно. про сложность алгоритмов уже ни один андроид-разраб ответит не способен. что же будет дальше.
                                          –1
                                          Это ваши аргументы или мысли вслух?
                                            0
                                            это реальность. но я как специалист на фоне такого буду больше зарабатывать. так что можете не тестировать, забыть про логирование, наплевать на сложность алгоритмов, не интересоваться структурами данных.
                                              0
                                              Ну, я не говорил, что автоматизированные тесты не нужны. Я сказал, что я считаю, что TDD не нужно.

                                              И, да, не беспокойтесь, безработица мне не грозит.
                                        0

                                        Парсер выражений должен выдать на выходе не 6, а AST: Add(Const(2), Mul(Const(2), Const(2))).


                                        Два таких дерева сравнить — уже нетривиальная задача (придётся добавлять во все классы метод Equals исключительно для нужд тестирования). А как начинать писать код с тестов, а не с классов для представления AST — для меня и вовсе загадка...

                                          0
                                          придётся добавлять

                                          Или не придется


                                          А как начинать писать код с тестов

                                          Можно написать некомпилирующийся тест

                                            0
                                            Можно написать некомпилирующийся тест

                                            …без подсказок IDE. А современные IDE ещё и будут активно мешать.

                                              +1

                                              С подсказками.


                                              Это слишком большой тест для TDD. Сначала, придется написать Const(2), для этого надо будет написать Const — для текущего кусочка подсказок не будет, но будет кодогенерация

                                            0
                                            Ну, если надо именно аст красивый выдавать, то никто не мешает начать тест с более простого, типа Const(2), потом Add(Const(2),Const(2)). Не знаю, как там в строгом понимании TDD, но я бы делал так. Как минимум, api класса должно какое-то быть для теста. Скажем, та же функция createAst(String input) => throw Error();. Потом тест на неё, сначала expect(createAst("2"), equals(Const(2));, упадёт по-любому, потом можно к минимальной реализации приступать.

                                            придётся добавлять во все классы метод Equals исключительно для нужд тестирования

                                            В нормальных языках уже завезли data-классы.
                                              –1

                                              В каноническом TDD вы API создаёте пытаясь заставить тест скомпилироваться или что там у вас. То есть используете в тесте какой-то не существующий AstNode интерфейс с методом, например, children, получаете ошибку компиляции и только потом создаёте этот интерфейс с этим методом.

                                          +3
                                          Ну в случае ТДД это действительно так — в рамках ТДД вы не можете сразу начать писать итоговый алгоритм, даже если его знаете. Вам надо для каждого теста писать недоалгоритм, а потом с нуля его переписывать под новый тест.

                                          И если не секрет, то в чем здесь проблема? В .net я обычно пишу либо интерфейс без реализации, на него тест, и далее реализация. Либо метод с NotImplementedException, на него тест, далее реализация.

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

                                          Чушь и не правомерное обобщение=)
                                          TDD удобно если умеешь, если есть на него время, если проект в долгую и если не заставляют. Да «если» тут много.
                                            0
                                            И если не секрет, то в чем здесь проблема?

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

                                              +1
                                              Требуется больше итераций и кода на выброс, чем если сначала написать все тесты потом весь код или наоборот.

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

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

                                                Для этого достаточно интерфейса.


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

                                                Мы рассматриваем ситуацию когда алгоритм известен. Например вычисление выражений с приоритетами.

                                              0
                                              И если не секрет, то в чем здесь проблема? В .net я обычно пишу либо интерфейс без реализации, на него тест, и далее реализация. Либо метод с NotImplementedException, на него тест, далее реализация.

                                              Здесь скорее отсылка к тому, что на первый простейший тест у Вас реализация будет простая — вернуть константу. Потом Вы реализуете какой-нибудь наколеночный парсинг выражений, потом будете добавлять-добавлять и в конечном итоге упретесь в то, что, чтобы это работало быстро, надо все выкинуть и переписать на каком-нибудь парсер-генераторе/модной парсинг либе. И получится, что в один шаг надо большую часть реализации переделать/выбросить все ранее написанное. Или, например, реализация более-менее понятна, известный алгоритм с небольшими модификациями. И тут TDD, и нельзя просто взять и написать алгоритм. Надо ментально нарезать его на какие-то мелкие шаги, которые бы работали инкрементально, но чтобы не писать лишнего для отдельного шага. Потому что по TDD нельзя писать лишний код и нельзя писать тесты, которые уже работают (не сломаны).
                                                0

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

                                                  0
                                                  Конкретно для реализации сложения и вычитания — да. А если Вам надо будет поддержать сложные выражения и/или оптимизацию выражения для частых вычислений и JIT компиляции прямо в машинный код, наколеночное решение тут же проиграет.
                                                  На парсер-генератора/модной парсинг либе это чтобы быстро написать, а не чтобы быстро работало.

                                                  Не согласен. Допустим, вы транслируете выражение в LLVM байткод, а LLVM генератор выдает Вам машинный код. И вот оно уже работает быстро.
                                                    0

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

                                                      0

                                                      Мы про TDD говорим, а не про интервьюеров. На интервью надо все руками писать, без библиотек, потому что вся суть задания — посмотреть, как кандидат пишет код руками, а не пользуется готовыми решениями или копирует со стэковерфлоу, даже если есть готовые решения.

                                                        0

                                                        Хм… Я вот понизил бы рейтинг кандидата, который хотя бы не задал вопроса о возможности использовании готовых библиотек, а сразу сел писать парсер.

                                                  0
                                                  получится, что в один шаг надо большую часть реализации переделать/выбросить все ранее написанное.

                                                  Программирование, и даже TDD — это ведь не культ (обычно), необязательно неуклонно следовать непонятно кем описанным условностям. Можно, если в голове уже есть представление, что делать, тесты писать более крупными мазками, не начиная с банальщины.
                                                    0
                                                    TDD — это ведь не культ (обычно)

                                                    Разве?

                                                      0

                                                      Я ведь уточнил, что "обычно" :) И да, часто для дискуссии нужно чуть больше, чем одно слово и минус.

                                                        0
                                                        Я ведь уточнил, что "обычно" :)

                                                        Без "обычно". Тут я вижу есть определенное непонимание — некоторые под ТДД подразумевают просто "пишу код и тесты параллельно, как мне будет удобно". Но нет, это не тдд, это просто человек как-то пишет тесты. ТДД же строго регламентирует как и когда пишутся тесты/продакшн код, из этого регламента тдд и состоит. И если вы базовые принципы тдд нарушаете, то это уже не тдд.
                                                        Ну в самом деле, если вы, когда это удобно и разумно, пишете сперва код, а потом тесты, то в каком месте это будет test driven development?

                                                          –1
                                                          И если вы базовые принципы тдд нарушаете, то это уже не тдд.

                                                          Когда человек начинает использовать TDD, ему ведь не дают подписать контракт, запрещающий любые другие подходы? Можно вполне быть разумным человеком и применять то, что удобнее в конкретной ситуации. Также как если человек придерживается в основном ООП, а потом где-то тулит Util- класс или передаёт лямбду в качестве аргумента, (обычно) к нему не прибегают ООП-апологеты с палками.
                                                            0

                                                            TDD это про проектирование и валидацию системы при эксплуатации. А также про эксплорацию кода на каждом из этапов.
                                                            Тесты взаимодействуя с интерфейсами имитируют работу системы, поставляя ей набор данных от других интерфейсов. Реальной системы может ещё и не быть, а всё состоять из рендеров или заглушек. Задача разработчика заменить рендеры и заглушки на реальный код, сохраняя ее работоспособность. Которая и проверяется тестами. Насколько хорошо? Это зависит от граничных данных которые мы хотим или не хотим получать или передавать. Иногда ты физически можешь работать только со статическим рендером, но остальные части твоей системы об этом ничего не знают, так как общаются через интерфейс, который скрывает реализацию и если надо имитирует готовность и валидность.
                                                            Поэтому разумно начинать проектирование именно с описания интерфейсов. Которые обычно задаются схемами с последующей кодогенерацией.

                                                      +1

                                                      Мелкость шагов по TDD определяется разработчиком.

                                                      +1
                                                      И если не секрет, то в чем здесь проблема?

                                                      Проблема в том, что вам надо написать код, который вы совершенно точно целиком выкинете через 5 минут. И так несколько раз.


                                                      Еще проблема ТДД — программист не имеет права сразу в коде обрабатывать краевые случаи. Сперва вы должны написать алгоритм без обработки каких-либо краевых случаев, а потом добавлять краевые случаи по одному с соответствующими тестами. Засада тут в том, что в случае сложного алгоритма можно про эти краевые случаи просто забыть — они пока алгоритм пишешь очевидны, а потом уже нет. В итоге возникает парадоксальная ситуация, когда код написанный в лоб в один присест без всяких тестов оказывается более надежен, чем написанный по ТДД со 100% покрытием.

                                                        +1
                                                        Проблема в том, что вам надо написать код, который вы совершенно точно целиком выкинете через 5 минут. И так несколько раз.

                                                        Эм, с чего бы? Вероятно я вас не понимаю, вы не могли бы привести пример, какие «недоалгоритмы» понадобятся, чтобы написать тесты на калькулятор?
                                                        Еще проблема ТДД — программист не имеет права сразу в коде обрабатывать краевые случаи. Сперва вы должны написать алгоритм без обработки каких-либо краевых случаев, а потом добавлять краевые случаи по одному с соответствующими тестами.

                                                        Эм? А эту догму вы откуда достали?
                                                        В итоге возникает парадоксальная ситуация, когда код написанный в лоб в один присест без всяких тестов оказывается более надежен, чем написанный по ТДД со 100% покрытием.

                                                        Довольно бездоказательное утверждение. К слову 100% покрытие — это такой же не здоровый фанатизм, как и полное отсутствие тестов.
                                                          +1
                                                          Эм? А эту догму вы откуда достали?
                                                          https://blog.cleancoder.com/uncle-bob/2014/12/17/TheCyclesOfTDD.html

                                                          • You must write a failing test before you write any production code.
                                                          • You must not write more of a test than is sufficient to fail, or fail to compile.
                                                          • You must not write more production code than is sufficient to make the currently failing test pass.
                                                            0
                                                            Эм, с чего бы? Вероятно я вас не понимаю, вы не могли бы привести пример, какие «недоалгоритмы» понадобятся, чтобы написать тесты на калькулятор?

                                                            Ну, хотя бы, что на первый тест assertEqual(3, eval(«1+2»)); по TDD надо написать минимальный код, который починит тест, которым является return 3; Чтобы прийти к return a+b; надо написать минимум два теста. Соответственно, «return 3» тот самый выброшенный код.
                                                            Этот пример, конечно, упрощение, и в реальном мире все сразу напишут return a+b; что будет отступлением от канонов TDD. А если мы разрешаем пропускать шаги и писать больше кода, чем это требуют тесты, то легко пропустить юзкейсы, которые надо было бы зафиксировать в тестах (чтобы убедиться, что они все еще будут работать при последующих рефакторингах), потому что юзкейсы-то уже покрыты и тесты не сломаны.

                                                            Эм? А эту догму вы откуда достали?

                                                            Это может было озвучено немного неправильно, но, по сути, это так: в TDD 1) надо писать тест вперед, 2) тест изначально должен быть сломан, 3) надо писать минимальный код, чтобы сделать тест работающим. Если принять, что краевые случаи требуют отдельного кода для обработки, то вышесказанное верно.
                                                            Так что достали прямо из пузика TDD.

                                                            К слову 100% покрытие — это такой же не здоровый фанатизм, как и полное отсутствие тестов.

                                                            Ну, по TDD у Вас оно всегда должно быть 100%. Вывод: TDD — нездоровый фанатизм.
                                                              +1
                                                              1) надо писать тест вперед, 2) тест изначально должен быть сломан, 3) надо писать минимальный код, чтобы сделать тест работающим.

                                                              Там выше цитату приводили, что надо писать мало того, что минимальный, но еще и production(не знаю, как на русский перевести), коим return 3 врядли является. Вот если бы return 42, но он тест не пройдет.

                                                              Ну, по TDD у Вас оно всегда должно быть 100%. Вывод: TDD — нездоровый фанатизм.

                                                              Любую идею или подход можно довести до абсурда, мне кажется, что если я сначала напишу набор тестов на граничные случаи, которые взбредут в голову, потом код, который их последовательно закрывает, то это все равно можно назвать TDD.
                                                                –1
                                                                Там выше цитату приводили, что надо писать мало того, что минимальный, но еще и production(не знаю, как на русский перевести), коим return 3 врядли является. Вот если бы return 42, но он тест не пройдет.


                                                                production он в том плане, что это не код тестов, а код, собственно, продукта. И это вполне валидный продакшен код, соответствующий спецификации (которая требует, чтобы в итоге результат был «3»).

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

                                                                Лично я делаю так: пишем некий код. Потом задаемся вопросом: «делает ли этот код то, что я хочу?». Пишем тест. Проверяем. Поправляем, если не делает. А если я вот так позову, должно вот такое возвращать. Если вот так — вот такое. Нет этих глупых ограничений, что тест должен быть изначально сломан. Есть нюансы в том, чтобы убедиться, что Вы пишете правильные тесты, которые тестируют именно то, что Вы думаете оно тестирует. Обычно я просто изменяю тот кусок, который я думаю оно должно тестировать на заведомо неправильный и убеждаюсь, что тест сломался.
                                                                  0
                                                                  production он в том плане, что это не код тестов, а код, собственно, продукта. И это вполне валидный продакшен код, соответствующий спецификации (которая требует, чтобы в итоге результат был «3»).

                                                                  Не могу согласиться, спецификация все же требует, чтобы была обработана строка «1+2» и на выходе был правильный результат, который равняется «3». Можно конечно возразить, что есть вариант захордкодить все возможные входящие строки, но это абсурд и ИМХО никак не является требованием TDD, смысл 3го шага, который refactor там в том, чтобы сделать изначально работающий корректно код более сопровождаемым и/или читабельным.

                                                                  P.S. Сейчас открыл книжку Бека, как одного из основателей подхода, там действительно предлагается на первом шаге предлагается хардкодить вычисленный в голове результат, но, опять же ИМХО, это намеренное утрирование, чтобы было понятно, что тесты должны запускаться почти на каждую компиляцию, а компилировать стоит почти на каждую новую строку (люди пишушие на C++ вздрогнули).
                                                                    0

                                                                    Хотелось бы всё-таки точную цитату а не имхо. Вообще тесты сейчас просто фоном в процессе набора гоняются NCrunch и live unit testing.


                                                                    Некоторые вообще пропагандируют подход работать и коммитить маленькими кусочками


                                                                    https://medium.com/@kentbeck_7670/test-commit-revert-870bbd756864

                                                                0
                                                                и в реальном мире все сразу напишут return a+b;

                                                                А вот и нет. В реальном мире TDD сначала пишут тест, и он даже не должен собираться и выполниться, потому что еще не написали eval. Тесты уже начинаются с этого места.

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

                                                                Ну очень просто — допустим, вы хотите сделать реализацию калькулятора через стек.
                                                                Но сперва вам надо написать калькулятор, который парсит выражение без скобок/приоритетов — так как вы напишите, например, тест "1+2+3+4" (а до этого — вообще тесты на "5" или пустую строку). Потом вы, например, добавляете скобки или приоритеты — но вы не можете из калькулятора без скобок/приоритетов сделать калькулятор со скобками/приоритетом — это принципиально другой алгоритм. Изначально же подложить соломки и сразу писать алгоритм с возможностью допиливания — вы не имеете права, т.к. если у вас есть тест "1+2+3+4", то вы должны писать код конкретно под зафиксированный этим тестом инвариант — не более того. Если бы в описанном в обсуждаемой статье случае вы начали объявлять какой-то там стек, то вам бы интервьюеры сказали бы: "а зачем вам этот стек? 1+2+3+4 можно распарсить и посчитать без всего вот этого".


                                                                Эм? А эту догму вы откуда достали?

                                                                Ну, это и есть определение ТДД — не писать код до теста, который покроет этот код. Если вы сперва пишите код, а потом тесты на него (в данном случае — сперва пишите код для обработки краевого случая, а потом тест для этого случая) — это прямой tdd violation.


                                                                Довольно бездоказательное утверждение.

                                                                Я же выше объяснил как это происходит, что там бездоказательного? Да, обрабатывать краевые случаи постфактум некоторым людям труднее, чем "на ходу", и в этом случае вероятность не обработать данный случай — становится выше. Как следствие — выше вероятность возникновения багов. Как следствие — выше их фактическая плотность.


                                                                К слову 100% покрытие — это такой же не здоровый фанатизм, как и полное отсутствие тестов.

                                                                С тдд у вас всегда будет 100% покрытие. Т.к. любой код пишется по причине непрохождения какого-либо теста — который этот код потом и покроет.

                                                                  0

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

                                                                    0

                                                                    А можно пример рефакторинга в результате которого возникает непокрытый код из покрытого?

                                                                0

                                                                Программист имеет право сразу написать тесты на краевые случаи, если они ему очевидны с самого начала, типа факториал нуля равен единице

                                                                  0
                                                                  Программист имеет право сразу написать тесты на краевые случаи

                                                                  Программист имеет право вообще не писать тесты, например. Только это будет уже не ТДД :)

                                                        +12
                                                        Чем-то похоже на блиц-шахматы. Это надо иметь навык и/или талант. Алёхину, понятно, это не помеха, но обычные люди, хорошие шахматисты, очень часто теряются.
                                                          +3
                                                          по-моему, очень удачное сравнение!
                                                          +4

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

                                                            0

                                                            Чем писание кода на доске не лайвкодинг?! В период пандемии теперь все интервью — лайв кодинг: пишете в каком-нибудь coderpad, там же и запускаете. Решение задачек на доске/блокноте — это повсеместные практики интервью для программистов. И да, к этому надо готовиться, тренироваться. Есть задачи на знание алгоритмов и структур данных, есть — на реализацию (как у автора).

                                                              +2
                                                              На доске тоже лайвкодинг, да. Разве я говорил обратное?
                                                              Да и про то, что это весьма распростанено, тоже понятно.
                                                              Я говорил только, что реально стрессирует. Конечно если много раз выступить таким образом, стресс должен уйти.
                                                                +4
                                                                И да, к этому надо готовиться, тренироваться.

                                                                Единственно непонятно, каким боком этот скилл связан с реальной работой.

                                                                  0

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

                                                                    0

                                                                    Лайвкодинг — он разновидность кодинга. Так что он похож на то что делается на работе.

                                                                      0

                                                                      Более того, на многих проектах это нормально. Не то чтобы прямо каноническое парное программирование, но спонтанно возникает: кто-то помощи просит, подходишь и вдвоём в монитор смотрите, а код пишет один.

                                                                        +1

                                                                        Там другая атмосфера, нет ощущения экзамена, а это ощущение как раз ответственно за 80% провалов.

                                                                          +1

                                                                          Так это ощущение, надо от него избавляться. Собственно когда избавился, крайне редко испытываю сожаление, что не прошёл. В 80% случаев облегчение что пронесло )

                                                                      –3
                                                                      А может даже и вреден, ведь в том же Яндексе нет своих уникальных продуктов, всё откуда-то спёртое. Ну и особо про качество тоже не сказать, тот же Яндекс.Диск как то системы пользователям поудалял.
                                                                        0
                                                                        А можете привести пример «уникального» продукта? Интересно, что вы вкладываете в это слово.
                                                                          –3
                                                                          Зачем?
                                                                            +1
                                                                            Объясню. В моём представлении об устройстве мира все продукты уникальны. Вы не найдёте два идентичных продукта. Да, даже в Яндекс.Браузере, на мой вкус, есть неплохие технологические фишки, которых нет больше нигде, хотя база же на Хромиуме. Идеи, на которых строятся продукты, могут быть не уникальны, да. Новые идеи вообще редко когда возникают сейчас. Вот только люди пользуются не идеями, а конечными продуктами. И их удовлетворённость зависит от того, как продукт реализован, а не как идея сформулирована. Поэтому мне и стало интересно, что же такое «уникальный продукт» в вашем представлении. Хочется посмотреть на него.
                                                                              0
                                                                              Уникальный продукт это который вы придумали и выпустили в мир первые, например? Это всё тонкие материи, насколько копия отличается от оригинала и мало интересно. Есть же специалисты по копированию, тот же Naspers. Мало кто знает, что они делают, но многие пользуются. Нет в этом ничего плохого. Ну просто им придумывать ничего не надо, надо просто хорошо повторить.

                                                                              А если бы фишки яндекс.браузера были заметны, его бы не пришлось ставить из каждого утюга с оплатой за инсталл. Так-то и в браузере который я делаю «фишки» есть.
                                                                                +1
                                                                                Уникальный продукт это который вы придумали и выпустили в мир первые, например?

                                                                                Веб-поиск, например? Если, конечно, не считать Yahoo! Directory — поисковой системой, или Lycos — хоть сколько-нибудь конкурентноспособным. Или это недостаточно революционно для вас? Или вы думаете, что Гугл старше? Или что?

                                                                                  0

                                                                                  Но вы не привели пример :)


                                                                                  В вашей терминологии есть предвзятость: подразумевается, что «копия» это что-то заведомое более плохое, чем «оригинал». Понятно, что наверно есть мелкие ребята, которые просто копированием занимаются, но в реальности и у крупных ребят обычно похожие продукты возникают вокруг похожих идей, и заменить один на другой не всегда просто. Например, Netflix и Amazon Prime. На одном есть сериалы «Загадочные события», на другом «Пацаны». Но я не хочу смотреть «Пацанов». Имеет ли в этом случае значение, кто из них появился раньше? А если нет, то в чем физический смысл довода про «неуникальность»? Вы думаете, у ребят из Амазона техническая сложность задач ниже? Конечно же, нет. Или вот Альтависта и Гугл. Правда ли тут важно кто «копия»? Повлияло ли это на качество продукта, успех в будущем или сложность задач?


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


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

                                                                                    0
                                                                                    Ну нет, я к тому, что придумывать что-то уникальное не надо и всё. не надо глубокого смысла искать. Есть готовый продукт и надо сделать не хуже. К тому же в Яндексе полно уважаемых специалистов, типа Полухина, например, которые плохо сделать не дадут ну или исправят.
                                                                                      0

                                                                                      Ох, если бы всё было так просто :)


                                                                                      Антон крутой, да. Кстати, скоро планирует новый пост опубликовать.

                                                                    0
                                                                    У меня тоже похожее было, я застыл и после 20ти минут тупения в монитор. сказал что я завис, и я без понятия что надо делать. Но зато после интервью мне дали детальнейший отзыв расписали что не так и как оно должно быть
                                                                      +7

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


                                                                      Кстати ещё раньше мода была на тесты на знание языка — вот это вообще жесть.

                                                                        0
                                                                        Ерунда.

                                                                        Это человеческая психология.
                                                                        Мы существа социальные, живущие в ранговой системе, и желание самоутвердиться в доминировании в нас неисправимо.

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

                                                                        Объективно они не настолько выше вас профессиональным классом, насколько они вам это показали.

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

                                                                        Тем не менее примите как данность — оно встречается.

                                                                        Но при этом ничего не говорит ни о фирме.
                                                                        Ни о потенциальных коллегах.

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

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

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

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

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

                                                                          habr.com/ru/post/414973
                                                                            +1
                                                                            Причины этого явления хорошо были показаны, например, в тюремном эксперименте в Стенфорде:

                                                                            … про проблемы которого в той же википедии есть ссылки, в англицкой подробней чем русской.
                                                                            Участники эксперимента играли в тюрьму. Некоторые прямо намеренно отыгрывали роль как они её видели: "Critics also noted that some of the participants behaved in a way that would help the study, so that, as one "guard" later put it, "the researchers would have something to work with," which is known as demand characteristics."
                                                                            Причём было указание прессовать "заключённых": "Although Zimbardo interpreted the experiment as having shown that the "prison guards" instinctively embraced sadistic and authoritarian behaviors, Zimbardo actually instructed the "guards" to exert psychological control over the "prisoners"."
                                                                            То есть, они попросту делали что а) входило в роль; б) было прямо запрошено заказчиком.

                                                                              –1

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

                                                                                +2

                                                                                Странная логика. Вам показывают проблемы дизайна исследования, а вы говорите, что это не отменяет его выводов.

                                                                                  –1
                                                                                  Странная логика. Вам показывают проблемы дизайна исследования, а вы говорите, что это не отменяет его выводов.

                                                                                  А в чем конкретно проблемы дизайна? Т.е., да, люди делали то, что:
                                                                                  а) входило в роль; б) было прямо запрошено заказчиком.


                                                                                  Это входит в изначальную постановку эксперимента в явном виде, и, конечно, эти факторы всегда учитывались в выводах.


                                                                                  Непонятно, почему вы решили, что кто-то говорил будто "они сами" — эксперимент как раз и должен был в том числе продемонстрировать влияние ролевой модели и авторитета. Людям сказали сыграть отбитых ублюдков — и они с радостью начали играть отбитых ублюдков, искренне получая от этого удовольствия и не обращая никакого внимания на то, что, вообще-то, приносят другим людям вполне себе реальные страдания.
                                                                                  Разве охранники сказали "с нас хватит, мы не будем заниматься этим дерьмом"? Нет. Не смотря на то, что это были вроде бы обычные нормальные люди, не склонные к садизму.


                                                                                  evadesad


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

                                                                                  Все верно. Ровно это (в том числе) в эксперименте и исследовалось.


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

                                                                                  Ноуп, им никто не приказывал, только предлагал. В стенфордском эксперименте еще исследовалось влияние ролевой модели.


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


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

                                                                                    +1
                                                                                    Ноуп, им никто не приказывал, только предлагал.

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

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

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

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

                                                                                      Так это "заключенных" не выпускали, т.е. вы сейчас на мою мельницу воду льете — у людей настолько сдвинулось восприятие реальности, что они действительно начали считать, что это нормально кого-то не выпускать!
                                                                                      Мы же обсуждаем конкретно поведение "вертухаев" — их никто ни к чему не принуждал. Им просто предложили "поиграть в ублюдков" — и они с радостью начали играть в эту игру, забив полностью на тот факт, что, вообще-то, "заключенным" они доставляют вполне реальные страдания. Они могли этого ничего не делать, их никто не заставлял.


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

                                                                                      Нет, этого не было.


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

                                                                                      Нет, этого не было.


                                                                                      Была сформулирована определенная роль: сыграть злобных вертухаев-ублюдков, собственно:


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

                                                                                      А дальше — уже полная самодеятельность. Ни к каким конкретным действиям "вертухаев" никто не принуждал.


                                                                                      Самое забавное тут вообще то, что эксперимент-то изначально состоял в изучении поведения заключенных. Никто не ожидал, что "вертухаи" начнут превращаться в реальных садистов уже буквально через несколько дней.


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

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


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


                                                                                      С чем тут можно спорить — непонятно.

                                                                                        0
                                                                                        Так это "заключенных" не выпускали, т.е. вы сейчас на мою мельницу воду льете — у людей настолько сдвинулось восприятие реальности, что они действительно начали считать, что это нормально кого-то не выпускать!

                                                                                        А Вы перечитайте кто конкретно не выпускал. Сам же руководитель лично и.


                                                                                        Никто не ожидал, что "вертухаи" начнут превращаться в реальных садистов уже буквально через несколько дней.

                                                                                        С чем тут можно спорить — непонятно.

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

                                                                                          +1
                                                                                          А Вы перечитайте кто конкретно не выпускал. Сам же руководитель лично и.

                                                                                          При поддержке остальных "работников тюрьмы", ага.


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

                                                                                          Эм, так не был. Людям предложили поиграть в ублюдков — а они стали ублюдками.
                                                                                          Понимаете разницу? Я могу делать вид, что бью вас дубинкой, делая это "по-нарошку", а могу просто бить дубинкой. Если не вы, то ваши почки разницу ощутят, поверьте. При этом никаких угрызений совести я испытывать не станут — ведь это всего лишь игра, без обид. Это не я жестокий человек, это у меня просто роль такая была — от*издить вас дубинкой.


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

                                                                                            0

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

                                                                                              0
                                                                                              Ещё раз, по буквам: ожидаемый результат эксперимента и ожидаемое поведение было донесено до "охранников" заранее, до начала эксперимента.

                                                                                              Ну да все верно. Установление ролевой модели — это часть эксперимента.


                                                                                              А не "они сами стали такими в ходе эксперимента"

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


                                                                                              Не "сами в ходе", а "как задали заранее — так и вели"

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

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

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

                                                                                  0

                                                                                  С собеседованием тоже самое может быть: сказали программисту провести его в первый раз в жизни и он вспоминает такие посты на Хабре и начинает отыгрывать роль крутого собеседующего.

                                                                                    0

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


                                                                                    Эксперимент Милгрэма, кстати, поляки воспроизвели. https://journals.sagepub.com/doi/10.1177/1948550617693060

                                                                                      0

                                                                                      Милгрэма с влиянием авторитета и тут считают затесавшимся, то есть знатно влиявшим эффектом.

                                                                                    0
                                                                                    Ерунда.

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

                                                                                    А.С. Макаренко и Э.В. Ильенков давно научно опровергли туфту, что люди говно по своей природе.
                                                                                      0
                                                                                      А.С. Макаренко и Э.В. Ильенков давно научно опровергли туфту, что люди говно по своей природе.

                                                                                      А можно ссылку? А то по этим фамилиям гуглится только всякие методики воспитания. А раз надо воспитывать, значат биологические обусловленое стремление доминировать всё-таки существует. Правда унижать других — это лишь один из способов(ИМХО самый непродуктивный). Но это я больше на интуиции и логике на малом количестве субъективных наблюдениях.
                                                                                        0
                                                                                        У меня же прямо написано, что у человека есть потребность быть уважаемым в коллективе. Для этого можно быть самым справедливым, самым смелым. Или хотя бы стремиться к этому. То есть доминировать в положительном смысле.

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

                                                                                        А Ильенков доказал, что человек является продуктом общественной практики, а не чем-то отдельным. Это подтверждается Загорским экспериментом, где сделали людьми слепоглухонемых детей, которые в обычных условиях стали бы почти «овощами». Ну и не забываем про реальных маугли, которые во всём вели себя, как животные, с которыми выросли.
                                                                                    +8

                                                                                    Я 5 недель уже сижу без работы. Опыт разработки лет 8-9. Каждое техническое собеседование как колоноскопия. С лайвкодингом никогда не сталкивался и, надеюсь, не столкнусь. Это же вообще ад.


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

                                                                                      0
                                                                                      Как и автору поста, вам помогла бы работа над ошибками. Да, работа над ошибками, все очень просто.
                                                                                      Приходим домой после собеседования и сразу выписываем какие были вопросы, как мы на них отвечали и какая была реакция интервьюеров. Бывает, что на некоторые вопросы удалось хорошо ответить, такое сохраняем отдельно и стараемся запомнить к следующему интервью. Те вопросы, где есть какие-то сомнения в ответе или реакция интервьюера нам не понравилась, прорабатываем и находим ответы дома в спокойной обстановке. Так к вашему -дцатому собеседованию у вас будет покрыто 90% наиболее частых вопросов.
                                                                                        0

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


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

                                                                                          0
                                                                                          Есть ещё мой косяк — я периодически читаю информацию, связанную с популярными вопросами, но я ее не запоминаю, поэтому на некоторые вопросы не могу ответить вообще. Не откладывается у меня это в голове. И непосредственно в разработке пользы от этого нет.

                                                                                          Я еще в университете пришел к написанию шпор по памяти, а уже потом(к сожалению) вычитал, что запоминать лучше именно через воспроизведение информации, желательно в письменной форме.
                                                                                          Вот с тем, кроме собесодований, пользы нет — беда, трудно найти мотивацию это изучать такие вопросы. С другой стороны, почти любые знания рано или поздно пригождаются. Ну да — можно нагуглить за 5 минут, а можно просто помнить или хотя бы помнить что гуглить). Кстати, не вспомните пример такого вопроса(ов)?
                                                                                            +1

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

                                                                                              +1
                                                                                              Теперь я понимаю, откуда на хабре берутся статьи про ООП, SOLID и прочие баззворды — люди просто к собеседованиям готовятся :-).
                                                                                        0

                                                                                        У нас в семье этот ад регулярно на добровольной основе :)

                                                                                          +1
                                                                                          да, знакомо) Я вот 13 лет с JS суммарно, но на собесах просто большая половина мозга отваливается или занята не тем, чем надо, но все ровно половины мозга обычно достаточно для прохождения тех интервью.
                                                                                          Но вот лайвкоддинг в маленькой формочке на каком то сайте вообще застал врасплох, я там даже не мог нормально воспринять шрифт, цветовую схему и банально скобки расставить, буквально ослеп ибо не было еще и подсветки блоков/сигнатур.
                                                                                          Начал писать код, просто чтобы начать что то писать, до конца не поняв ТЗ по реализации API, ибо я ожидал от них спецификацию по интерфейсам, а они примеры вызовов налепили.
                                                                                          Короче, я как в универе- лучше начать что то делать, чтобы не совсем зафейлить). Очень долго рожал, как потом уже понял, посредственную фигню. Тупка жесткая, сам себе удивился… Просто дно, еще и при этом, в качестве хобби, коллаборатор/около ментейнер пакетов, один с которых с 17лямами загрузок в месяц и 1,5к зависимых модулей :)
                                                                                          0
                                                                                          Хоть и не одобряю лайвкодинг, должен признать что через какой-то время привыкаешь и волнение отходит, черствеешь как-то. Начинал всегда с чего-то тривиального, вся оптимизация, красота и пр. — потом, если есть время, в основном устно.
                                                                                          Если кому не нравится и хочет чтобы я на лайвкодинге фигачил продакшн код нон-стоп — пусть идет лесом.
                                                                                            +2
                                                                                            У самого было похожее интервью. Очень странные ощущения. Причем в какую-то задрипанную конторку из региона по профильному языку. Прошло ужасно и, естественно, не написали даже потом. А вот в одну крупную компанию пробовал собеседоваться (причем, только лайвкодинг и был) ради «а почему бы и нет» по совершенно непрофильному языку и на удивление прошло гладко, хотя тоже волновался, но впечатления остались приятнее.
                                                                                              +8
                                                                                              Причем в какую-то задрипанную конторку из региона по профильному языку.
                                                                                              Не надо так делать. В нормальные конторы на нормальную зарплату устроиться, как показывает мой пятнадцатилетний опыт, зачастую проще, приятнее и профита куда больше. У меня есть знакомые в малом бизнесе и не понаслышке знаю, если пойдёшь устраиваться продавцом в задрипаный бутик 2х2 метра — зачастую тебя будут на собесе (и на работе потом) драть и в хвост и в гриву, при зарплате в реальные копейки. С другой стороны, если не совсем олень, можно устроиться в место покрупнее, и получать без нервов зарплату получше, попивая кофеёк в кресле. Это какая-то профдеформация владельцев и мелких руководителей нижних сегментов рынка в постсоветских странах.
                                                                                                0

                                                                                                Согласен

                                                                                              +1

                                                                                              А мне норм. Главное, не воспринимать его, как и остальные собесы, как экзамен. Это как с противоположным полом знакомство. Когда вопросы задают, то смотрят подходите друг другу или нет, а не баллы считают (хотя, не исключаю...)

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

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

                                                                                                  0
                                                                                                  +1
                                                                                                    0
                                                                                                    Это как с противоположным полом знакомство. Когда вопросы задают, то смотрят подходите друг другу или нет, а не баллы считают

                                                                                                    А что, знакомство со своим полом в этом смысле как-то кардинально отличается?

                                                                                                      0

                                                                                                      Имелось в виду для романтических отношений. Такого опыта с своим полом у меня нет

                                                                                                        –3
                                                                                                        Имелось в виду для романтических отношений.

                                                                                                        Мне кажется, это стоило бы сразу уточнить.

                                                                                                    +1
                                                                                                    почти на всех недавних собесах я писал код онлайн, а их было штук 10, на некоторых даже поисковиками не давали пользоваться, для меня это тупо стресс… я привык думать в спокойной обстановке, попивая чаек
                                                                                                      +6

                                                                                                      Есть конторы особо упоротые на TDD, ничего плохого в этом нет, просто заранее кандидату надо сказать. Т.к. навык скоростного TDD прекрасно тренируется, погонял coding kata немного, и будете говорить на одном языке на собеседовании. Хуже когда по факту никакое TDD и не используется в конторе, и на собеседование протащили 'потому что модно', как с теми олимпиадными задачками в Гугле.

                                                                                                        0
                                                                                                        Кажется, моду на олимпиадные задачки придумал Гугл, потому что у них реально очередь из кандидатов, и надо отсеивать.
                                                                                                          0
                                                                                                          Еще хуже, когда у интервьюеров вертится в голове «ни проектов ни денег больше не стало, а начальство ищет человека — видимо на замену кому-то из нас». Тогда TDD может показаться детскими игрушками…
                                                                                                            +4
                                                                                                            Это называется конфликт интересов, можно задать об этом вопрос на начальных этапах. Ситуации, в которых появляются эти конфликты — угроза существующим процессам.
                                                                                                              0
                                                                                                              Вопрос-то можно задать — но кто же вам ответит, тем более когда интервьюеров несколько. Именно поэтому, если поведение интервьюеров вам показалось странным — лучше возблагодарить судьбу и поискать более нормальную компанию. А если странным образом ведет себя HR — вдвойне.
                                                                                                                +1
                                                                                                                Смотря кому задавать вопрос. Есть не заинтересованные источники, нельзя вот так вот просто взять и пойти и устроиться в произвольную компанию, не понимая, какие у неё текущие финансовые показатели, вероятные интересные проекты и обстановка внутри.
                                                                                                                При одном из предыдущих трудоустройств я не знал об этих показателях, и в итоге за это поплатился. Хотя там был опыт, и я особо сильно не жалею.
                                                                                                          +7
                                                                                                          Любая новая ситуация для человека — стрес. Это нормально. Пройдете десяток и все наладится.

                                                                                                          «Простейшая университетская задачка». Именно что университетская. Я в университете был последний раз десять лет назад. А на работе таких задач не было. Мозг забывает то, что не вспоминает регулярно. Кто-то здесь помнит уравнение фотосинтеза? А ведь это простая школьная задачка.
                                                                                                            0
                                                                                                            (Неожиданно для себя, но даже вспомнил. В школе учился лет 15 назад, и уверен, что за это время ни разу с формулой не встречался. А что было неделю назад — не помню. Память странная штука.)
                                                                                                              0
                                                                                                              уравнение фотосинтеза

                                                                                                              Да я сейчас даже уравнение получения C2H5OH из сахара не вспомню.
                                                                                                              –2
                                                                                                              В самом лайвкодинге ничего плохого нет. Он ставит целью проверить соображалку разработчика и умение родить какой-то алгоритм.
                                                                                                              Когда я проводил собеседования, то просил разработчка изобразить какой-нибудь простой алгоритм на целевом языке на доске. Сразу с оговорками, что всякие синтаксические ошибки если и будут — то не страшно. Из задач предлагалось обычно перевернуть строчку задом наперёд или поменять порядок бит в числе на обратный. Требовать парсер выражений писать бессмысленно. Так вот, далеко не все Senior'ы даже с такими задачами справлялись (что, в первую очередь, говорит о качестве рынка разработчиков в целом).

                                                                                                              Но если к вам приходят чуваки и говорят работать строго в одной парадигме (TDD), то от них надо бежать сломя голову. И есть серьёзные сомнения, что с архитектурой их проекта тоже не всё в порядке, и там костыль на костыле, но зато тесты работают.
                                                                                                                +4
                                                                                                                Ну да, я на своём первом интервью 10+ лет назад не смог написать Фибоначи. Передо мной положили листок — и внутри головы все сразу опустело, и я уже даже не особо понял задание, что они спрашивали. Потому что лайв-кодинг — это 80% стресс-тест и в лучшем случае около 20% — проверка навыков. И если бы у меня, даже на привычной мне работе, постоянно стояли бы сзади и смотрели бы, как я пишу код, я бы тоже долго не задержался. Слава-богу, такого нигде нет.
                                                                                                                Если человек не имеет привычку часто менять работу, или просто часто ходит на собеседования, шансы на успешное прохождение лайф-кодинга и алгоротмичных задач весьма низки. Говорит ли это как-либо о ровне навыков человека? Я не уверен в этом.
                                                                                                                  –4
                                                                                                                  И если бы у меня, даже на привычной мне работе, постоянно стояли бы сзади и смотрели бы, как я пишу код, я бы тоже долго не задержался. Слава-богу, такого нигде нет.


                                                                                                                  Ойли! А вы не слышали про парное программирование? Очень модная фигня, кстати. Не все это делают, но те, кто делают, очень этим гордятся.

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

                                                                                                                  Еще раз: к собеседованиям надо готовиться. Это не так, что сегодня вместо работы пошел на собеседование, а завтра — опять на работу. В хорошие компании люди по полгода готовятся к собеседованиям, по вечерам решая задачи на LeetCode, прорабатывая дизайны разных систем для дизайн интервью, делая mock-интервью.

                                                                                                                  Говорит ли это как-либо о ровне навыков человека? Я не уверен в этом.

                                                                                                                  Может, говорит, может — не говорит. Можно долго рассуждать на эту тему, но те, кто готовятся, попадают в хорошие компании на хорошие зарплаты, а те, кто не готовится, продолжают рассуждать, что это не показатель.
                                                                                                                    +1
                                                                                                                    Ойли! А вы не слышали про парное программирование? Очень модная фигня, кстати. Не все это делают, но те, кто делают, очень этим гордятся.
                                                                                                                    Ну тут совершенно разные ситуации, на самом деле.
                                                                                                                    При парном программировании вы сидите вместе не с каким-то абсолютно незнакомым мутным типом который смотрит на вас с подозрением «а не самозванец ли ты», а с коллегой по проекту с которым знакомы уже какое-то время и который знает что вы нормальный разработчик. И точно так же различаются цели: при парном программировании вы команда, ваша общая цель — написать рабочий код, а если один будет тупить/тормозить, то другой его поддержит и поможет, и это абсолютно естественно. На собеседовании же цель «написать рабочий код» только у вас, а цель интервьюера — оценить как вы умеете это делать, и каждый ваш затуп работает против вас, отнимая ценные очки (общее число которых вы знать не можете, и каждый затуп может оказаться последним), отсюда и стресс.
                                                                                                                      +3
                                                                                                                      У меня раньше тоже было такое отношение к собеседующему, типа, «меня оценивают», «ему нельзя доверять», «все советы интервьюера будут засчитаны не в мою пользу, если я ими воспользуюсь, ибо будет выглядеть как подсказка». И все поменялось, когда я перестал бояться интервьюеров и относиться к ним как к своим коллегам, где вы вместе на собеседовании пытаетесь решить общую задачу. Также, есть возможность показать свои софт скилы, как вы умеете слушать и общаться с другими, воспринимать критику.
                                                                                                                      Бывает, конечно, когда интервьюер &удак и нормальный диалог с ним трудно построить. Но тогда и Вам стоит задуматься: а хотите ли вы работать с такими &удаками в одной компании. Интервью — это обоюдный процесс: они оценивают Вас, Вы — их. Им тоже важно заинтересовать придти работать к ним в компанию (и сэкономить немного на Вашей зарплате, потому что работать с &удаками люди идут только если там платят больше других).
                                                                                                                        0
                                                                                                                        Да, интервьюверов тоже оценивают, но это сводится к вежливому поведению и рассказе о проекте/компании. Им не приходится активно защищать свои профессиональные навыки. Для них это не стресс, а рутина, или даже навязанная обязанность, как это бывало со мной.
                                                                                                                        Раньше, если хорошо подобрал компанию и она тебе подходила по профилю, можно было с очень высокой вероятностью устроиться туда, сейчас же люди зачастую собеседуются десятки раз, ибо это превратилось в лотерею, ну или в длительное задротсво.
                                                                                                                          +1

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

                                                                                                                      +2
                                                                                                                      Ойли! А вы не слышали про парное программирование?

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

                                                                                                                      И все поменялось, когда я перестал бояться интервьюеров

                                                                                                                      Это приходит с практикой, а не «потому что так подумал». Покуда не пойдешь их какое-то количество, спокойствие не придет.

                                                                                                                      Еще раз: к собеседованиям надо готовиться

                                                                                                                      Хах, в этом-то и проблема. Почему это вдруг, надо (кроме того, конечно, что печальные современные реалии так диктуют)?
                                                                                                                      Какая вообще цель технического интервью?
                                                                                                                      Проверить, кто как/сколько подготовился быстро и правильно решать олимпиадные задачи под давлением? Оценить, насколько человек задротил litcode и насколько способен в стрессе это воспроизвести?
                                                                                                                      Или, все же, быть может, подобрать своей компании/команде подходящего по опыту и навыкам сотрудника?
                                                                                                                      Конечно, если человек — джун, то там должен быть достаточно энтузиазма/памяти с универа/отчаяния, что бы это канало.
                                                                                                                      Но после 10+ лет в продакшене, думаете, мне интересно готовить этот непотреб, который даже не служит задаче, которую, якобы, должен решать? Нет. Это последнее, что я хочу делать, возвращаясь поздно вечером домой, потому что это уже не так задорно и весело, как было когда-то, но в основном, потому что это переливание из пустого в порожнее.
                                                                                                                        –1
                                                                                                                        Но после 10+ лет в продакшене, думаете, мне интересно готовить этот непотреб, который даже не служит задаче, которую, якобы, должен решать? Нет.

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

                                                                                                                        0

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

                                                                                                                          0
                                                                                                                          Еще раз: к собеседованиям надо готовиться. Это не так, что сегодня вместо работы пошел на собеседование, а завтра — опять на работу. В хорошие компании люди по полгода готовятся к собеседованиям, по вечерам решая задачи на LeetCode, прорабатывая дизайны разных систем для дизайн интервью, делая mock-интервью.

                                                                                                                          К собеседованиям в нормальные компании готовится не надо.
                                                                                                                          Потому что в нормальных компаниях оценивают навык работы а не навык прохождения собеседований.
                                                                                                                          И нет, Гугл и прочие подобные нормальными не являются.
                                                                                                                          Да, там есть пончики, настольный теннис, огромная зарплата и интересные задачи на острие технологий (но попасть на них очень и очень сложно, в большинстве случаев ты будешь писать нечто супер скучное для чего не требуется не один из навыков которые у тебя спрашивали на собеседовании) и строчка в резюме «я работал в Гугле».
                                                                                                                          Собственно за зарплатой и строчкой в резюме туда и идут.
                                                                                                                          Но это не делает Гугл нормальной компанией.
                                                                                                                            0
                                                                                                                            А как оценить навык работы?
                                                                                                                            Я просто вижу несколько способов —
                                                                                                                            1. устроить на испытательный срок, причем, в зависимости от бизнес-логики, в которую понадобится вникать, срок может варьироваться от месяца до года. — не подходит по очевидным причинам.
                                                                                                                            2. рекомендации с прошлой работы от начальства — не видел ни одной норррмальной конторы, где такое просили бы (в России)
                                                                                                                            3. поверить кандидату на слово, что он хорошо работает. Автор статьи, под которой мы комментим, как раз про такое писал не раз — что он знает, что мало чего умеет, а собесы прошёл исключительно на софт-скиллах, нагрузив интервьюверов — читай обманув. В норррмальных конторах работают лохи, которых можно легко обмануть?

                                                                                                                            Ничего не упустил?
                                                                                                                              +2
                                                                                                                              А как оценить навык работы?

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


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

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

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

                                                                                                                                  –1
                                                                                                                                  Что делать людям, которые не пушат в опенсорсы и не делают коммиты в чужие проекты?

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


                                                                                                                                  люди, которые делают коммиты в чужие проекты либо сверхлюди

                                                                                                                                  Возможно, вы никогда не сталкивались с тем, что в используемой библиотеке / фреймворке / языке недостает чего-то такого, что лично вам необходимо — могу только позавидовать. Я с таковым сталкиваюсь с завидной регулярностью и между двумя вариантами — подкостылить и навелосипедить в проекте, или заслать PR — проще, быстрее и разумнее заслать PR. Я и в компилятор языка, и фактически в каждую вторую из используемых библиотек патчи слал.


                                                                                                                                  либо недостаточно времени уделяют основной работе

                                                                                                                                  Да-да. И те, кто на Stack Overflow отвечают — делают это в ущерб работе. И в блоги тоже пишут лентяи. Слыхали, знаем. Я лично не скрываю ни активность на SO, ни PR в чужие проекты, ни почти десяток активно поддерживаемых и развиваемых мною лично библиотек, — от руководства. И ему, руководству, почему-то не приходит в голову сделать из этого вывод, что я — тунеядец.


                                                                                                                                  Про тестовое задание вам тоже выскажут своё «фи» секта свидетелей ненужного тестового задания [...]

                                                                                                                                  Так это же прекрасно: мы расстанемся с такими кандидатами на берегу, даже не встретившись. И я лично уж точно сожалеть не стану.

                                                                                                                                    0
                                                                                                                                    Я вообще считаю, что люди, которые делают коммиты в чужие проекты либо сверхлюди, либо недостаточно времени уделяют основной работе

                                                                                                                                    Что ж… Осталось понять, кто я такой…
                                                                                                                          0
                                                                                                                          Собеседовался на сеньора, все хорошо. В конце дают листик и ручку — напишите такой то код. Смотрю на них и понимаю, что я ручку в руке нормально держать не могу и писать мозги не могут особо. После универа руками только документы приходится писать. Никакого навыка в стрессовой ситуации что то писать просто нет.

                                                                                                                          За 10 лет работы программиста был на 15 в сумме собеседований наверно. При смене работы больше 3 собеседований не нужно обычно.
                                                                                                                            +1

                                                                                                                            Если Вы готовы принимать первый же офер не торгуясь, то, да, из трех интервью Вы, скорее всего, одно да пройдете. А если хотите поторговаться, то нужно иметь хотя бы офера три. Чтобы их получить надо будет сходить на 5-10 интервью.

                                                                                                                              0

                                                                                                                              Можно просто владеть удачей и/или навыком распознавания и собеседоваться только в места, где 100% оффер будет.

                                                                                                                                0
                                                                                                                                И это не всегда будут те компании, в которых хотелось бы работать или где платят много.
                                                                                                                                0
                                                                                                                                А если хотите поторговаться, то нужно иметь хотя бы офера три.

                                                                                                                                Зачем? Какая разница три или один? Вы же не аукцион устраиваете с одновременным присутствием всех возможных работодателей.

                                                                                                                                  +1
                                                                                                                                  Затем, что можно поторговаться. Берете офер у компании А, говорите, что подумаете и подождете оферы от компании Б и В. Потом, когда рекрутер компании А Вам снова позвонит, скажите, что Вы еще не собрали все оферы, но есть уже офер от компании Б, который немного выше (есть какие-то более приятные бенефиты и т.п.). Спросите, может ли компания А заматчить офер компании Б/предложить какие-то дополнительные бенефиты?" И вот это все. И там можно по кругу поднимать ставки, если у Вас есть соответствующие скилы. Если Вы действительно ценный специалист, компании будут готовы поторговаться, потому что искать кадры — долго и дорого.
                                                                                                                                    +2
                                                                                                                                    Если Вы действительно ценный специалист, компании будут готовы поторговаться, потому что искать кадры — долго и дорого.

                                                                                                                                    Нет, потому что в набор умений «ценный специалист» в первую очередь входит отсутствие стремления нагреть работодателя по мелочи. Хочешь не N, а N+M денег? — Озвучь, и если ты ценный специалист, мы что-нибудь, да придумаем.


                                                                                                                                    А вот «у меня тут предложение от конкурентов» — это сразу безвозвратное «до свидания». В хороших местах крайне редко бывают востребованы люди с таким менталитетом.

                                                                                                                                      0
                                                                                                                                      Затем, что можно поторговаться.

                                                                                                                                      А кто вам мешает торговаться не имея оффера? оО


                                                                                                                                      Спросите, может ли компания А заматчить офер компании Б/предложить какие-то дополнительные бенефиты?"

                                                                                                                                      Ну просто говорите в А: "я хочу Х денег". Никакого оффера в Б для этого не требуется. И либо А соглашается, либо тогда уже ищите другую компанию.

                                                                                                                                        0
                                                                                                                                        Без оффера Вы можете просто уйти. Обычно компании не поднимают офферы на пустом месте. Скажете «хочу больше», чаще всего получите ответ «мы считаем, это адекватное и конкурентное предложение». Конечно, вы можете с порога заявить свой ценник и или с Вами даже разговаривать дальше не будут, или дадут ровно столько, сколько Вы попросили, и Вы, возможно, проиграете, если компания могла предложить Вам больше. Поэтому, фиксированную сумму считается невыгодно говорить. Говорят, обычно, диапазон. Далее, если Ваш диапазон пересекается с вилкой вакансии компании, они начнут процесс собеседования, а имея другие офферы можно подобраться к верхнему пределу вилки компании.

                                                                                                                                        А вот «у меня тут предложение от конкурентов» — это сразу безвозвратное «до свидания». В хороших местах крайне редко бывают востребованы люди с таким менталитетом.

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

                                                                                                                                          Я в курсе, как компании ищут хороших кандидатов. Мы собрали лучшую команду в нашем стеке в двухмиллионнике.


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


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

                                                                                                                                            0

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

                                                                                                                                              0
                                                                                                                                              Поэтому, как я говорил ранее, надо иметь несколько офферов.

                                                                                                                                              Кому надо-то? Чтобы что? Если вопрос упирается исключительно в деньги, и вам вообще фиолетово, где именно работать — лишь бы платили побольше — можно просто согласиться в Штаты поехать (а если надо еще больше — то в Китай).


                                                                                                                                              для того кандидата отказ Вашей конторы не был концом света и он благополучно трудоустроен

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

                                                                                                                                                +1

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

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

                                                                                                                                                  Несомненно. У нас и не отказывают, более того, ежегодно индексируют з/п на 10%, и это прописано в договоре. Но уж подавно никто не увольняет сотрудников за мыслепреступления и любые речи. А при чем тут это?


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

                                                                                                                                        0

                                                                                                                                        С соответствующими скиллами это можно делать и имея только один оффер :)

                                                                                                                                –8

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


                                                                                                                                А стек в лайв режиме я спустя два года уже сам просил написать одного джуна…

                                                                                                                                  +14
                                                                                                                                  Это интернализированная дедовщина. Зачем пытать людей бессмысленным написанием одного и того же? Стеки, хешмапы, деревья.

                                                                                                                                  Вы что, на работе сами стек имплементируете?
                                                                                                                                    +3

                                                                                                                                    Стек на массивах на джаве — прекрасное задание. Простая структура, позволяющая сразу оценить:


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

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

                                                                                                                                      +4
                                                                                                                                      знание основных структур данных


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

                                                                                                                                      видение утечек памяти


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

                                                                                                                                      программистский скилл (невыход за границы массива, расширение массива при добавлении)


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

                                                                                                                                      написание тестов к коду


                                                                                                                                      Можно писать тесты на что угодно.

                                                                                                                                      ну и просто, что кандидат умеет кодить


                                                                                                                                      Умеет кодить стек. Остальное это не выявит.

                                                                                                                                      При этом его достаточно быстро можно написать, задачка элементарная.


                                                                                                                                      Вы абсолютизируете свои субъективные представления. Кто-то может считать другие знания элементарными, которыми Вы не обладаете.
                                                                                                                                        –2
                                                                                                                                        Кто-то может считать другие знания элементарными, которыми Вы не обладаете.

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

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

                                                                                                                                                По-моему, это плюс — сразу понятно сработаешься ли с людьми. Ну и вопросы бывают интересные.

                                                                                                                                          +2
                                                                                                                                          Стек подразумевает некоторый контракт, абстракцию, его знания вполне достаточно для использования.


                                                                                                                                          И это очень простая абстракция, к ней сразу понятное общеизвестное ТЗ, программист же сможет закодить эту абстракцию? Он на работе чем собирается заниматься, если не кодить то, что ему скажут? Если он не помнит/не знает стек, то поведение структуры можно объяснить моментально.

                                                                                                                                          Откуда уверенность, что дернув у испытуемого узкое знание по написанию определенной структуры и он не справится с имплементацией, вы удостоверитесь что он не обладает опытом в поимке утечек? Наверное, проще показать уже написанный код и найти утечку?


                                                                                                                                          Откуда уверенность, что он, найдя утечку в уже написанном коде, сможет найти её во всех других? =) Очевидно, что способ написания стека не покрывает 100% кейсов выявления сторон кандидата — так их ничто не покрывает.
                                                                                                                                          А утечки в джаве имеют один генезис — «забытые» объекты, которые не может собрать garbage collector. В стеке на массивах возникает момент, когда можно получить очевиднейший пример такого поведения — если кандидат это проморгал, то и остальные проморгает скорее всего.

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


                                                                                                                                          Что ему даст мелкий сниппет, связанный с бизнес-логикой, которую он не знает? А, ну можно найти сниппет, не связанный с бизнес-логикой, конечно. Но вот незадача — он будет тогда, скорее всего, алгоритмическим. А тут уже и до стека недалеко.
                                                                                                                                          Ручное расширение массивов, также, не требуется в виде знания сигнатур методов итд. Но если у человека в голове нет понимания, что «ага вот эта структура ограничена размером и не расширяется автоматом, а я туда добавляю элемент, надо её расширить», то это тоже показатель.

                                                                                                                                          Умеет кодить стек. Остальное это не выявит.

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

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


                                                                                                                                          Блин, накодить структуру, которая делает pop, peek и push, особенно когда можно в двух словах объяснить, какой метод что делает — элементарно. Если нет — а вы точно программист?

                                                                                                                                          0
                                                                                                                                          Создатели стандартных библиотек тратят тысячи человеко-часов на оптимизацию стандартных контейнеров, а людей всё равно заставляют писать свои костыльные реализации на собеседовании.

                                                                                                                                          Спросите лучше, какое время поиска в стеке, как реверснуть содержимое, как обойти граф с его помощью и т. д. Инженерия — это в первую очередь наука о том, как из старых запчастей собрать новый механизм.
                                                                                                                                            –1
                                                                                                                                            Никто никого не заставляет. Собеседование — оно строго по желанию.
                                                                                                                                            Время поиска в стеке — хороший вопрос. Обход графа тоже хороший вопрос. Но я уверен, кому-то и это не понравится — зачем писать обход графа, когда на стековерфлоу полно решений?! Доколе! =)
                                                                                                                                            Ну вот старые запчасти — это массив и джава. Реализуйте тз, где тз это спецификация стека. Подходит под ваши условия.
                                                                                                                                              +1
                                                                                                                                              зачем писать обход графа, когда на стековерфлоу полно решений

                                                                                                                                              А что плохого при встрече некоторых задач — посмотреть как они решалась другими? Зачем тратить время и писать свой велосипед, попутно набивая шишки и делая баги, которые уже несколько лет были проработаны и выложены на github.
                                                                                                                                          0
                                                                                                                                          Зачем пытать людей бессмысленным написанием одного и того же? Стеки, хешмапы, деревья.

                                                                                                                                          Чтобы проверить владение базовыми навыками.


                                                                                                                                          Вы что, на работе сами стек имплементируете?

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

                                                                                                                                            +5
                                                                                                                                            Которые бессмысленно давать человеку не способному даже простейший стек имплементировать.


                                                                                                                                            С чего вы взяли, что знание как имплементировать стек как-то приближает к выполнению любой другой задачи? Это говорит только о том, что человек владеет знанием (или зазубрил) как написать стек и не более того.

                                                                                                                                            Чтобы проверить владение базовыми навыками.


                                                                                                                                            Это крайне субъективный и ограниченный подход, набор базовых навыков для чего? Для решения олимпиадных задачек?
                                                                                                                                              0
                                                                                                                                              А вы что на собеседованиях спрашиваете?
                                                                                                                                              Сейчас мейнстрим это или лезть в дебри языка и библиотек или писать код на доске.
                                                                                                                                              Что лучше сложно сказать. Писать код скорее лучше. Дебри у всех бывают разные, кандидат мог в другие залезать.

                                                                                                                                              Самое смешное что меня спрашивали про дебри библиотек: Количество способов создать бин в Спринге. Я честно не знал вот про этот способ. Ни разу не использовал и до сих пор не использую. Не взяли. До сих пор смешно.
                                                                                                                                                +1
                                                                                                                                                А вы что на собеседованиях спрашиваете?


                                                                                                                                                Я не спрашиваю, но мельком видел список из вопросов, которые давали кандидатам. В принципе, там были какие-то общие вопросы на адекватность – помимо основных это сети, потоки, подходы к написанию кода, REST/HTTP. Вопросы ранжировались от легких, до сложных, можно было выбирать любые и отвечать.

                                                                                                                                                Писать код скорее лучше.


                                                                                                                                                Лучше, но в IDE.

                                                                                                                                                Я за практичные задачки типа обработать (группировка, фильтр, собрать в коллекцию) список из объектов через Java Streams или Kotlin, можно с каким-нибудь непростым компаратором.

                                                                                                                                                Количество способов создать бин в Спринге. Я честно не знал вот про этот способ.


                                                                                                                                                Неприятный вопрос, думаю было бы верно попросить назвать основные способы, либо те, которые лично использовал, а не маргинальные типа groovy.
                                                                                                                                                  +1
                                                                                                                                                  Вопросы ранжировались от легких, до сложных, можно было выбирать любые и отвечать.

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

                                                                                                                                                  Готов выкатить 15 минутный рассказ о double. Если можно рисовать и писать код то и час протяну.

                                                                                                                                                  Я за практичные задачки типа обработать (группировка, фильтр, собрать в коллекцию) список из объектов через Java Streams или Kotlin, можно с каким-нибудь непростым компаратором.

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

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

                                                                                                                                                  Лучше, но в IDE.

                                                                                                                                                  Сейчас на удаленке все в IDE собеседуют. Похуже vim, но тоже нормальные обычно. Не блокнот и не доска.
                                                                                                                                                    +1
                                                                                                                                                    Надо быстро поправлять кандидата который выберет свое любимое из самого простого и начнет рассказывать о нем долго и со вкусом.


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

                                                                                                                                                    Приходит к вам великолепный специалист работавший много лет в банке на шестой джаве.


                                                                                                                                                    У нас в требованиях Джава8+, либо выше. Ей уже лет шесть. Если «великолепный специалист», не занимался актуализацией своих знаний, не такой он уж и великолепный. Джава6 это даже не четвертый спринг, о чем тут может идти речь.

                                                                                                                                                    На крайний случай можно попросить сделать тоже самое, но в SQL, либо в JS, либо на чем угодно. На дворе 2020 и поддержка стримов (LINQ, Rx) есть в любом языке.

                                                                                                                                                    Сейчас на удаленке все в IDE собеседуют. Похуже vim, но тоже нормальные обычно.


                                                                                                                                                    Причем тут vim? Есть определенные стандарты в JVM мире, никаких vim'ов там нет.
                                                                                                                                                      –3

                                                                                                                                                      Джавистов очень легко выявить: они без IDE ничего не могут.

                                                                                                                                                        +3

                                                                                                                                                        Вы так говорите, как будто это что-то плохое.

                                                                                                                                                      +2
                                                                                                                                                      Сейчас на удаленке все в IDE собеседуют.

                                                                                                                                                      Одноклассники собеседуют в онлайн текстовом редакторе. Это не IDE.
                                                                                                                                                  0
                                                                                                                                                  С чего вы взяли, что знание как имплементировать стек как-то приближает к выполнению любой другой задачи?

                                                                                                                                                  Интересно, вы необходимость подменили достаточностью от того, что не владеете базовым математическими знаниями или в качестве демагогического приёма? Я не утверждал, что этого достаточно.


                                                                                                                                                  Это говорит только о том, что человек владеет знанием (или зазубрил) как написать стек и не более того.

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


                                                                                                                                                  Это крайне субъективный и ограниченный подход, набор базовых навыков для чего?

                                                                                                                                                  Как минимум для продолжения разговора. Вот вы, как мы выяснили, не владеете базовыми знаниями мат логики, поэтому дальнейшая беседа с вами малоинтересна для меня. Вы просто не поймёте более сложных концепций. Так и человек не способный к написанию простых вещей не сможет писать и более сложные. И даже осознать этого (привет Даннингу с Крюгером!). Вряд ли такого человека стоит брать на работу где это требуется. Но если вам нужен человек для написания на каком-нибудь похапе сайтов-визиток по готовому шаблону, то, возможно, он и пригодится. Просто речь о более высоком уровне.

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

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

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

                                                                                                                                                    +2

                                                                                                                                                    Собеседование в форме код-ревью (умышленного говнокода) неплохая практика, слово за слово и о языковых конструкциях поговорить, и об архитектуре.

                                                                                                                                                +1

                                                                                                                                                Да, а я прекрасно помню, как в яндексе затупил с пузырьком на бумажке. Смешно это, но блин, стресс штука сильная, мешает думать.

                                                                                                                                                +5

                                                                                                                                                Посмотрел бы я на этих людей окажись они в таком же положении

                                                                                                                                                  0
                                                                                                                                                  Они легко сделают.
                                                                                                                                                  Они же собеседуют так постоянно. Им надо понимать что кандидат пишет где он прав, а где нет. Понимать сразу в процессе написания, а не потом.
                                                                                                                                                  Навык лайвкодинга оттачивается достаточно быстро.
                                                                                                                                                    0
                                                                                                                                                    Я предполагал, что лайвкодинг можно отточить как и классические собеседования. Меня пока такое обходило стороной. Не уверен в своих домыслах, но что-то мне подсказывают, что в будущем с такими коллегами совместная работа была бы не легкой, ну или не в радость, минимум. Если собеседующие легки в общении, во время собеса с ними можно пошутить, и вопросы они задают ровно те и ровно о том, с чем придется работать — то и работать с ними интересно, и опытом они легко делятся.
                                                                                                                                                    –3

                                                                                                                                                    Полагаю, они были в таком же положении, раз получили там работу?

                                                                                                                                                    +2
                                                                                                                                                    Ничего против лайвкодинга в IDE не имею, только если это не угадайка уровня «имплементируйте поиск по X-дереву» или любая другая олимпиадная задачка.

                                                                                                                                                    Вне IDE смысла не вижу вообще никакого, программист это прежде всего ремесло, умение обращаться с инструментами.

                                                                                                                                                    IDE – главный инструмент (ну, наравне с поиском инф-ции в поисковике) и владение им должно проверяться наиболее тщательно: знание хоткеев, быстрое ориентирование в написанных классах, перемещение по дереву проекта, автогенерация кода, воспринимание и вдумчивый анализ тех же javadoc'ов. Все это куда важнее очередной заученной тыканины с индексами в дереве, которая выветрится через 30 минут после собеседования до следующего открытия книги «Cracking the Coding Interview».
                                                                                                                                                      –6
                                                                                                                                                      Звучит так, как будто обход дерева — это что-то невообразимое, хотя деревья встречаются в повседневном программировании постоянно. Есть какой-то минимальный уровень проблем, на решение которых у программиста не должно уходить время. Если на каждый чих вы лезете в Google и StackOverflow, то Ваша кандидатура будет сильно проигрывать людям, которые сразу все знают.

                                                                                                                                                      Спешу Вас расстроить: знание тонкостей IDE — это далеко не самый важный навык программиста. Важно — быстро выдавать качественный результат. А в чем человек работает не имеет значения, пусть хоть в блокноте.
                                                                                                                                                        +2
                                                                                                                                                        Спешу Вас расстроить: знание тонкостей IDE — это далеко не самый важный навык программиста. Важно — быстро выдавать качественный результат


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

                                                                                                                                                        Звучит так, как будто обход дерева — это что-то невообразимое, хотя деревья встречаются в повседневном программировании постоянно.


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

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

                                                                                                                                                        А в чем человек работает не имеет значения, пусть хоть в блокноте.


                                                                                                                                                        Наверное для уровня программ laba1.cpp это актуально, но не в современной разработке.
                                                                                                                                                          0
                                                                                                                                                          Наверное для уровня программ laba1.cpp это актуально, но не в современной разработке.

                                                                                                                                                          Система контроля версий достаточно сложный проект? А некоторые мои знакомые разрабатывают его в ViM.
                                                                                                                                                            +4
                                                                                                                                                            Рад за ваших знакомых, но их опыт не распространяется на подавляющее большинство. Некоторые и системой контроля версий не пользуются.
                                                                                                                                                              –2
                                                                                                                                                              Вообще, я пытался намекнуть на то, что современная разработка весьма широка.

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

                                                                                                                                                              P.S.: Уточню, что я то как раз привык писать код в IDE.
                                                                                                                                                                +1
                                                                                                                                                                Я выше о том же самом писал, ну наверное человек, который пишет в VIM что-то знает, это тоже инструмент и не из простых.

                                                                                                                                                                Вообще выбор vim для мейнстримного языка уже говорит о многом, такие люди обычно не очень хорошо уживаются в командной разработке, хотя есть и исключения и в собеседовании в этом случае нужно проверить является ли кандидат этим исключением.
                                                                                                                                                                  –1
                                                                                                                                                                  На js в vim пишут. Лично знаю. Достаточно мейнстримный язык?
                                                                                                                                                                    +1

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

                                                                                                                                                          +1
                                                                                                                                                          Проходил сам и собеседовал лайвкодинг и IDE. Надо понимать, что собеседование это стресс для соискателя гораздо больший и человек с незнакомым ide теряется гораздо больше и времени тратить больше, чем если пишет на доске или в блокноте.
                                                                                                                                                          Работает простое правило, неправильно объявили тип неважно, тут долго писать try / catch поставь 3 точки. Зато без IDE человек лучше мыслит абстрактно.
                                                                                                                                                            +1
                                                                                                                                                            программист это прежде всего ремесло

                                                                                                                                                            У меня мнение изменилось за последние годы. Ремесло ремеслом, а инженерный подход нужен.
                                                                                                                                                            Я полностью согласен про владение инструментами, но этого не достаточно. В ремесленных подходах не уделяется внимание поддержке, а она составляет огромную часть жизненного цикла софта. Основную часть.


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

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

                                                                                                                                                            Понятно, что за годы опыта я пишу не просто чтобы заработало, а делаю какие-то архитектурные заготовки на будущий рефакторинг, подразумевая что тут я накидаю интерфейс поудобнее, тут я в функции буду заворачивать. Много лишних строк для отладки момента, который я еще не очень понимаю как реализовать.
                                                                                                                                                            Но в любом случае, первый скрипт на финальный похож в лучшем случае на 10-20%.
                                                                                                                                                              0
                                                                                                                                                              Можешь гуглить все что хочешь.

                                                                                                                                                              Что правда что ли? Рука сразу потянулась написать в поисковике boost::spirit.

                                                                                                                                                                0
                                                                                                                                                                Да, у меня очень похожий ход мыслей был при первом собесе с лайв-кодингом, внутри головы все побелело и я не смог даже написать Фибоначи…
                                                                                                                                                                  +1

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

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

                                                                                                                                                                  В общем я очень сильно волновался, руки потеют, стал немного заикаться, на удивление прошло нормально, решил задачку fizz buzz, потом попросили показать работу с библитеками requests и json, написать простенький скрипт получения данных с сайта и сохранения в БД, в общем 2 из 3 заданий на написание кода я сделал, при чем собеседующий не торопил, разговаривал как друг, в паре мест даже подсказал как лучше сделать, за что ему большое спасибо и вагон здоровья. В общем техническое собеседование я прошел, но Епам меня не взяли, сказали английский у меня слабый, а проектов для людей с моим уровнем английского у них нет. Так что тут много зависит от собеседующих, если обстановка дружелюбная то и код не напрягает написать.

                                                                                                                                                                  А вот был случай больше года назад, сходил на собеседование в местную компанию, при чем сами меня позвали, хотя я сразу сказал опыта разработки нет, в итоге позвали и поглумились в опенспейсе при всех, я в центре сидел, собеседовал тимлид, грузил вещами которые начинающий программист знать не может, грузил по уровням данных БД, по абстракциям и т.д, при чем люди вокруг посмеивались, когда я отвечал не знаю, а он мне говорил что нибудь язвительное в ответ и по всей видимости смешное для окружающих, вышел как в пелене и как будто оплеванный, но нечего, спустя полгода работы разработчиком, они снова на меня вышли, но были вежливо посланы.
                                                                                                                                                                    +1
                                                                                                                                                                    Я эти абстракции БД не вспомнил бы, если бы в вики не сходил.
                                                                                                                                                                    На собесе как-то про область значений синуса спросили, а потом смеялись, что я не помню =) Не надо заморачиваться на таких вещах, на самом деле — профессионалы не ржут над собеседуемым, а зачем идти к непрофессионалам?
                                                                                                                                                                      0

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

                                                                                                                                                                    +1
                                                                                                                                                                    Если не практиковаться в TDD, то писать в стиле TDD очень сложно.
                                                                                                                                                                    Это навык, который вырабатывается только повседневной практикой.
                                                                                                                                                                    Поэтому вот так прям сразу писать в стиле TDD, да ещё под стрессом, вряд ли у кого получиться.

                                                                                                                                                                    ИМХО это был не лайвкодинг, а просто проверка навыков TDD.
                                                                                                                                                                    У ТС их не было, поэтому он и провалил собеседование.
                                                                                                                                                                      0
                                                                                                                                                                      А в чем проблема?

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

                                                                                                                                                                      Да, вместо этого можно было бы заниматься чем-то полезным для работы, да, уровень программистов для решения конкретных бизнес-задач снизится, да, опять начнутся разговоры о том, что программисты умеют только проходить собеседования, но не работать — но тут, как говорится, что хотели, то и получите.
                                                                                                                                                                        +2

                                                                                                                                                                        Было одно собеседование, онлайн, по скайпу, имитация парного программирования. Именно что имитация, ибо я должен был играть роль Сеньора, а "напарник" — Джуниора. Актер из меня никудышный, но да ладно. "Джуниор" пытался изображать полного идиота, аля "ой, а тут деструктор виртуальный должен быть или нет". После десятка подобных вопросов я, подзабыв что это лишь игра, в нелестной форме спросил у "напарника" — кто тебя вообще нанял, если ты ни хрена не знаешь?
                                                                                                                                                                        Короче, в контору эту не взяли, а на подобные "сексуальные игры" я с тех времён смотрю очень косо

                                                                                                                                                                          +2

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


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

                                                                                                                                                                          0
                                                                                                                                                                          В одной из фаз собеседования предложили решить задачу на время на hackerrank.
                                                                                                                                                                          Это гораздо проще. Нет отвлекающего бубнежа «почему так?», «давай сделаем это».
                                                                                                                                                                          Почему все так не делают?
                                                                                                                                                                          Это так же лучше чем задания, на которые тратишь много часов, а потом получаешь отказ, так как потраченное время — фиксировано.
                                                                                                                                                                          А некоторые вообще не палятся и в качестве вступительного задания предлагают сделать на халяву ресерч и выдать готовый прототип (я не про стандартные болванки, а именно про то что требует времени на ресерч).
                                                                                                                                                                            +1
                                                                                                                                                                            Ну и хорошо, что провалил собеседование. Зачем тебе работать с идиотами?
                                                                                                                                                                              +1
                                                                                                                                                                              Дело не в самом лайвкодинге. Эти люди смогли бы устроить хреновое собеседование и без него.
                                                                                                                                                                              Недавно вот проходил собеседование с лайвкодингом — задачка была небольшая, но вплоне интересная, в отличие от тестового задания она усложнялась по ходу интервью, что и весело и реалистично.

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

                                                                                                                                                                                С точки зрения собеседующего, это может являться признаком человека, который пишет Write-Only-Code.
                                                                                                                                                                                image
                                                                                                                                                                                  +1
                                                                                                                                                                                  Да с чего бы. Наоборот — понимание такого кода может говорить или о том что человек натренировался на таких штуках для собеседования или о том что он так и пишет.
                                                                                                                                                                                  Второе — явная проблема, а первое — ну просто никак.
                                                                                                                                                                                    +1
                                                                                                                                                                                    Наоборот — понимание такого кода может говорить или о том что человек натренировался на таких штуках для собеседования или о том что он так и пишет.

                                                                                                                                                                                    … или о том, что человек умеет разбираться в чужом кривом коде. И вы сильно недооцениваете количество работодателей, которым среди кандидатов этот навык очень сильно нужен.
                                                                                                                                                                                      0
                                                                                                                                                                                      Я понимаю что им нужны такие люди. Только я к ним не хочу)
                                                                                                                                                                                        0
                                                                                                                                                                                        То есть вы из тех, кто этот чужой кривой код пишет, и его нужно разбирать? ;-)
                                                                                                                                                                                          0
                                                                                                                                                                                          Надеюсь что нет. Иногда бываю разбирателем — честно говоря очень так себе. Иногда глядя вот в эту кашу проще откопать исходную задачу в джире и сделать заново, чем пытаться понять как именно эта штука работала (чаще всего случайно и фича была вообще сайд-эффектом =) )
                                                                                                                                                                                      +1

                                                                                                                                                                                      Или о том, что он регулярно приводит такой код к потребному виду.

                                                                                                                                                                                        0
                                                                                                                                                                                        … и вероятно именно потому хочет сменить работу, чтобы не копаться в говнокоде.
                                                                                                                                                                                          0

                                                                                                                                                                                          Или всё уже раскопал и стало скучно...

                                                                                                                                                                                    +1

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


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

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

                                                                                                                                                                                      Чтобы не выкидывать, а переписать нормально.

                                                                                                                                                                                        0

                                                                                                                                                                                        Так давно уже переписали, сейчас это все уже сказки из склепа, куски виртуального наследования остались в каких-то стандартных классах типа ios, нигде в реальном коде я его уже лет 12 как не видел.
                                                                                                                                                                                        Но из за его наличия как раз вся эта пляска с this, когда указатель на метод != указатель на функцию, потому что нужно хранить еще таблицу переходов.

                                                                                                                                                                                          0
                                                                                                                                                                                          в последних хромиумах ~6000 классов, в 16 из них используется виртуальное наследование, часть помечена на удаление(чтобы убрать его) и половина из 16 в SKIA. Я как раз после подобного интервью полез смотреть :)

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

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

                                                                                                                                                                                    +3
                                                                                                                                                                                    Я сам много собеседований провожу. Как только вижу, что собеседуемый в сильном волнении, просто начинаю разговор «за жизнь» и когда вижу, что собеседник расслабился, потихоньку начинаю смотреть на то, как человек кодит. Часто собеседник даже не замечает, как начал писать код :)
                                                                                                                                                                                      0
                                                                                                                                                                                      если на ситуацию посмотреть со стороны и без эмоций, то можно предположить, что Вас «сравнивали» с конкретным кандидатом.
                                                                                                                                                                                      наверное, если бы мне пришлось бороться с такими эмоциями я бы начал больше рассказывать о том, что хочу сделать, чем писать, просто чтобы поймать на крючок интереса.
                                                                                                                                                                                        0

                                                                                                                                                                                        Наверное, не все могут совмещать режимы написания кода и даже думания о чьих-то там интересах...

                                                                                                                                                                                          0
                                                                                                                                                                                          само собой у каждого свой способ подавления стресса.
                                                                                                                                                                                          у автора очевидно собственно написание первых строк кода задачи по описанному эффекту вывело его из стресса.
                                                                                                                                                                                          но в статье так много мыслей о том, что думают ОНИ.
                                                                                                                                                                                          если о ярлыках, то это стратегия интроверт/экстраверт — кто откуда черпает поддержку.
                                                                                                                                                                                            0

                                                                                                                                                                                            Я больше не про стресс, а про однозадачность.

                                                                                                                                                                                        0
                                                                                                                                                                                        Может кому пригодится…
                                                                                                                                                                                        Просто отложите наушники и выключите микрофон. Дальше сидишь и пишешь код, как знаешь. Как закончил, берешь наушники и говоришь, что закончил.
                                                                                                                                                                                        Я именно так и делал.
                                                                                                                                                                                          0
                                                                                                                                                                                          Вот по-этому я никогда не заставлю на собеседованиях писать код. И это работает!
                                                                                                                                                                                          habr.com/ru/company/deliveryclub/blog/522326
                                                                                                                                                                                            +1
                                                                                                                                                                                            Это всё вызывает стресс, поскольку писать код под постоянным надзором — это не то, чему мы учились в институтах и не то, чем программисты занимаются каждый день. Это отдельная дисциплина и, если хочется в ней потренироваться, то нужно вот брать и именно в ней тренироваться.

                                                                                                                                                                                            Представьте, что вы — блоггер. Поставьте программу для записи видео с экрана (плюс накладывание видео с вебки), включите запись, возьмите микрофон, откройте первую попавшуюся задачу на литкоде и решайте её как-будто вы это видео потом зальёте на ютюб. Объясняйте своим «слушателям» что вы делаете и почему. По окончанию этого процесса откройте полученное видео и посмотрите. Сразу вылезет десяток очевидных ляпов: тут камера не настроена, тут свет плохой, тут микрофон низы вырезает, тут я что-то бекаю-мекаю. Исправляем косяки. Записываем второе видео с другой задачей.
                                                                                                                                                                                            После 5-8 итераций можно идти на лайф-кодинг.
                                                                                                                                                                                              –1

                                                                                                                                                                                              Для меня лучший вариант собеседование это лайвкодинг. Не люблю когда показывают вырваный из контекста, какой-то кусок гавнокода, который я бы никогда не написал в здравом уме, и спрашивают как оно работает, всегда хочется пошутить «это вы из проекта надергали?». Я сам могу столько трики-кода нагенерить что хватит уволить всю вашу команду.

                                                                                                                                                                                                +4
                                                                                                                                                                                                «финалайзер — это необходимое знание даже для стажера в .net»
                                                                                                                                                                                                Последние 5 лет я ни разу не использовал финалайзер. Стажером он мне тем более был побоку. Это со мной что-то не так или «это необходимое знание даже для стажера» только потому, что этопрос с золотого (коричневого) фонда вопросов на собеседовании?
                                                                                                                                                                                                  0
                                                                                                                                                                                                  Лайвкодинг в ide и linqpad с intellisense, а в чем собственно проблема? Вот когда на тетрадке в клетку просят нарисовать, при том что навык писать от руки уже хромает, вот это куда веселее.

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

                                                                                                                                                                                                  Самое читаемое