Эти токсичные, токсичные собеседования



    Всё началось, когда автор Ruby on Rails признался миру:

    К нему присоединились и другие разработчики:

    Один из самых старших инженеров Google сказал, что ни черта не помнит как работает квиксорт:

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

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

    Как появилась эта статья


    Для меня, как и для многих других, собеседования регулярно были болью. (А когда-то мне ещё и страшно было на них ходить.)

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

    О каких именно собеседованиях речь


    • викторины («Какая функция библиотеки X обладает особенностью Y?»)
    • головоломки («Вас уменьшили до размеров 5-центовой монеты и бросили в блендер. Ваш вес уменьшился так, что плотность вашего тела осталась прежней. Лезвия начнут вращаться через 60 секунд. Ваши действия?»)
    • вайтбоардинг («whiteboarding» — когда код требуется писать на маркерной доске)
    • алгоритмические («Разверните бинарное дерево на бумажке»)


    Чем вредны подобные собеседования


    Проверяют в условиях стресса людей, специальность которых не предполагает работать в условиях стресса


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

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

    Самые замечательные разработчики, которых я встречал — нёрды и гики. Им нужны спокойные условия. Им нужно состояние потока. В лучшие свои времена такой человек за день закодит вам сложнейшую задачу. Если вы всё ещё хотите проверять его на стрессоустойчивость, может, стоит вместо того задуматься, как убрать стресс из своих процессов? (Это даст существенно больше профита.)

    Не коррелируют с разработкой


    Невероятно, но сами Google признали, что нет корреляции между тем, как кандидат показал себя на собеседовании, и тем, как он прошёл затем перформанс-ревью в процессе работы.


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


    Предположим, вы очень неплохо знаете некоторую тему, и вдруг по ней всплывает какой-то викторинный вопрос. Ответа вы не знаете. Люди замечают это, и, как правило, предполагают, что вы не знаете ничего по всей теме. (Много хуже, если вы поймали не один неудачный викторинный вопрос, а сразу несколько.)


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

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

    Порождают ненужные элитизм и дедовщину


    Айти как сфера деятельности по своей природе невероятно подвержена ряду дуростей:

    • культ сложности (Если решение недостаточно сложное или мне было недостаточно тяжело, то что-то не так)
    • элитизм (Я лучше них, я лучше них, я прошёл все искусственные барьеры!)
    • дедовщина (Меня гнобили, и я буду)

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

    Основные аргументы сторонников Google-style собеседований


    «Ведь нужно проверять фундаментальные знания»


    Вы так в этом уверены? Кому именно нужно? Здесь всё же не кафедра университета и не олимпиадный кружок, предлагаю вспомнить, зачем вы вообще ищете человека. Правильно. Писать API, проектировать инфраструктуру, рисовать кнопки, чинить баги, понимать задачу из общения с бизнесом, делать продукт дороже и круче. И делать всё это в срок и за деньги.

    Способность разворачивать деревья на бумажке никак не поможет ни в одной из этих вещей (даже, собственно, может помешать: уведёт фокус с продукта на «божечки-кошечки, мы потратили неделю и сделали кастомный JSON-парсер, он на 7% быстрее». Я работал с такими людьми.).


    «Вообще-то это требуется на практике»



    Неа, не требуется. Более того: если я как тимлид увижу в репозитории мёрдж-реквест с наколеночным обходом графа или кастомной реализацией квиксорта, я с вероятностью 95% отклоню такой реквест с пометкой чувак, найди готовую библиотеку. Не говоря уже об истовом стремлении написать свою СУБД.

    Что же касается каких-то особенностей языка или фреймворка, документация всегда к вашим услугам. (Для поездок на Кубу давно придумали Zeal/Dash).

    Далее должна следовать обязательная ремарка про людей, пишущих поисковое ядро Google / Yandex. Но ваши разработчики в их число не входят (You Are Not Google), и прекрасно смогут прочитать про сложный алгоритм в момент, когда он действительно потребуется. Всё даже ещё интересней: в подобных хардкорных командах часто есть такой специальный парень с PhD по математике, который помогает разработчикам с алгоритмами.

    «Если разработчик чего-то стоит, он это умеет»


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

    В минуту уныния рекомендую вспомнить Дэна Абрамова, который в своё время не прошёл во Вконтакте:

    и сотни других подобных примеров (флешмоб #меняневзяли в фейcбуке).

    Что важнее, все ваши суждения правильный разработчик должен знать XYZ, скорее всего, являются иллюстрацией ошибки выжившего:



    «Нам тут не тупо кнопки по вьюшке двигать»


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

    «В нашей компании всё часто меняется, поэтому проверяем универсально»


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

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

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

    «У нас такой поток желающих на трудоустройство, что нужны серьёзные фильтры»


    Хорошо, но фильтровать их такими собеседованиями суть подбрасывать монетку.
    Можете предложить им пожонглировать — корреляция отобранных в итоге кандидатов с их профпригодностью будет почти такая же, как и в случае с головоломками/вайтбоардингом (но хоть время сэкономите).

    «Ты же сеешь невежество! Наверное, это из-за того, что ты не осилил алгоритмы!»


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

    «Но так было всегда»


    … и это ещё вовсе не означает, что существующий порядок вещей правилен.

    «Я влёт считаю O(f(n)) и с удовольствием рисую графы на доске. Что же, всё это зря?»


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

    «Но ведь в Google/Facebook/Zalando продолжают так собеседовать, как же туда пройти?»


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

    «А что же тогда спрашивать?»


    Now we're talkin'! Всё просто: спрашивайте те вещи, которые кандидату придётся у вас делать. Попросите разработчика спроектировать тиндер или убер. Обсудите с ним частые проблемы в работе с очередями, сериализацией, сокетами. Разрешите ему при этом использовать те инструменты, которые он привык использовать.
    И обязательно смотрите и обсуждайте код, будь то GitHub или нечто, написанное в процессе собеседования.

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

    Как всё обстоит в EXANTE


    Когда я только сюда устраивался, разработчики пригласили меня на продолжительный диалог. Угостили колой, обсудили мои прошлые проекты, подробно рассказали, чем занимается компания. Я задал ряд вопросов по технической части. Было много дебатов на тему «почему в данном случае было такое решение, а не иное». В том числе получил пару вопросов по моему коду в открытом доступе. В конце мне дали задачку из разряда «Как бы вы запроектировали X». Ещё мы периодически смотрели код на ноутбуках.

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

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

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

    Менять мир нелегко, но необходимо


    Даже когда мы обсуждали проблему в твиттере, среди русскоязычной ветки диалога идея данной статьи была в меньшинстве: на её защиту встали лишь я и ещё один финский CTO. (Новые концепции вообще долетают до СНГ с традиционным запозданием.)

    Был такой замечательный венгерский врач-акушер Игнац Филипп Земмельвайс. Ему первому пришла в голову мысль, что 30-50% смертность при родах вызвана инфекциями с немытых рук врачей. И он не просто не нашёл признания: его цензурировали, осмеивали, поместили в психушку. Он умер от избиений. Сейчас же Земмельвайс известен как основоположник асептики и «спаситель матерей».

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

    Я хочу, чтобы сегодня вы задумались над тем, как собеседуете.

    Материалы для размышления


    EXANTE 52,49
    Инвестиционная компания нового поколения
    Поделиться публикацией
    Комментарии 720
    • +62
      Заголовок спойлера
      image
      • +14
        ну, такое :) Сатира с вашего скриншота она скорее на критику непонятных эйчарских вопросов направлена, а в моём посте про проблемы технических интервью.
        • 0
          Я офигел, когда меня в Германии спросили есть ли у меня права на управление автомобилем… Был несколько удивлен :)
          • 0
            почему? может вам хотят(или работа подразумевает наличие) выдать корп авто.
            • 0
              На самом деле спрашивают в 90% случаев. Во-первых это некий тест, потому что почти у всех есть права, независимо от пола, вероисповедания и т.д. А если нет, то либо у вас была причина не получать права, либо они у вас были и вас их лишили (пьяная езда, наркотики и т.д.). Во-вторых очень часто нужно поехать на встречу, к клиенту, к заказчику и, обычно, отдельного водителя не выдают.
              • 0
                Выдают машину? Или не оплачивают такси?
                • 0
                  Ну на счет такси я не слышал. Если с вокзала или аэропорта, то такси вариант, но если ехать к заказчику 150 км, то выйдет очень дорого. А так на фирме есть, например 3-5 машин, которые только для этих целей. Взял ключи, карточку для заправки и путевую тетрадь и поехал по делам.
              • 0
                у нас в конторе это очень важно. Или оплачивать Вам такси при поездке в один из филиалов или Вы сами на фирменной машине решите все вопросы.
            • +5
              Раз уж вы начали, продолжу:
              Джордж Карлин — как правильно устраиваться на работу

              • +5

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

                • +9
                  Пример того как рассказать, что ты начальник?
                  • +1
                    "(Царю, чтоб не выглядеть так же, как все,
                    Приходится часто скакать на лосе)."
                    (Эйлин О'Коннор, из песни про Хоббита)
                    • 0

                      Тоже мне достижение :)

                  • +5
                    Вопросы местами дебильные, но моожно ровно эти же ответы сказать нормальным тоном.
                    С человеком все ясно: конфликтный, смотрим следующего.
                    • 0
                      После нескольких десятков собеседований или играешь по правилам, или ломаешь их.
                    • 0
                      Вряд ли такого нервного и озлобленного типа возьмут работать в коллектив. Смотрителем маяка может?
                      • 0

                        Почему зачерпывать ложкой к себе это недостаток?

                      • +2
                        Ждем в комментах лидов из ТОП ру-айти ;)
                        • +7
                          ждём с удовольствием, ибо у меня в том числе цель поднять дискуссию по этой теме )
                        • +4

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

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

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

                            Ну а для людей без опыта все равно придется спрашивать что-то из теории. Хотябы выборочно. Возможно даже предложить человеку самому решить про что рассказывать.
                            • +3
                              Ну а для людей без опыта все равно придется спрашивать что-то из теории

                              Кстати. Вот в этой части как раз прошу своим языком описать, как человек понимает, что такое X (DNS, например), и как оно работает. И сразу уточняю, что книжное и википедийные определения меня не сильно интересуют, если не знают — можно не напрягаться. Если знают — я не откажусь услышать.
                              Ну или прошу примерный алгоритм на пальцах, как система отработает при использовании этой технологии.
                              Человек и так стресс испытывает (первая же работа! У меня ладони были мокрые в первый раз), а вот ещё и чисто теоретическое тут вспомнить может быть проблемой. Не экзамен в универе, всё же.
                              • +4
                                Я очень часто задаю один и тот-же теоретический вопрос. Мне задали его где-то в 1996-м.
                                Я прошу человека нарисовать блок-схему решения квадратного уравнения. При этом сразу предупреждаю что гуглом пользоваться можно, но я буду наблюдать.
                                вопрос задаю обычно или юниорам или «матерым».
                                Вторым скорее для проверки психологического фактора.
                                Очень многие начинают бычится, мол «это смешно, задавать МНЕ такие простые вопросы».
                                Ну и потом когда (не если а когда) я найду к чему придраться, то у человека будет вторая возможность провалиться начав спорить что это все не важно, и вопросы у меня тупые.
                                Если человек напишет без гугла, да еще и без ошибок («идеально»), то я прям даже не знаю что делать. Такого никогда не было. Но пути решения, поведенческие реакции, сообразит ли человек исправить все оплошности после первого наводящего вопроса, или будет кивать головой дальше пока я все сам не назову — это важно, да. Не так важно как практические навыки, и реальные знания (не энциклопедические), но важно.
                                Это сродни текущему скандалу по «50% женщин». Отличная идея это ваше равенство.
                                Поощрять талантливых женщин, геев и лесбиянок — выгодно всем, ведь ты получишь ценные кадры которые страдают от предрассудков в другом месте, они получат хорошее место… Но если идею развить до конца, то мы получим «50% женщин-программистов», а это чистый фейл.
                                Я думаю что все эти олимпиадные собеседования имеют свои корни из таких вот небольших вкраплений теории и викторины. А потом «немножко» выродились в викторину. Плюс рекрутеру проще зазубрить количество пинов у сим-памяти, когда сейчас уже диммы чем научиться определять что рекрутируемый способен без документации разобраться какие джампера нужно ставить для какого процессора (ну какой он есть личный пример, по софту ни разу не собеседовался непрофессионалами).
                                • –1
                                  Камент месяца — Супер :)
                                  • 0
                                    Забавный вопрос для собеседования, спасибо!
                                    • +1

                                      А какой ответ вы ожидаете?


                                      Прямолинейный алгоритм «x_1 = -b+sqrt(b^2-4ac) / 2a», «x_2 = -b-sqrt(b^2-4ac) / 2a » вас не устроит? А почему?


                                      Не проверил, что коэффициент при старшем члене не равен нулю? А если бы проверил? Вы бы придрались, что я не проверил, что для любого i > 2 коэффициент при x^i равен нулю? Кстати, как это сделать на машине с ограниченной памятью? И имеет ли смысл это делать?


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


                                      Не проверил, что дискриминант равен нулю, и поэтому x_1 = x_2? Ну давайте обсудим, почему нельзя говорить, что у квадратного уравнения один корень.

                                      • –1

                                        Блок схема — это немного другое.
                                        А приведенное вами решение, например, выдаст ошибку, если вы неправильно дали ответ, потому что в случае комплексных корней у вас x_1 будет равен x_2, так как для комплексных чисел корень работает по другому.

                                        • +1

                                          Это как это для комплексных чисел корень работает по-другому?


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

                                          • 0

                                            Но вот Вы забыли это указать, а это существенно важно, мне кажется.

                                            • +3

                                              Так он и для вещественных чисел так же работает. Корней из 4 два: 2 и -2, например.

                                        • 0
                                          Ответ на этот вопрос, как и большинство вопросов на собеседовании — не подразумевает именно правильного ответа.
                                          Самый простой способ провалиться на этом вопросе — отказаться его делать обидевшись что мол слишком простой вопрос. Чаще всего это были «я ж специалист, я ж курсы окончил!».
                                          Нарисовать блоксхему или не спрашивая «а можно» написать псевдокод? — это тоже показатель того как человек в спокойной обстановке будет оформлять код. Не псевдокод, а накидать общую идею, как у вас (в комменте можно, в задаче на собесе нельзя, но такие тоже были) — давайдосвидания.
                                          Полезет в гугл смотреть «гост оформления блок-схем» — любопытный факт, надо повнимательнее посмотреть что тут у нас: задрот или педант? Ну а озвученными вами типичными вопросами про комплексные корни и деление на ноль — это очень важный водораздел. Вообще не подумать что бывают исключения и писать в лоб — четко показывает уровень человека. Понял после уточнения «вы уверенны что все учли» — другой показатель. Опять таки как именно он будет писать/рисовать, искать, исправлять — ход мысли виден. Корень и деление это такие вещи которые вызывают вопросы автоматом, при написании. Ожидать нестандартного окружения (комплексные числа например) и не озвучить это вслух или в пояснительной записке к решению — гораздо большее зло, чем вообще не подумать о проблемных данных. Решение на тяп-ляп и попытка померяться длиной полового органа с собеседующим. Нафик, нафик. Ну или попытка оправдаться, что тоже жирный минус.
                                          • 0
                                            А вы и в процессе работы блок-схемы рисуете? Или только на собеседовании требуете?
                                            • 0
                                              Далась вам эта блок-схема. Суть вопроса не в ней.
                                              Я вот, например, каждый день сталкиваюсь со всем, что в этой задаче используется: процесс сбора требований, выбор подхода к решению задачи, обсуждение того, какие граничные случаи учитывать, а какие нет, и многое другое. Задача явно проверяет именно это, а не умение «рисовать блок-схемы»
                                              • 0
                                                Ну так автор именно на блок-схемах настаивает. И даже готов поощрять человека, который гостами на блок-схемы интересуется.
                                                • 0
                                                  Поощрять? Где в моих словах про поощрять? Наоборот, возможно «наказывать». Я сказал только что это повод обратить на человека внимание чтобы понять с чем это связано. С хорошими чертами характера, что он думает о деталях и перестраховывается не зная какие у меня критерии даже если заранее с ними не согласен, или ему важнее шашечки и мы с ним не поедем. Я не знаю хорошо это или плохо когда человек ищет гост.
                                                  • 0
                                                    Ок, значит я ту реплику не понял.
                                                    Тогда прошу пояснить, какой из двух вариантов «задрот» или «педант» ассоциируета с «ему важнее шашечки и мы с ним не поедем»

                                                    Я просто со своей стороны считаю, что слова «блок-схема» еще более ругательные, чем «сортировка пузырьком». И постараюсь держаться одальше от конторы, где это просят на собеседовании.
                                                    • +2
                                                      Дракон идет по лесу с блокнотом. Навстречу бежит волк.
                                                      Дракон (глядя в блокнот): Так, волк, сегодня вечером в 9.00 приходишь на
                                                      поляну к дубу, где я тебя съедаю. Записываю тебя. (записывает) Есть
                                                      вопросы?
                                                      Волк (испуганно): Н-нету…
                                                      Дракон: Хорошо, до девяти свободен.
                                                      Волк убегает, дракон идет дальше. Навстречу идет медведь.
                                                      Дракон (глядя в блокнот): Так, медведь, ты вечером занят?
                                                      Медведь (испуганно): Н-нет…
                                                      Дракон: Тогда в 9.00 приходишь на поляну к дубу, где я тебя съедаю.
                                                      Записываю тебя, медведь. (записывает) Есть вопросы?
                                                      Медведь: Н-нет…
                                                      Дракон: Так, до вечера свободен.
                                                      После этого дракон встречает лису, лося, ежа и т. д. — и всех записывает
                                                      на вечер на съедение. Идет дальше, навстречу бежит заяц.
                                                      Дракон (глядя в блокнот): Так, заяц, сегодня вечером в 9.00 приходишь на
                                                      поляну к дубу, где я тебя съедаю. Записываю тебя, заяц. (записывает)
                                                      Есть вопросы?
                                                      Заяц (робко): А м-можно не п-приходить?
                                                      Дракон: Можно. Тогда я тебя вычеркиваю. (вычеркивает)

                                                      Все кто спрашивает «а можно псевдокод (код) а то блок-схемы не помню / плохо рисую / не люблю?» получают от меня ответ: «Можно».
                                                      • 0
                                                        Ну так то же самое можно и на других собеседованиях делать. Вам говорят — напишите код сортировки пузырьком, а вы можете сппросить — а обязательно код на С++ или можно псевдокод? И т.п. В нормальных местах так тоже можно.

                                                        А вот лучший способ завалить собеседование с сортировкой пузырьком это «отказаться его делать обидевшись что мол слишком простой вопрос»
                                              • –2
                                                В жизни блок-схемы рисую редко. И совершенно не помню как их правильно оформлять. Рисую банально прямоугольники с ромбиками и стрелочками, все остальное словами.
                                                Слово «блок-схема» в задаче во многом «дань традиции», ибо я считаю что стал программистом именно с этой задачи. Я тогда пришел к системному программисту на маминой работе с тем вопросом который меня интересовал — я не мог понять для чего в микропроцессоре Z80 регистр R (если не путаю наименование). Вопрос кстати был не совсем уж глупый, и прошло довольно много лет пока я таки на практике понял что регенерация динамической памяти это не такая уж и мелочь, и когда процессор это сам умеет это хорошо… В общем я такой весь умный был, а этот старый еврей меня посадил блок-схему квадратного уравнения рисовать. Оно было сильно обидно когда тебя такое спрашивают в 11-м классе с математическим уклоном…
                                                Вот когда я скрипя зубами нарисовал, и меня ткнули носом в граничные условия и т.п., я да, стал программистом). Не хорошим программистом, плохим программистом. Ничего не умеющим, но уже программистом.

                                                Ну а так то оно не мешает. Кто не помнит что это — может спокойно нагуглить. Кто не может нагуглить — проявит психологические качества которые пойдут ему в минус. Если это будет единственный минус то и черт с ним, подскажу, но если я и так колебался, то даже это может повлиять.
                                                • 0
                                                  Тот факт, что у вас был такой вопрос когда-то и вы его на всегда запомнили не значит, что другим он так же нравится. Вот у меня все было очень хорошо с матиматикой, я в институт поступил написав успешно олимпиаду по математике. Но вот прошло много лет и я уже не помню как выглядит дискриминант и как считать квадратичные уравнения. Получив ваш вопрос мне бы прошлось гуглить «как считать дискриминант» или еще что-то вроде того.
                                                  • 0
                                                    Я тоже не помню как выглядит дискриминант. Но не стесняюсь гуглить школьные вопросы, если то разрешено. Я тут раз семь наверное писал, что зубрежка зло, гугли все что надо. Хоть готовое решение, но готовое решение по блок-схеме тоже надо уметь нагуглить.
                                              • +2
                                                Нарисовать блоксхему или не спрашивая «а можно» написать псевдокод? — это тоже показатель того как человек в спокойной обстановке будет оформлять код.

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


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

                                                Какой? Я не уверен, что корректно улавливаю коннотации.


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

                                                А какие исключения? Коэффициент при x^2 не равен нулю, коэффициенты при всех старших степенях равны нулю — это определение полинома второй степени. Почему вы предлагаете проверить только одну часть этого условия?


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


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

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


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

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


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


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

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

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

                                            Не стоит так резко воспринимать это.
                                            • 0
                                              А если не было позапрошлой работы? Я сразу после универа устроился и работал 13 лет в одной конторе. Вот сейчас как раз ищу новую работу (в связи с переездом). И да, почти все интересное подпадает под NDA (в моем случае). Буду пытаться рассказывать так чтобы ничего не «выдать»…
                                              • 0
                                                А если все работы такие?
                                                • 0
                                                  Складывается впечатление что комментарий написан лишь бы написать.

                                                  Если уж совсем все плохо с возможность рассказать, наверное стоит подумать об opensource или так и говорить что показать нечего.
                                                  • 0
                                                    Я обычно рассказываю про используемые технологии (если, конечно, и их список не закрыт NDA)
                                            • +5
                                              Вообще всё больше склоняюсь к мысли, что идеальный рекрутинг должен выглядеть так:
                                              • отфильтровали по опыту и стэку
                                              • нашли публичный код
                                              • показали его разрабам
                                              • позвали на собес, удостоверились, что он сам писал этот код
                                              • взяли его
                                              • +12
                                                что делать, если публичного кода нет?
                                                • +7
                                                  Это штатная ситуация, варианты её решения есть:

                                                  • тестовое задание (обычно для джунов, т.к остальным дорого тратить на это время. Либо оплачивать)
                                                  • писать и обсуждать код прямо на собеседовании
                                                  • устроить код-ревью чужого кода
                                                  • запросить зарихтовать кусочек коммерческого кода и прислать
                                                  • +1
                                                    а как админов собеседуете? у меня живой интерес.
                                                    • +3
                                                      наверное они просят собрать свою генту)
                                                      • 0
                                                        дефолтный emegre world с генкернелом много ума не требует :)

                                                      • +1
                                                        Амазон дает шелл на сервер и просит поправить косяки по списку.
                                                        • 0
                                                          И не только Амазон.
                                                      • +6
                                                        писать и обсуждать код прямо на собеседовании

                                                        Возвращаемся к whiteboarding'у пузырька? :) ну, и стоило ли так напрягаться, статью целую писать, чтобы вернуться к простому незамысловатому и лёгкому для анализа способу?
                                                        Когда-то давно прочёл, а потом нашёл немало подтверждений, что есть люди которые могут писать код и люди, которые только говорят, что могут. Очевидно, самая первая задача стоит в том, чтобы отделить одних от других. Можно пойти сложным путём и пытаться понять это из пространных размышлений о коммерческом коде в вакууме. Но можно же просто попросить написать на бумажке "пузырёк". Не?

                                                        • 0
                                                          Отделять одних от других надо как можно быстрее и до того, как пригласить к уайтборду, не?
                                                          • +2

                                                            Если овладеть этой джедайской техникой, то собеседования становятся не нужны. Не?

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

                                                                Готов рассмотреть варианты.
                                                                • 0

                                                                  Полагаю, в топменеджеры газпрома примерно так и "берут". Но "у генерала уже есть свой сын" :-D

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

                                                                То есть вы предлагаете притащить на собеседование компьютер? а какой именно? Я, вот, привык к аймаку с клавиатурой микрософт нейчурал 4000 и вертикальной мышкой. Покупаете ради кандидата? Поставить туда любимую иде кандидата, дать ему пол-дня для её настройки под себя и… и попросить написать бинарный поиск? Супер!

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

                                                                    Ну, вот, видите, вы сделали первый шаг — от комфортного компьютера и привычной иде к абы-какому хламу и первому попавшемуся иде. Следующий логический шаг — для решения примитивной задачи зачем вам иде? Хватит бумажки и ручки. Это достаточный набор бля любого айтишника. Я уверен, вы справитесь. Мои дети в первом классе справляются с этим инструментарием. И вы справитесь. А если не справитесь… ну, тогда, наверное, нафиг вы нужны такой? ;)

                                                                    • +1
                                                                      Во всем нужен баланс).
                                                                      • –1
                                                                        Я с некоторого времени стал принципиально отказываться на собеседованиях писать код не на компе.
                                                                        Если интервьювер не подготовил ноут и хочет видеть, как я пишу код — он недостаточно хорошо подготовился к собеседованию.
                                                                        • +2

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

                                                                          • 0
                                                                            А собственный ноут захватить с собой религия не позволяет?
                                                                            Нет, серьезно. Если вы хороший специалист и рассчитываете на то что компания будет стараться создать вам хорошие условия (орешки в кофе-комнате, рабочий график для совы, работа из дома если похмелье, не суть), то давайте уже сразу с собеседования начинать «я лучше работаю в привычной среде, не возражаете если буду писать на своем компе?».
                                                                      • +1
                                                                        Google на собеседованиях выдает ноут: мне предлагали выбрать из Chromebook, Macbook Air и вроде Lenovo какой-то. Правда для кода все равно или google doc, или доска.
                                                                        • +1
                                                                          А клавиатуру и мышку к ноутбуку они не предлагали?

                                                                          Клавиатуры ноутбуков
                                                                          MacBook Air:


                                                                          Chromebook:


                                                                          Lenovo ThinkPad X1:


                                                                          И ладно, я ничего не имею против, когда на 12" ноутбуке компактная кливиатура, но когда на 17" ноут лепят точно такую же клаву, хочется ругаться.


                                                                          Не понимаю, как можно программировать за такими недоразумениями. Я не спорю, можно привыкнуть к необычной раскладке, но когда тебя сажают за ноутбук и видят, что ты не можешь набирать на нём код, не глядя на клавитуру, это может испортить впечатление.
                                                                          • +1
                                                                            Нет, не предлагали. Думаю, если попросить, дадут. И всегда можно писать на доске или на бумаге.
                                                                            Но тут есть такая особенность — все материалы с собеседования будут смотреть и другие люди. Вероятно, код им будет удобнее смотреть в виде google doc, а схемы и таблицы — в виде фото доски или листов, а не наоборот.

                                                                            Лично я сначала у доски рисовал пару рисунков, объяснял решение и доказывал его корректность и сложность, после чего набивал код на ноуте параллельно с комментариями на тему тестирования, получалось быстро и удобно.
                                                                          • 0
                                                                            Год назад у них собеседовался, мне ноут не предлагали :-/
                                                                            Только маркер и доска, только хардкор.
                                                                            • 0
                                                                              мне ноут не предлагали

                                                                              Скорее всего, зависит от офиса. В Лондоне мне предлагали, в Цюрихе — нет.
                                                                              Может, уже и вовсе эту практику прикрыли. Мне лично доска показалась гораздо удобнее, чем google doc на chromebook. На ней картинки и формулы удобно рисовать. Не могу я без картинок задачи решать.

                                                                              • 0
                                                                                Скорее всего, зависит от офиса. В Лондоне мне предлагали, в Цюрихе — нет.

                                                                                Видимо, так и есть. Я был в Цюрихе, там не предлагали.

                                                                                Мне лично доска показалась гораздо удобнее, чем google doc на chromebook. На ней картинки и формулы удобно рисовать. Не могу я без картинок задачи решать.

                                                                                Так можно же совмещать? Картинки на доске, код в компьютере.
                                                                                По-моему, так все и работают: картинки рисуют на доске, а код пишут в компьютере.
                                                                                • +1
                                                                                  Так можно же совмещать? Картинки на доске, код в компьютере.

                                                                                  Я так и делал, но это оказалось неудобно. Стоишь у доски, объясняешь, потом садишься к компьютеру (ревьюеру тоже надо сесть), пишешь что-то, при этом надо периодически смотреть на доску, иногда возвращаться, что-то дописывать…
                                                                                  Нет уж, код обычно достаточно короткий, чтобы легко умещаться на доске, а использование маркера вызывает меньше дискомфорта, чем клавиатуры непривычной раскладки без емакса.

                                                                          • 0
                                                                            Попросить кандидата принести свой лэптоп в голову не приходило?

                                                                            Если у кандидата нет лэптопа — сойдет любой, в любом случае это не то же что писать код на бумажке.

                                                                            Disclaimer: я не против писания кода на бумажке на собеседовании, но ваш аргумент как-то не очень.
                                                                            • +1

                                                                              На собеседование со своим компьютером? Не, не приходило. Как не приходило просить крановщика прийти со своим башенным краном. :) в общем, я бы на такое собеседование не пошёл. Хорошо, что ни кто пока до такого не додумался :). И, главное, ради чего — ради написания пузырька/бинарного поиска или чего-то подобного? Мой аргумент о том, что нет смысла забивать гвоздь микроскопом. По-моему, он очень даже "очень". А вот "программист" настаивающий на том, что не в состоянии реализовать простейший алгоритм без любимой иде и гугла, как раз "не очень". Зачем такого брать не работу?

                                                                              • +1
                                                                                На собеседование со своим компьютером? Не, не приходило. Как не приходило просить крановщика прийти со своим башенным краном. :)

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

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

                                                                                Tут я с вами согласен, но аналогии у вас все равно дикие какие-то…
                                                                                • 0
                                                                                  Многое от конторы зависит. Есть места, куда в принципе нельзя приходить со своей техникой по соображениям безопасности.
                                                                                  • 0
                                                                                    Думаю таких единицы.
                                                                                    • 0
                                                                                      Отнюдь. На западе, если фирма хочет работать на гиганта N, то, в 99 из 100 у гиганта N будет такая политика безопасности, которая требует безопасности и от субподрядчика.
                                                                                      • 0
                                                                                        Хм… Как вы себе это представляете? Например телефон свой тоже нельзя проносить? Знаю что иногда NDA перед собеседованием могут попросить подписать, но про запрет на телефоны/ноутбуки в первый раз слышу.

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

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

                                                                                          > провели на определенный этаж для собеседований

                                                                                          Наверное, всё дело именно в этом. Есть гостевые помещения, а есть рабочие (для подписавших NDA), и гостевые помещения изолированы от рабочих.

                                                                                          > Вообще у нас многие на собственных ноутах работали — и ничего.

                                                                                          С собой их забирали или оставляли на работе?
                                                                                          • +1
                                                                                            Проносить можно — никто обыск на входе не устраивает, но вот пользоваться личными телефоном и ноутбуками нельзя.

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

                                                                                            Наверное, всё дело именно в этом. Есть гостевые помещения, а есть рабочие (для подписавших NDA), и гостевые помещения изолированы от рабочих.

                                                                                            Конечно, зачем пускать кого попало куда не следует (я это серьёзно)

                                                                                            С собой их забирали или оставляли на работе

                                                                                            С собой забирали конечно, и рабочие тоже с собой забирали.
                                                                                            На каждый была установлена какая-то следящая программа (вроде бы от МакАффи)

                                                                                            А чем компанию защитит тот факт что ноутбук нельзя заносить или выносить из здания? (опять же если это не завод как я написал ниже, ну и может быть в банке какие-то спец требования еще)
                                                                                            Доступа к боевым серверам/ключам у кого попало нету, как и к интранету из дома. Ограничивать разработчиков и так подписавших NDA из-за необоснованной паранойи? Лучше вложиться в нормальную безопасность на мой взгляд.
                                                                                            • 0
                                                                                              > Опять же, как вы себе это представляете? Например вам приходит смс на телефон — что смотреть ее нельзя? Или нужно срочно ответить на звонок — на улицу пойдете?

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

                                                                                              > С собой забирали конечно, и рабочие тоже с собой забирали. На каждый была установлена какая-то следящая программа (вроде бы от МакАффи)

                                                                                              Вот всяких следящих программ мне ещё не хватало.

                                                                                              > А чем компанию защитит тот факт что ноутбук нельзя заносить или выносить из здания?

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

                                                                                              Все эти проблемы можно решить, но ценой некоторых неудобств для владельца ноутбука.
                                                                                          • 0
                                                                                            Почему же именно представляю? Я это не представляю — это реально есть. Азартные игры — это не нефтеперерабатывающий завод. Наверное в азартных играх воровать, ну или взрывать — нечего.
                                                                                            Реализуется такая политика разграничением предприятия на зоны — вам не дадут пойти погулять где хочешь. Сетевые ресурсы — все разделены, доступ контролируется. Рабочие машины строго регламентированной конфигурации, никакого маломальского софта без разрешения установить не дадут.
                                                                                            Телефон, конечно, не запрещено. Как и свой ноутбук — только интернета либо не будет, либо дадут гостевой.

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

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

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

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

                                                                                              Как и свой ноутбук — только интернета либо не будет, либо дадут гостевой.

                                                                                              Что я и описал в своем примере выше.

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

                                                                            И тут же налетят сотни, тысячи…
                                                                            • 0
                                                                              Два последних варианта — ревью и шлифовка — это класс! Отличная идея. Честно. Главное код взять хороший, например не по стайлгайдам, KISS и SOLID. Уверен, в любом проекте найдётся. Можно нагавнякать. Или дать что-нибудь из решений кандиатов, не прошедших тестовое задание.
                                                                              • –8

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

                                                                                • +11
                                                                                  Человеку невыгодно тратить свое личное время на неоплачиваемую работу, тем более что на рынке есть работодатели без тестового задания
                                                                                  Существует практика оплаты затраченного на тестовое задание времени
                                                                                  • +1
                                                                                    Там в статье обосновывается положение, что разработчику не только невыгодно бесплатно делать задания, но и даже платно (распыляются силы на неосновную цель).


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

                                                                                      В идеале, я бы хотел, чтобы все-все разработчики в мире договорились отказываться от тестовых заданий, но это мечты :D
                                                                                      • 0
                                                                                        Как отказаться-то, если контора просит тестовое задание, а ты не против работать у них? Оплачивать, разумеется, никто ничего не собирается. Делаешь так — а куда деваться? Последний раз, когда я искал работу, сделал их штук 10, истратил вагон личного времени, и только последнее — 10-е — понравилось. Никто ничего не компенсировал, разумеется. Не те, кому не понравилось, ни тот, кому понравилось.
                                                                                    • +3
                                                                                      Поддержу ревью.
                                                                                      Менее стрессовый вариант, рефреймящий коммуникацию с экзаменационного шаблона (вы задаёте каверзный вопрос, кандидат подрывается искать ответ) на кооперативный (совместно обсуждаете сторонний код, ответственность за который на кандидате не лежит, он наконец может немного расслабиться, включить голову, раскрыть способности, покритиковав другого показать себя).
                                                                                      Искать недостатки в готовом неидеальном коде эмоционально проще, чем ваять свой идеальный. Для перфекциониста вайтбординг — ад.
                                                                                      Если уж сил нет как хочется проверить стрессоустойчивость, можно дать кандидату в морду. Заодно и свою проверить.
                                                                                    • 0
                                                                                      Попросить прислать какой-нибудь код, например.
                                                                                      • +2
                                                                                        Можно ради спортивного интереса сграбить кусок кода из больших популярных опенсорсных проектов гугла или апл,
                                                                                        и в итоге удивиться, какой «некачественный» код прислал.
                                                                                        • +3

                                                                                          А если я в свободное время пишу не код, а фэнтези? Ссылку на раздел Самиздата присылать?

                                                                                          • –4
                                                                                            Не скажу за всех, но я бы не хотел работать с людьми, которые не пишут код в свободное время.
                                                                                            • 0

                                                                                              Планета Шелезяка ждёт Вас!

                                                                                              • +1
                                                                                                А я бы не хотел работать с людьми, которые все свободное время пишут код. По моему опыту, с ними очень трудно общаться.
                                                                                                • +1

                                                                                                  Так всё хорошо в меру ведь. Главное — правильно организовать своё время.

                                                                                                  • 0

                                                                                                    О рабочих моментах трудно общаться, или в пятницу после работы?

                                                                                                    • 0
                                                                                                      О рабочих конечно не трудно, но ни о чем другом. В пятницу после работы они код пишут дома :)
                                                                                                      • +2

                                                                                                        А зачем вам с ними общаться о чём-то другом?

                                                                                                        • –1

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

                                                                                                          • +4

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

                                                                                                            • 0

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


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

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

                                                                                                                Думаю, это больше от характера зависит.
                                                                                                                • +2

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

                                                                                                              • +6
                                                                                                                Тимбилдинги очень эффективно отпугивают тех, кто предпочитает после рабочее время проводить по своему усмотрению.
                                                                                                                А еще тимбилдинги не только уменьшают, но и увеличивают напряжение — зависит от очень многих факторов.
                                                                                                                • 0
                                                                                                                  Если принудительные — то вы правы, конечно. Но, например, сходить в пятницу в бар с коллегами бывает полезно для того же тимбилдинга :)
                                                                                                                  • +2
                                                                                                                    А давайте делать пьянки в рабочее время. Нет серьезно.
                                                                                                                    ДРы, корпоративные праздники и т.п. вполне можно и в рабочее время «после обеда» отмечать. При этом обязательно дать возможность асоциальным типам оставаться асоциальными. Ненавижу общения в группах больше трех человек.
                                                                                                                    Прям физически не могу. Но как руководящий работник делаю над собой усилие.
                                                                                                                    А тем кто не манагерит, тот должен иметь возможность откосить и не вызывать у окружающих отторжение по этому поводу.
                                                                                                                    А тимбилдинги в свободное время — зло несусветное. Нет, иногда можно, но лучше уж куда-то на недельку с семьями или еще что-то, чем «пиво по пятницам».
                                                                                                                    • +3
                                                                                                                      А давайте делать пьянки в рабочее время.
                                                                                                                      Нормальные компании так и делают. Более или менее взрослому человеку нафиг не сдалось приезжать в выходной или задерживаться вечером, чтобы еще раз на коллег посмотреть вместо общения с семьей.
                                                                                                                      • +2

                                                                                                                        Или вместо того, чтобы посидеть и дома пописать код.

                                                                                                                    • 0
                                                                                                                      У меня в компании так. Два часа дня — все поехали на шашлыки. Не хочешь, можешь дальше работать.
                                                                                                        • +1
                                                                                                          Очевидно, те кто не пишут код в свободное время должны работать с себе подобными, как и те, кто пишут. Интересно, у кого будет лучше код?
                                                                                                          • 0
                                                                                                            Я пишу код в свободное время. Но не горю желанием всем его показывать (цель написания — не тщеславие). Мы подобны или нет?
                                                                                                            • 0
                                                                                                              Можно не показывать код, но показывать результаты его работы.
                                                                                                              Или показывать саму программу, но не код.
                                                                                                              К примеру, у меня весь код открыт, но он никому не нужен. Мои первые программы шли freeware (без опен-сорса) и количество их загрузок исчислялось десятками тысяч. Мои программы были полезны, а мой код — нет (вероятно, по причине его невысокого качества).
                                                                                                      • 0

                                                                                                        Оставьте в комментарии… любопытно почитать. :)


                                                                                                        PS ну и ссылку на резюме в инфе об аккаунте стоит держать, никогда не знаешь, где найдёшь человека, которого можно порекомендовать hr-ом компании, в которой работаешь :)

                                                                                                        • 0

                                                                                                          Я присоеденюсь к комментатору ниже, обычно, с людьми, которые совсем не пишут код в свободное время довольно сложно, так как преславутые 20% компания не выделает.


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

                                                                                                          • –2
                                                                                                            Это уже предубеждение. Часто бывает, что человек просто не в теме новинок в вашей среде, т.к. интересуется другим направлением. Я вот часто узнаю много нового от коллег, но сам редко могу предложить из их интересов в программировании. Но опыт в других направлениях более полезен команде.

                                                                                                            А вообще, тренды, как правило, то еще не предсказуемое и малополезное нечто. Они постоянно мрут и становятся бесполезным грузом знаний, либо решают уже решенные проблемы. Другой вариант. Смотрел тренды Java, нужно было подтянуть свой уровень. Многое выглядело для меня просто как дикость и безумие, т.к. проблемы, которые решают трендовые методики просто не существуют в C# dotnet. Так, легко видно людей, которые пишут на новом для себя языке как на старом.
                                                                                                            • +1

                                                                                                              Мне кажется, вы совсем не поняли то, что я имел ввиду. Если обобщить, то я имел ввиду что-то в духе "Откуда человек будет знать о новой, крутой и очень полезном фрейморке/библиотеке/тулзе X, если в реальном проекте он им не пользуется, а в свободное время вообще не занимается программированием, а значит, у него банально нет времени для того, что бы рости как специалист вне проекта?"


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


                                                                                                              Откуда, скажем, человек, который работает на проекте с jQuery будет получать опыт с новыми javascript библиотеками, что бы потом предложить их использовать в проекте?

                                                                                                              • 0
                                                                                                                Как раз таки понял. Но не понял, почему вы так считаете о тех, кто дома код не пишет. Попробую по другому. Что мешает просто загуглить и узнать о технологии? Обычная практика — сначала поставить проблему, потом уже её решать. Делать же наоборот — нонсенс.
                                                                                                                Писать код совсем не обязательно, чтобы было понимание. И опять таки — все что в тренде может полететь далеко и навсегда. Так было с кучей практик, кучей, уже макулатуры, что когда-то были примерами для подражания большинства программистов той среды. Что для меня попусту потраченное время.

                                                                                                                Мне уже давно не обязательно получать опыт пробами для работы с тем, что я уже знаю. Просто потому, что dotNet + Unity + специфика работы железа перекрывает возможности обучения методом проб. Они просто развиваются быстрее, чем это всё можно опробовать. Но есть и +. Всё это можно найти в спецификации, статьях, патчнотах и прочем. Этого достаточно, чтобы изучить всё и знать, что использовать в следующий раз.

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

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


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

                                                                                                                  • 0
                                                                                                                    Понимание многих вещей можно получить умозрительно. Хорошая документация + специфика + примеры работы с пояснениями — достаточно для вывода, часто лучшего, чем даже собственный Небольшой опыт. Для лучшего опыта надо работать над этим долгое время, с разными задачами. Не обязательно самому быть первопроходцем. Опыт можно перенимать у коллег и сообщества. Для меня это очевидные вещи.
                                                                                                                    Да, в первые годы это приносит много пользы, учишься лучшему пониманию языка, набиваешь навык. Но потом это становится всё менее эффективным. С точки зрения понимания различных технологий — есть смысл изучить пару новых языков и программирование именно в их стиле. Большую часть новых фич переносят из других языков, не всегда даже языков программирования.
                                                                                                                    Касательно популярных вещей, что уже прошли отборку сообществом и теперь хотя бы иногда нужны заказчику. Освоить новую технологию не = написать что-то стоящее. Можно просто опробовать различные части этого проекта и понять как они работают. Это скорее исследовательская деятельность, чем написание чего-то конкретного. Тут просто быстро и полно проверяешь как и что работает. Часто даже более полно, чем когда требуется что-то конкретное.

                                                                                                                    Сколько у вас ушло только на одну вещь? А ведь их полно. Всё во всей IT среде просто не хватит времени проверить. Как вы будете выбирать, какой инструмент использовать? Только среди того, что пробовали? Это, пожалуй, на 2 месте самых худших способов выбора инструментария.

                                                                                                                    Любые блага. Даже ваше развитие как специалиста — благо, нет? Чтобы развиваться как программист, не обязательно для этого писать код, тем более «для себя», как и быть в тренде необязательно. Можно решать логические задачи, можно читать книги и справочники, ту же документацию. Даже изучение не языков программирования может принести пользу при правильном подходе.
                                                                                                                    • 0
                                                                                                                      Сколько у вас ушло только на одну вещь? А ведь их полно. Всё во всей IT среде просто не хватит времени проверить. Как вы будете выбирать, какой инструмент использовать? Только среди того, что пробовали? Это, пожалуй, на 2 месте самых худших способов выбора инструментария.

                                                                                                                      А как вы предлагает? У вас, по факту есть два варианта: это hype-driven-development и использование опыта. Откуда вы возьмете людей, которые скажут вам "Да, технология X подходит на наш проект, потому что ..."?


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

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


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

                                                                                                                      Это абстрактные логические задачи, которые вам не очень помогут? Или документация, которая, обычно, сильно отличается от практики. Чтение документации о чем бы это не было бесполезно без практики.


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

                                                                                                                      Ну так мы же не требует от всех крутые open-source библиотеки. Но, скажем, если я буду изучать какую-то специфическую БД, то почему бы мне не взять в дополнение к этому какой-то новый web-фрейморк на знакомом мне языке (или уже знакомый мне) и не написать на нем какой-то todo лист? Вполне исследовательская деятельность.

                                                                                                                      • 0
                                                                                                                        hype-driven-development возможен когда как раз делаешь свой небольшой проект, не разбираясь более полно в технологии, а затем переносишь его на большой проект с десятком программистов. Небольшой опыт — хуже чем полноценный разбор и тестирование технологиЙ, тем более, если тестирование идет под конкретную задачу.
                                                                                                                        Я ни за что не начну верить только чужому опыту, когда на кону работа не одного человеко-месяца. Разве что от безысходности. Тут так же влияет психология — чаще выбирают просто знакомое, совсем не потому, что оно лучше.

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

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

                                                                                                                        PS: Ничего против не имею. И даже за. Но и не считаю, что это стоит превозносить.
                                                                                                                      • 0

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

                                                                                                                        • 0
                                                                                                                          Это только пока ты их уже не выработаешь и если тебе это не дают делать в основное рабочее время.
                                                                                                                          Писал же — в первое время это очень сильно помогает понять язык и набить навык.
                                                                                                                          • 0

                                                                                                                            Мне кажется, совсем полностью раз и на всегда нормально выботать их не получится.
                                                                                                                            Всякие docker, static-code analyze и прочие полезные штуки довольно часто появляются.
                                                                                                                            Например, для тестов вот относительно недавно выпустили такую штуку: https://pypi.python.org/pypi/elizabeth, которой довольно не хватало некоторым для написания тестов)

                                                                                                                            • –1
                                                                                                                              Кажется, не так давно(на деле больше года) говорили о проблеме в java, где было 1000 и 1 либа, иногда одна популярная либа была буквально в несколько строк.

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

                                                                                                                              Я сам работаю с Unity и С#. Чем больше библиотек, тем больше мата. Иногда, чтобы внедрить новую либу, с учетом 5 необходимых, тратится столько времени, что быстрее написать своё решение. Возможно в вашей среде иначе? Я не знаю. Может и в этом наши различия?
                                                                                                                              Так же, как я уже говорил — в той же Java решают часто те проблемы, что уже решены в dotnet самой архитектурой(быть может в Java решена часть проблем, что есть в C#, но я не столь хорош в Java). Думаю, это так же может влиять.
                                                                                                                              • 0
                                                                                                                                Я сам работаю с Unity и С#. Чем больше библиотек, тем больше мата. Иногда, чтобы внедрить новую либу, с учетом 5 необходимых, тратится столько времени, что быстрее написать своё решение

                                                                                                                                Именно!
                                                                                                                                Вот потому надрачивание на библиотеки и фреймворки — считаю Культом Карго.

                                                                                                                                • +1
                                                                                                                                  Кажется, не так давно(на деле больше года) говорили о проблеме в java, где было 1000 и 1 либа, иногда одна популярная либа была буквально в несколько строк.

                                                                                                                                  Речь явно было про js (точнее про npm)


                                                                                                                                  Я сам работаю с Unity и С#. Чем больше библиотек, тем больше мата. Иногда, чтобы внедрить новую либу, с учетом 5 необходимых, тратится столько времени, что быстрее написать своё решение. Возможно в вашей среде иначе? Я не знаю. Может и в этом наши различия?

                                                                                                                                  Ну а у npm время внедрения — несколько секунд.
                                                                                                                                  У Java при использовании gradle/maven (~99.5% проектов) время подключения новой библиотеки, кстати, тоже невелико и больше упирается в ширину интернет-канала.


                                                                                                                                  И да, можете гордиться тем, что


                                                                                                                                  в той же Java решают часто те проблемы, что уже решены в dotnet самой архитектурой(быть может в Java решена часть проблем, что есть в C#, но я не столь хорош в Java)

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

                                                                                                                                  • 0
                                                                                                                                    Ну а у npm время внедрения — несколько секунд.

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

                                                                                                                                    Это не заблуждение, а факт. Более того, некоторые проблемы(недостатки) есть у каждого языка, особенно если расширяется зона его применения. Часто о недостатках знают и сами разработчики — иначе бы языки не развивались.
                                                                                                        • –4
                                                                                                          за что минусуют?
                                                                                                          сам так делаю, экономит кучу времени, как как соискателя, так и работодателя.
                                                                                                          полное отсутствие публичного кода считаю минусом. вероятно, человек не очень любит профессию?
                                                                                                          хотя для джунов такое приемлемо (еще не успели), тогда пишут тестовое.