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

Что за птица — Senior?


Итак, Senior Software Developer(aka Старший Разработчик) — это разработчик со значительным опытом(от 5 лет) и глубокими знаниями в коммерческой разработке софта. Опыт работы разработки за деньги — это необходимое, но недостаточное условие. Обязательно нужно поучаствовавать в каком-нибудь проекте уровня Enterprise, а если еще и с самого начала — вообще прекрасно, это дает незабываемый опыт и широкий кругозор. Senior от Middle отличается прежде всего тем, что может довести любую задачу до состояния production-ready. Он четко знает, что можно сделать, а что нельзя. Способен уловить момент, когда в ПО пора делать рефакторинг или просто переписывать с нуля. Пишет достаточно качественный код без критических и архитектурных ошибок.

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

Основная цель собеседования


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

Кто должен собеседовать?


Здесь единственно правильный ответ — непосредственный будущий начальник aka Team Lead. Частая ошибка — собеседовать по 2-3 человека со стороны собеседующего, задавая перекрестные и непоследовательные вопросы. Это все создает ненужный стресс для собеседуемого и мешает установлению психологического контакта.

Атмосфера


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

Узнаем компетенции


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

Ключевые компетенции для Senior-разработчика:

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

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

Очень часто собеседующие переходят на какие-то хорошо им знакомые частности, вот случаи из реальной практики:

  • Каким образом используя SQL удалить одну строку, если под критерии выборки попадает больше одной?
  • Какой командой git откатить последний коммит?
  • Какие методы объекта Object в Java Вы знаете? Тут могут быть другие варианты в других языках — то, что хорошо знает собеседующий.

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

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

  • Почему люк круглый?
  • Как налить ровно 4 литра воды в одно ведро, если есть два ведра — 3 и 5 литров?
  • Решите какую-нибудь головомку, например соберите кубик Рубика.

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

Ищем мотивацию


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

Какие бывают мотивации:

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

Чего не стоит спрашивать у Senior Developer


  • Как работает редко нужный алгоритм XXX(например, quicksort). Зачем спрашивать то, что не нужно в повседневной работе разработчика, но гуглится за 5 секунд?
  • Владеете ли Вы несложным иструментом YYY(например git). Я еще не встречал разработчика, который бы не освоил базовые возможности git, нужные для повседневной работы, за день-два.
  • Умеете ли писать тесты. Вопрос со звездочкой. Сам процесс написания тестов — несложен, а вот научиться понимать, что именно нужно тестировать и в каком объеме — тут нужна длительная практика. На деле же достаточно одного опытного тестописателя в команде, который сможет контролировать этот процесс в эффективной манере.
  • Что такое Agile/Kanban/Scrum. Методологию, как будет вестись разработка, выбирает Team Lead, соответственно рядовым исполнителям знать ее досконально не обязательно, а базовые принципы постигаются за считанные дни.

Типы Senior-разработчиков


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

  • Креативщик или Увлеченный. Его прет от самой работы, нетривиальных задач, там, где нужно что-то изобрести. Иногда получаются велосипеды, но с ростом компетенций производит весьма качественные продукты. Основная мотивация — интересные проекты и задачи.
  • Рутинщик. Способен выполнять весьма рутинную работу не снижая производительности со временем и не требуя какой-либо мотивации.
  • Супергерой. Выполнит задачу любой ценой, даже если не хватает компетенций и времени. Часто лепит из говна и палок но с ростом компетенций получается что-то более-менее приличное. Очень ценный для стартапов и требовательных начальников.
  • Грамотный. Его на мякине не проведешь, хайпом не обманешь, всегда старается постичь суть технологий и задач, мыслит глубоко и структурно. Ценный сотрудник в любом проекте.
  • Поверхностный. Нахватается умных слов, подходов, изучит(поверхностно) хайповые технологии и тулзы и пытается все это применить в проекте, насыпая большими горстями, даже если можно обойтись малым. Свойственно на заре карьеры и просто ведомым и впечатлительным товарищам.
  • Заложник настроения. Есть настроение — работа так кипит, что только подноси снаряды, нет настроения — больше будет делать задумчивый вид и философствовать, чем работать.
  • Карьерист. Четко нацелен на карьерный рост. Нет роста больше года — потенциальный кандидат на вылет.
  • Консерватор. Любитель стабильности и традиций, негативно относится ко всем этим новомодным штучкам, инструментам и подходам.
  • Манимен. Работает там, где больше платят, поэтому лояльность к компании довольно низка. Любит премии, бонусы, бесплатные ништяки и прочие финансовые мотивации.

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

Психологическое состояние


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

Нередко встречаются такие состояния:

  • Жизнь — тлен. Иногда бывает так, что написанный код не идет в production по каким-то причинам (например по бизнес-решениям) или живет недолго(стартап или неумелое управление). Это серьезно деморализует со всеми вытекающими. Тут надо не путать со здоровым обычным цинизмом ввиду опыта работы.
  • Постигший дзен. За годы в статичном Enterprise-проекте разработчик изучает его вдоль и поперек и у него складывается ощущение, что он теперь редкий специалист. На самом деле его навыки и умения за пределами этого проекта почти не стоят ничего, налицо переоценка своих возможностей разработчиком.
  • Недооцененный и неуверенный. Череда неудачных проектов, плохого управления и прочих рисков заставляют разработчика сомневаться в своих способностях и умениях, хотя на деле он может оказаться весьма способным и ценным сотрудником. Часто недооценивает себя по зарплате и/или должности.
  • Переоцененный. В контраст недооцененному и неуверенному этот индивидуум словил удачный проект или серию, который прошел крайне удачно и на этой волне сильно переоценивает свои способности и возможности.

А как же тестовое задание?


Проблема в коротком тестовом задании(2-3 часа) в том, что по его результатам нельзя сделать никаких определенных выводов, обладает ли автор опытом разработки уровня Senior или нет. С таким же успехом Вы можете просто подкинуть монетку в воздух.

Выводы


По итогам собеседования должно сложиться объективное впечатление о разработчике:

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

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

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

Комментарии (142)


  1. questor
    10.12.2019 23:46
    +1

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


    И содержит много полезных мелочей во вспомогательных темах (типа раздела "мотивация").


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


    То есть неплохо бы раскрыть более подробно как именно проверить знание алгоритмов, архитектуры… И не "от противного", а без этих "не", которыми полна эта статья.


    Так что было бы неплохо увидеть продолжение!


    1. Magikan
      10.12.2019 23:59

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


    1. JordanoBruno Автор
      11.12.2019 02:01

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


  1. Magikan
    10.12.2019 23:56

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


    1. JordanoBruno Автор
      11.12.2019 02:17

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

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


      1. anticyclope
        11.12.2019 06:54

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


        1. avtor13
          11.12.2019 14:13
          +1

          там было написано «А уж привлекать на техническое собеседование HR...»


      1. VolCh
        11.12.2019 14:06

        Зачем накладывать на себя бремя разруливать конфликты нового члена команды из-за несовместимости со старыми, если это можно проверить на берегу?


      1. dimm_ddr
        11.12.2019 17:38

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

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


    1. alekciy
      11.12.2019 06:35

      Тестовые даете?


      1. Magikan
        11.12.2019 07:27

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


        1. webmascon
          11.12.2019 08:04

          А Мне вот дали тестовое и я не послал. Может я не senior? И тестовое было интересным и я понимал почему оно именно такое.


          1. fougasse
            11.12.2019 13:07

            у вас просто много времени или желания


          1. softaria
            11.12.2019 18:01

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


            1. Helldar
              13.12.2019 00:03

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


              1. JordanoBruno Автор
                13.12.2019 01:03

                100% джунов можно отсечь по CV и 5-минутному разговору по телефону.


              1. strannik_k
                13.12.2019 10:26

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

                При одинаковых условиях, для экономии своего времени, я сначала выбирал вакансии без тестовых задач. А то 10 конторам сделать тестовые на 1-2 часа уйдет часов 50, пока будешь стараться сделать как можно лучше и перепроверять.


              1. DrFdooch
                13.12.2019 10:52

                Вы знаете, это очень отличается от того что я знаю из своего опыта или опыта близких знакомых. Я согласен с JordanoBruno в том, что резюме и 5-10 минут погооврить достаточно, чтобы отсечь явно не подходящих кадров.
                Как я понял, вы судите исключительно по тестовому заданию — и тут либо вы его даете просто всем (естественно, что 90% людей оказываются неподходящими) либо ваше мерило уровня не совпадает с общепринятым.
                Когда мы практиковали тестовое задание — до половины кандидатов его проходило… чтобы потом неприятно удивить на собеседовании. Поэтому сейчас я предпочитаю сессию парного программирования тестовому. Очень сложно правильно судить о специалисте только по его «искуственному» коду.


          1. nikolayv81
            13.12.2019 17:44

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


        1. sashocq
          11.12.2019 23:14

          Т. е. можно дать тестовое, и если кандидат пошлёт откажется, значит хороший спец


        1. Bratak
          12.12.2019 04:48

          Вы специалист по анализу "умения мыслить"?


        1. Pest85
          12.12.2019 07:43

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


        1. Helldar
          12.12.2019 23:59

          Имхо, одно дело тестовое для реально крутой компании а-ля Гугла, Яндекса, Амазона, Мейл.ру и совсем другое для Васи Пушкина.


  1. DrFdooch
    11.12.2019 00:46
    +2

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


    1. JordanoBruno Автор
      11.12.2019 01:57

      В хорошей комфортной команде, при адекватном отборе на собеседовании, при оплате как минимум по рынку и не на говнопроектах или стартапах текучка будет небольшая(5-10% в год). Многое зависит от возраста — молодые(до 30 лет) намного проще уходят. Причины ухода бывают разные, но весьма стандартные — деньги, хочется других и интересных задач, хочется карьеры, с кем-то не сработался и это критично, предложили более интересное/выгодное место. Нужных специалистов держат, тех кого несложно заменить — нет.


      1. alekciy
        11.12.2019 06:34

        Я так понимаю, что DrFdooch хотел услышать вашу статистику.


        1. JordanoBruno Автор
          11.12.2019 14:49

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


      1. DrFdooch
        11.12.2019 09:51

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


        1. JordanoBruno Автор
          11.12.2019 14:26

          Квалификация проверяется на собеседовании, если кандидат ее прошел — значит с ней проблем нет.

          Держат тех, кого заменить тяжело. Например Вася знает хорошо проект, успешно развивает значительную его часть и у него нет серьезных конфликтов.


          1. akdes
            11.12.2019 15:11

            а как держат, и на сколько велик шанс, что удержат?
            Т.к. думаю, что очень сложно, уловить «уплывающего» тёпленьким, прежде чем он объявит об уходе…
            Или у Вас это проходит стабильно, раз, два, н раз в году собеседование и премия или повышение?


            1. JordanoBruno Автор
              11.12.2019 16:08
              -1

              Если отношения хорошие в команде, то сотрудник сначала поговорит со своим начальником — «предложили больше денег, что будем делать?».

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


          1. DrFdooch
            11.12.2019 15:37

            Квалификация проверяется на собеседовании

            А как вы отбираете людей на собеседование?


            1. JordanoBruno Автор
              11.12.2019 16:10

              Первичный отбор — по резюме. Потом короткий звонок. Если все ОК — приглашение на техническое собеседование.


              1. DrFdooch
                11.12.2019 16:18

                Еще 2.5 вопроса :)
                Какой процент пришедших на интервью его проходит?
                Есть не техническое интервью после технического? Какой процент проходит его?


                1. JordanoBruno Автор
                  11.12.2019 16:36

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

                  После технического — только Background Check и далее Offer.


              1. 0xd34df00d
                11.12.2019 18:25

                Смотрите ли всякие гитхабы? Если да, то насколько они влияют?


                1. JordanoBruno Автор
                  11.12.2019 20:22

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

                  Влияет самым непосредственным образом.


                1. Helldar
                  13.12.2019 00:11

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


          1. Helldar
            13.12.2019 00:09

            Устроился 3 года назад в контору на ЗП мидла в нижней планке по городу, т.к. только переехал в крупный город и деньги физически заканчивались, а других офферов не было.
            Сейчас я тут тимлид, фулстек, девопс, 3 человека в подчинении (сам набирал)… Сам с нуля поднимал и настраивал прод, жиру, гитлаб. Скрипты, вебхуки и прочее. Задачи раскидываю по команде, скрипты автоматизации писал…
            … спросил за повышение хотя бы до уровня сеньора — сказали "у нас нет таких зарплат" и подняли на 10%. Обидно.
            Так как уволить они меня не могут (понимают что контора раком станет моментально), постепенно ищу другое подходящее место с комфортными условиями и, желательно, сложными задачами, т.к. от админок для лендинга уже блевать хочется.


  1. 411
    11.12.2019 01:21
    +1

    Я бы спросил «Когда и как вы поняли, что стали Senior разработчиком?»


    1. ksigne
      11.12.2019 05:24

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


    1. MisterParser
      11.12.2019 05:39

      Когда тебя взяли на эту роль другие люди.


      1. 411
        11.12.2019 10:22

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


      1. iago
        11.12.2019 18:07

        тогда я стал сеньором в 22 года (10 лет назад). Как угодно хотели продать заказчику, лишь бы подороже. Мне смешно было слушать также какой я хороший сеньор когда я увольнялся в 24. А начал чувствовать после двух кейсов:
        — решения нескольких нестандартных сложнейших задач (архитектурно-производительных)
        — когда остался одним опытным разработчиком на проекте и все лежало на мне продолжительное время, соответственно научился ответственности


    1. Hydro
      11.12.2019 08:18

      Я бы перефразировал «Когда и как Вы поняли, что считая себя Senior Вы на самом деле не Senior?»


      1. 411
        11.12.2019 10:18

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


    1. timon_aeg
      11.12.2019 10:55

      Я ассессмент на галере прошёл, у меня и докУмент есть.


    1. wladyspb
      12.12.2019 14:26

      Я вот до сих пор не знаю, кто я.
      Вроде 5+ лет опыта есть — значит, сеньор.
      С другой стороны, чем я занимался-то? Круды писал первое время, во фронт лазил, разве ж это опыт… Наверное миддл…
      Хотя — последние несколько лет тяну проект, поднимал его вообще в одиночку, и вроде неплохо спроектировал — значит, всё же сеньор?
      С другой стороны, проект-то так себе, внутри костыли, особо интересных задач нет, вокруг много таких же — кто угодно бы справился. Миддл?
      Но опять же — уже на 7к рпс вышли, миллионы крутятся, куча технологий использована, наверное сеньор.
      Но… Я же алгоритмов не знаю почти, паттерны программирования так и не изучил, какой я сеньор, так, миддл.
      Но, мне же платят зарплату вполне себе сеньорскую по рынку, и повышают регулярно, со мной советуются другие разработчики, значит — сеньор?
      Да блин, я за технологиями не слежу, более менее знаю только php, всё остальное по верхам нахватал, регулярно гуглю варианты — миддл?

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


      1. DimoNj
        12.12.2019 21:09

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


      1. Helldar
        13.12.2019 00:19

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


      1. Jacen11
        13.12.2019 01:04

        Эта градация относительная, кто вы, зависит от вашего окружения.


    1. Helldar
      13.12.2019 00:15

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


  1. Pavenci
    11.12.2019 09:06
    +1

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

    Это надо золотыми буквами сделать на всех видных местах, где проходят собеседования. Чтобы собеседующий всегда помнил. Наверное самое главное предложение из всей статьи. Спасибо автор :)


    1. strannik_k
      11.12.2019 13:31

      Может в начале каждого резюме писать) Как еще собеседующие это увидят?


      1. Pavenci
        11.12.2019 15:02

        Эх, еслиб они его еще читали… А то как обычно «Мы внимательно изучили ваше резюме, бла бла бла» и следом вопрос «А вы работали с javascript?»


        1. strannik_k
          11.12.2019 16:16

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


    1. VolCh
      11.12.2019 14:03

      Только это цель одной стороны, а не общая


      1. avtor13
        11.12.2019 14:17

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


    1. iago
      11.12.2019 18:09

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


  1. Mugik
    11.12.2019 09:09
    -2

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

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


  1. SergeyEgorov
    11.12.2019 10:10

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


    Понял лишь что если сразу что-то явно не нравится, то надо извиняться и вежливо расставаться.


    1. DrFdooch
      11.12.2019 10:32

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

      У меня есть один хороший пример: канидат на собеседовании показал себя понимающим и опытным разработчиком, но по факту оказался неспособен работать в условиях малейшей неопределенности (а это в нашей сфере, к сожалению, норма). В итоге любая задача без исчерпывающей спецификации, с которой Senior должен как раз справляться без проблем, растягивается в три-четыре раза — и 10% лишнего времени уходит на собственно уточнения требований, а 90% — на фрустрацию и прокрастинацию от безысходности. В итоге разработчик чувствует себя, извините, говном (а это плохо не только для него); менеджмент периодически полыхает; перестроить процесс, работающий для остальных — невозможно. Спасает только парное программирование, но применять его постоянно тоже не выход.


      1. SergeyEgorov
        11.12.2019 12:20

        О! Практикуете парное программирование!? Через TDD? Это замечательная техника! Я как раз считаю что применять это надо постоянно.


        Если говорить про кандидатов, то 95% процентов из них показывают себя на собеседованиях вполне перспективно, а затем проваливаются в повседневной производственной коммуникации. Люди не устройства с совместимыми интерфейсами.


        Более-менее адекватная оценка для кандидата появляется после пары месяцев совместной работы в обычной обстановке. И ежедневное парное программирование наиболее этому способствует.


        1. JordanoBruno Автор
          11.12.2019 14:34

          95% процентов из них показывают себя на собеседованиях вполне перспективно, а затем проваливаются

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


        1. DrFdooch
          11.12.2019 15:30

          О! Практикуете парное программирование!? Через TDD? Это замечательная техника! Я как раз считаю что применять это надо постоянно.

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


      1. silent_jeronimo
        11.12.2019 14:06

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

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


  1. tretyakovmax
    11.12.2019 10:10

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


    1. Rumex339
      11.12.2019 16:23

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


      1. Alexsey
        11.12.2019 20:19

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


      1. ravendyg
        11.12.2019 20:23
        +1

        А прекратить тратить время он не пробовал?


      1. JordanoBruno Автор
        11.12.2019 20:34

        Есть собеседования, где цель — не нанять человека, даже если это Джеймс Гослинг, Гвидо ван Россум и Сергей Брин в одном лице за скромную зарплату.


      1. Stas911
        12.12.2019 05:49

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


        1. Rumex339
          12.12.2019 10:50

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


          1. DrFdooch
            12.12.2019 11:28

            Собеседования он, получается, проводил как хобби, непрофессионально? :)


          1. Stas911
            12.12.2019 14:19

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


  1. dim2r
    11.12.2019 10:23

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


  1. kwardakov
    11.12.2019 11:46
    +2

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

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


    1. TheKnight
      11.12.2019 14:05

      А что делать если вы гугл/нетфликс/etc?


      1. ITurchenko
        11.12.2019 15:05
        +2

        Не пытаться искать ответы в комментариях на Хабре


      1. Ru6aKa
        11.12.2019 23:00

        Напишите свой хабр/Stack Overflow/etc и задавайте вопросы там :)


    1. Rumex339
      11.12.2019 15:48

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


    1. KvanTTT
      12.12.2019 14:48

      Вы не Гугл и никогда им не будете.

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


    1. Gradiens
      12.12.2019 17:39

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

      Ключевое слово — эффективно.
      Объективной информации о его работе на предыдущем месте у вас нет и не будет.
      Кандидата могли терпеть по каким-то своим причинам больше года.
      Теперь терпеть придется вам.


      1. kwardakov
        12.12.2019 18:01

        Можно взять телефон и позвонить. Не усложняйте.


        1. Gradiens
          12.12.2019 18:08

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


          1. kwardakov
            12.12.2019 18:51
            +1

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


          1. jaddd
            12.12.2019 19:15

            Если конфликтов не было — услышите что-то нейтральное или хорошее.

            Смотря какой задавать вопрос.
            Самый главный вопрос, который надо всегда задать в процессе общения с предыдущим работодателем кандидата:
            «Вы бы взяли его себе обратно на работу, при условии, что у вас бы нашлась для него работа?»
            Если да — значит эффект в его работе был. Если нет — надо узнавать причину — возможно для вас это не проблема.

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


    1. Helldar
      13.12.2019 00:22

      Золотые слова, Юрий Бенедиктович!


  1. user_man
    11.12.2019 13:50
    -1

    Похоже, что автор рассматривает собеседование именно с точки зрения подбора «своих людей» в «свою команду». Но бизнес — это не ваше, и это даже не моё, это чужое. Просто совсем левое.

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

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

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

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

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

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


    1. Pavenci
      11.12.2019 15:23
      +1

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


      1. Helldar
        13.12.2019 00:26

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


    1. Ramileve
      13.12.2019 01:04

      А что посоветуете «мальчику-джуну», который не отличил манагера и спеца и теперь единственный прогер с кучей отвенственности? :)


      1. Helldar
        13.12.2019 09:24

        Run, Forest, RUN!


  1. dshtempluck
    11.12.2019 14:37

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


  1. akdes
    11.12.2019 15:16

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


    1. JordanoBruno Автор
      11.12.2019 17:02

      Это отдельная история — как нанять толкового сеньора, если бюджет ограничен.

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

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

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


  1. kolemik
    11.12.2019 18:17

    а вот меня прям недавно спросили про методы у Object

    правда там и ещё было умных вопросов, но вот этот запомнился…

    а года 4 назад поинтересовались как перевозить какое-то зверьё в темноте через мост в лодке с фонариком и батарейки кончаются и река горит и вообще апокалипсис.


    1. JordanoBruno Автор
      11.12.2019 22:38

      зверьё в темноте через мост в лодке с фонариком и батарейки кончаются и река горит и вообще апокалипсис

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


      1. kolemik
        11.12.2019 22:50

        думаю это была такая задача:
        petruchek.info/problems/night-bridge-flashlight.html

        там потом выяснилось что отпуск надо планировать за год, и всё такое, приходить к 9 утра, в общем не сложилось с ними, хотя 150тыр 5 лет назад было неплохо конечно…


        1. JordanoBruno Автор
          11.12.2019 22:56

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


          1. kolemik
            11.12.2019 22:58

            ага. Яндексу это расскажите.


        1. demsp
          11.12.2019 23:16

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


  1. alekam
    11.12.2019 19:11

    про кубик-рубик зачет! никогда не понимал такого. я будут тестером головоломок или сениор девелопером? как это умение поможет мне как-то в работе?
    возвращаясь к кубику Рубика. у нас с сестрой в детстве был такой способ его сборки: после 1-2 ударов им об стену, у него выпадывал угол, после чего его можно было разобрать и вставить правильно все цвета. данная операция занимала несколько минут. то же самое с пирамидкой, но там выбить компонент было сложнее.


    1. Stas911
      12.12.2019 05:56

      Сразу видно нестандартный подход к решению задач — надо брать!


  1. Alesh
    11.12.2019 19:25

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


    На мой взгляд решение — только под ответственность тимлида (они должны быть на одной волне) и чётко оговоренный испытательный срок.


    1. JordanoBruno Автор
      11.12.2019 22:36

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


      1. agent10
        12.12.2019 00:45
        +1

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


        1. JordanoBruno Автор
          12.12.2019 00:52

          Да не вопрос, нравится кодить одному — Ваше право. Задача — посмотреть на Вашу работу в комфортной среде, а не создать стресс, как делают некоторые.


  1. slovak
    11.12.2019 19:51

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

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


  1. Oborotenby
    11.12.2019 20:19

    Первый раз вижу настолько хорошую статью о себеседовании.


  1. CrazyElf
    11.12.2019 20:20
    +1

    Senior, которого прет от работы и которому нужны интересные задачи, а не деньги — это, конечно, очень ценный кадр, но, боюсь, в природе он встречается не часто.
    Проблема в том, что интересных задач обычно мало, а рутины много. И сложную рутину тоже надо кому-то делать, спихнуть всё на низовой состав нереально. Поэтому senior со временем привыкает к тому, что интересные задачи приходят и уходят, а деньги — штука хорошая и их платят за разную работу, в том числе и не очень то интересную. Другое дело, что если процент неинтересной работы на конкретном месте начинает зашкаливать, senior это терпеть не будет даже ради денег. )


    1. VIkrom
      11.12.2019 22:28

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


      1. JordanoBruno Автор
        11.12.2019 22:31

        Я таких людей не встречал — с одинаковой производительностью. Возможно Вам повезло больше, не исключаю.


      1. CrazyElf
        11.12.2019 23:32

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


    1. Stas911
      12.12.2019 05:57

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


  1. CrazyElf
    11.12.2019 20:28

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


  1. RaShe
    11.12.2019 21:13

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


    1. JordanoBruno Автор
      11.12.2019 22:30

      Если Вы имеете ввиду какую-нибудь классику из кнутовской серии, то это крайне редко нужно на практике. Под алгоритмами на собеседовании подразумевается насколько эффективно разработчик воплощает задачу в коде. Это нужно для того, чтобы понять, являются ли алгоритмы его сильной стороной или нет.


      1. agent10
        12.12.2019 00:54

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


  1. vadlit
    11.12.2019 23:42

    Так как налить ровно 4 литра при вёдрах 3 и 5 ?


    1. darkAlert
      11.12.2019 23:56

      Пусть, в3 — ведро 3л, в5 — ведро 5л
      1) Наливаем в в3 и выливаем в в5
      2) Наливаем еще в в3 и выливаем в в5 пока не заполнится. В в3 остается 1л.
      3) Опустошаем в5 и переливаем туда 1л из в3
      4) Наливаем в в3 3л и выливаем это в в5 с 1 л, получаем 4л.

      p.s. сори если это был сарказм и я не в тему, просто пролистал комменты до конца и ваш был последний


      1. voidMan
        12.12.2019 09:06

        А не проще ли налить по полведра? 2.5+1.5=4, это если конечно возможно «половину» определить.


      1. vadlit
        12.12.2019 11:31

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


        1. Helldar
          13.12.2019 00:30

          Я тоже так подумал, кстати.


      1. Agne
        12.12.2019 14:32

        вариант

        Пусть, в3 — ведро 3л, в5 — ведро 5л
        1) Наливаем в в3 и выливаем в в5
        2) Наливаем еще в в3 и выливаем в в5 пока не заполнится. В в3 остается 1л.

        Задача получения 1л решена.
        Оформляем результат решения задачи в виде функции.
        Выливаем отладочный результат 1л из в3.
        Для в5, вызываем функцию получения 1л, 4 раза в цикле последовательно или в 4 параллельных потоках.


      1. wladyspb
        12.12.2019 14:53

        У вас получилось восемь этапов, если разделить на отдельные действия.
        Задача решается за шесть)

        решение
        1) наливаем в в5
        2) переливаем из в5 в в3 сколько влезет(в в5 остаётся 2л)
        3) выливаем в3
        4) переливаем из в5 в в3 2л
        5) наливаем в в5
        6) переливаем из в5 в в3 сколько влезет (1л), в в5 осталось 4л.


        1. JordanoBruno Автор
          12.12.2019 14:58

          Вот к слову, хороший пример. Есть два человека, один решил эту задачу за 8 шагов, другой за 6.
          Можно ли сказать, что последний будет работать эффективней на 25%? Нет.
          Можно ли сказать, что последний умней на 25%? Тоже нет.

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


  1. crazytrucker
    12.12.2019 00:33

    Я провел не одну сотню собеседований как с одной стороны, так и с другой.
    А когда вы работать-то успеваете? «Собеседование» (job interview) со стороны нанимающегося на работу длится от 4 до 8 часов, «не одна сотня» (допустим, две сотни) займет у вас 6 * 200 = 1200 часов, т.е. практически два месяца рабочего времени.

    например — полдня кодинга непосредственно в компании, оплаченные по средней ставке
    Это ваша юношеская мечта, что-ли? По какой статье расходов будете проводить оплату в бухгалтерии? ;)


    1. JordanoBruno Автор
      12.12.2019 00:36
      +1

      1) Классическое собеседование длится не больше часа. Иногда меньше, иногда больше.
      2) Вопрос оплаты в нормальных конторах проблемой не является.


  1. vvbob
    12.12.2019 01:45

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


    1. DrFdooch
      12.12.2019 10:38

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

      где-то сейчас заплакал один молодой скрам-мастер и засмеялся (зловеще) аджайл-коуч в галстуке.


  1. Orange11Sky
    12.12.2019 06:13

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


    1. Pavenci
      12.12.2019 11:38

      Про метаморфозы интересно. У меня по молодости, когда только начинал, была тяга ко всему новому: быстрая смена стеков, проектов, хотелось попробовать что-нибудь новое и тд. Сейчас по прошествии лет пришло некое умиротворение и спокойствие. Не хочется скакать по проектам, менять стеки, хочется чего-нибудь стабильного, чтобы на долгие годы и в спокойном темпе, благо нет скрама и удалёнка позволяет :))


    1. JordanoBruno Автор
      12.12.2019 13:55

      Хороший вопрос.
      Чем старее разработчик — тем более консервативен он становится. Вплоть до полного отрицания новых технологий, особенно, если старый стек до сих пор востребован(например, Java 7-8). Плюсом такой консервативности можно считать то, что в старом стеке он плавает как рыба в воде.
      Еще минус возраста то — что тимлиды моложе их встречаются чаще, иногда существенно моложе. Для тимлида 30 лет морально тяжело работать с разработчиком 45 лет, а разработчик с высоты своего опыта и возраста старается давить на него, что вызывает дискомфорт в отношениях. Поэтому старички-разработчики обычно мигрируют в Enterprise и там вполне комфортно себя чувствуют до пенсии.


  1. Guzergus
    12.12.2019 12:56

    Напомнило об очень интересной статье от одного из менеджеров в microsoft о том, как они поменяли процесс собеседования:

    blog.usejournal.com/rethinking-how-we-interview-in-microsofts-developer-division-8f404cfd075a

    tl;dr: вместо шаблонных вопросов решают вместе с кандидатом реальную задачу во всей её полноте, начиная с работы с требованиями и т.п.
    Лично мне такой подход крайне импонирует и, думаю, даже провал такого собеседования будет ощущаться лучше т.к. человек сам увидит, что не справился, не разобрался, etc и как минимум получит полезный опыт. Куда полезнее заучивания всех «принципов ООП».


  1. Gradiens
    12.12.2019 18:47

    А какие у вас появляются дополнительные требования, если вы ищите Lead developer, а не Senior developer?


    1. JordanoBruno Автор
      12.12.2019 18:57

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


  1. Helldar
    12.12.2019 23:54

    Относительно недавно проходил собес как раз на сеньора.
    Из краткого: закидали терминологией (solid, dry, kiss, di, инкапсуляция и т.п.) из "умных" слов. Сразу сказал что у меня теория хромает, зато на практике реально много чего могу. Как ещё не спросили "что такое ООП"…
    В сумме около трёх часов разговаривали (так получилось).
    Дали тестовое. Сделал чтоб не стыдно было. Сказали "офигеть как шикарно", но на работу не позвали.
    При этом, с девчонкой HR неплохо поболтали.
    Ну, нет так нет.


    На другом собесе задачу дали на листочке написать:
    Не используя условные операторы при передаче в функцию числа "1" вернуть "2", а при передаче "2" — вернуть "1".
    Я с такими задачами не сталкивался и честно пытался решить около пяти минут — не смог. Зато придя домой всего за 15 секунд написал рабочее решение не открывая Гугла:
    function get($num)
    {
    return ($num | 2) — 1;
    }


    1. V_Albert
      13.12.2019 07:28

      return 3 — x?


    1. strannik_k
      13.12.2019 10:09

      мне такое первым в голову пришло:
      return 1+!(num-1); // js код
      Но задача дурацкая. Максимум какую инфу получат — сообразил ли кандидат в данный момент или нет.
      А решение выше (return 3 — x), классное!)


    1. alkneu
      13.12.2019 12:54

      Как насчёт get(x) = 3-x ?


  1. saaivs
    13.12.2019 00:18

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

    Как известно, правильно поставленный вопрос — это половина решения проблемы. Поэтому люди, умеющие задавать правильные вопросы, как правило, и хорошо умеют эти проблемы решать. Если есть желание и возможность — попробуйте «собеседование наоборот»: пусть кандидат экспромтом попробует вас самих взять на работу:) Ну, во всяком случае, это может быть весело. Как минимум, нестандартность приёма иногда позволяет снимать стресс…

    И ещё не стоит сбрасывать со счетов «любителей дурацких вопросов»...99% из них и вправду дурацкие, т.к. ответы на них не говорят ровным счётом ничего полезного. Тем не менее, если привлечь на помощь научно обоснованные достижения современной психологии, то кой-какие полезности из их арсенала вполне можно использовать… Например, такие вот простенькие тесты «на когнитивное отражение». Обоснование зачем это и почему может быть полезно популярно рассказано вот тут.