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


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


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


Задачки Повсюду


Мой хороший друг сейчас ищет свою следующую работу, будучи кандидатом наук в Информатике с более чем десятилетним практическим опытом. Почти каждый раз его просят решить какие-нибудь задачки — очно или на стороннем сайте. Он приобрёл Cracking the Coding Interview (в России книга издана как «Карьера программиста» — прим. перев.), чтобы шагать в ногу с рынком труда, но развитие любого навыка занимает время. А несколько отличных вакансий уже прошли мимо.


Проблема всплыла в обсуждении на Megamaker (закрытое англоязычное сообщество для разработчиков и стартаперов — прим. перев.) и один из участников поделился наболевшим:


Скоро мне стукнет 45 и свой стартап (где был CTO) я покинул в декабре. С тех пор я завалил не меньше 10 тестов и интервью на программиста. Пишу код при этом я уже почти 20 лет, включая создание прошивок (по образованию я инженер-электронщик) и полномасштабные распределенные веб-приложения с интеграцией IoT. Я с нуля создавал ПО для крупных специализированных производственных объектов по всему миру. Тем не менее, я просто не могу устроиться программистом, потому что постоянно проваливаю эти тестовые задачки.

А этот твит Макса Хауэлла пошёл в массы несколько лет назад. Это и смешно, и грустно, и одновременно правда.


Создатель доморощенного отклонил google
https://twitter.com/mxcl/status/608682016205344768?lang=en


Факт: для многих Senior Developer'ов, когда они начнут искать другую работу, следующее собеседование может оказаться неприятным сюрпризом.




Разработчики Ненавидят Задачки


Некоторые программисты отвечают…


Я обычно заканчиваю интервью, когда мне предлагают что-то подобное.

или


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

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


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


Рекрутёры почти гарантированно завернут кандидатов, которые могли бы стать ключевыми в компании. Так например, когда Даниэля Бухмюллера не приняли в Netflix…


Твит о Netflix, проходящем над разработчиком rockstar
https://twitter.com/rrubyist/status/1124448304555798529

Компании Любят Задачки


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


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


Компании легко получают 500 приложений
https://twitter.com/ideasasylum/status/1126500299470807046

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


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


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




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

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


  1. snuk182
    22.07.2019 16:29
    +2

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


    1. LeshaVH
      22.07.2019 18:52

      Большинство крупных компаний просто собирает базу данных)))

      А вообще тому кто предлагает задачки сеньор или лид разработчикам с 15+ годами — надо просто пойти на хер)))
      Ибо они не адекватны)))


      1. snuk182
        22.07.2019 19:09
        +3

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


      1. Ildar92
        22.07.2019 20:57
        +1

        я знаю сеньора с 20+ годами опыта, но я бы так не сказал, если бы не знал этого факта. на кого-то между миддлом и сеньором потянул бы


        1. depadep
          23.07.2019 11:51
          +1

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


          1. dim2r
            23.07.2019 13:29

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


            1. x67
              23.07.2019 15:45
              +4

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


      1. dim2r
        22.07.2019 22:29
        -3

        Если они не использовали инверсию двоичных деревьев последние три года, то можно посылать нахеp.

        Меня недавно спросили теорему Чёрча-Росса о ламбда исчислении. А оно мне надо?


        1. sshikov
          22.07.2019 22:37

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


          1. dim2r
            22.07.2019 23:09
            +2

            можно быть очень умным, но использовать ум не по назначению


            1. sshikov
              23.07.2019 07:20

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


              1. dim2r
                23.07.2019 10:10

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


                1. Nalivai
                  23.07.2019 15:49
                  +4

                  Это вы где в России видели НИИ с умными вещами?


                  1. dim2r
                    23.07.2019 21:54
                    +2

                    Я пару лет практиковался в новосибирском институте ядерной физики. Там есть очень интересные проекты, в том числе и сотрудничество с ЦЕРНом.


                    1. pprometey
                      24.07.2019 07:09

                      Вот только оплата труда там не очень интересная.


                      1. dim2r
                        24.07.2019 11:46

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


                        1. Mirn
                          25.07.2019 04:07

                          т.е. мало заниматься или вообще не заниматься наукой?
                          тогда какой смысл?


        1. qw1
          23.07.2019 17:23

          Меня недавно спросили теорему Чёрча-Росса о ламбда исчислении
          Было бы забавно проверить проверить знания рекрутера в этой теме, например, предложив ему выразить какое-нибудь несложное выражение через стандартные комбинаторы )))


      1. depadep
        23.07.2019 11:48

        Мне приходилось и задачки решать, и даже тесты на IQ проходить после 25 лет работы в IT.
        Ощущение двоякое. С одной стороны чувствую, что решение задачи на скорость мало говорит о том, насколько я программист. Я даже в шахматы блиц не играю, хотя классику могу более-менее пристойно для любителя.
        С другой проблема того, как понять кандидата за час действительно есть. Когда сам собеседую, предпочитаю дать несложную задачу на дизайн/рефакторинг без единственно правильного ответа — для того, чтобы понять как кандидат рассуждает и какие у него стиль кодирования.


        1. dim2r
          24.07.2019 13:45

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


          1. DrunkBear
            24.07.2019 14:49
            +1

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


          1. Tantrido
            24.07.2019 15:16
            +1

            Да, только почему-то на такие конторы попадаешь редко. Один раз просто написал в cover letter опыт 10+ лет в требуемой технологии — взяли сразу без интервью и собеседований — ВООБЩЕ НИЧЕГО!!! Справился, потом были очень довольны моей работой и оставили хорошие рекомендации.


      1. Tantrido
        24.07.2019 14:58
        +1

        В принципе мне подобные практические собеседования нравятся больше, чем те, что были раньше, когда компании нужен не программист решающий задачи, а ходячий справочник по технологии, например .Net. Но если в 16-м на работу взяли сеньором моментально и без проблем после решения тестовой задачи (на решение дали сутки) + резюме, github и LinkedIn, то сейчас даже решение 3-х задач на отлично на codility за 2.5 часа и успешно пройденное затем техническое интервью не гарантировало получение работы — бред.

        Затем в другой очень известной фирме с высокими зп тоже напрягся и решил эти тестовые задания на codility. На решение дали уже меньше — 1.5 часа, что непонятно: спортсменов по программированию или рабов на галеры нанимают: даже тестовые задания нормально не успеваешь составить на проверку и производительность кода. Но потом этот бред продолжился: тестовые задания дали ещё и на последующем техническом интервью, только решить уже нужно было в присутствии интервьюера за 15-20 мин — решил за 21 мин — отказ. Что происходит?!

        Уже нарешался этих задач на codility массу — аллергия на них уже, если б это ещё получение работы гарантировало. Они могут мои предыдущие тесты посмотреть?! ;)


      1. Tantrido
        24.07.2019 15:03

        А вообще тому кто предлагает задачки сеньор или лид разработчикам с 15+ годами — надо просто пойти на хер))) Ибо они не адекватны)))

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


    1. Acuna
      22.07.2019 21:51

      до первого бетонного самолета

      Простите, а можно пояснить для неопытных эту фразу?)


      1. sovetnik
        22.07.2019 21:59

        Не взлетит.


        1. Acuna
          22.07.2019 22:10
          +1

          Оу, ясно, спасибо, а кто в этой ситуации взлететь-то должен, стартап, или человек на должности?


          1. dkasyan
            23.07.2019 13:52

            ПО.


      1. snuk182
        22.07.2019 22:11
        +10

        СЕО моей первой компании рассказывал анекдот, чем отличаются программисты СНГ от программистов повосточней. Действие происходит задолго до моды на аджайл и прочие техники контроля проекта.


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


        • Окей, молодцы. А как он летает?
        • Летает? — спросили разработчики — Этого не было в ТЗ!
        • Блин, чуваки, это САМОЛЕТ. Он должен летать. Перемещаться в воздухе.
        • … многозначительное молчание

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


        • Че это?
        • Понимаете, в чем дело. Мы просмотрели ТЗ и пришли к выводу, что самолет — это не то, что Вам надо. Ну бетон, да, дешево, но вы его потом замучаетесь саппортить, кроме того он не взлетит как надо. А Вам же перемещаться. Вот в пределах проектного времени мы запилили вот это средство передвижения. Удобное, поддерживаемое, надежное, предсказуемое.


        1. Acuna
          22.07.2019 22:27

          О, во, благодарю, то, что я и хотел услышать! :)


        1. Spaceoddity
          23.07.2019 01:16
          +3

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


          1. slonpts
            23.07.2019 01:57
            +1

            Вообще это часть работы Senior Developer — рассказывать заказчику, что он может упускать из виду.

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

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


            1. Spaceoddity
              23.07.2019 02:03
              +2

              Как-то вы странно обязанности распределяете… Как по мне, то этими делами должен заниматься менеджер или продюсер.
              Но даже тут постоянно возникают заковыки — когда ты пытаешься менеджеру объяснить даже не какие-то технические аспекты, а просто логические — условное:
              — так нельзя сделать, потому что если юзер введёт имя длиннее 15 символов, то…
              — так сделайте поле в 25 символов!
              — а если в имени будет 30 символов (Характерный момент — обычно технари при проектировании не сходят на конкретику, а закладывают все возможные варианты. Т.е. оперируют алгеброй, а не арифметикой. Гуманитариям же кажется что достаточно поднять лимит и проблема решена)
              — сделайте поле в тысячу символов!
              — тогда это поле не влезет ни в один интерфейс!


              1. Zoolander
                23.07.2019 07:41

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


                1. snuk182
                  23.07.2019 15:09
                  +2

                  — Когда я копирую в поле логина содержимое третьего тома Войны и Мира, у меня зависает браузер! У вас баг на сайте!


                  1. Zoolander
                    24.07.2019 11:38
                    +1

                    пожалуйста, киньте скриншот с полным содержимым Войны и мира

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

                    PS: отмена!
                    обычный браузер позволяет легко выделять и копировать третий том

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


              1. dimm_ddr
                23.07.2019 16:03

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


            1. RiseOfDeath
              23.07.2019 11:30
              -1

              Вообще это часть работы Senior Developer — рассказывать заказчику, что он может упускать из виду.


              Вообще-то это задача аналитика переводить с клиентского на программистский.


              1. depadep
                23.07.2019 11:56

                Это если есть аналитик


                1. Xandrmoro
                  23.07.2019 12:43

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


                  1. depadep
                    23.07.2019 12:50

                    Верно.Часто это делегируют техлидам или тимлидам (если они программисты). В нашем случае подключают еще и архитекторов.


                  1. VolCh
                    24.07.2019 12:21

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


            1. Wesha
              23.07.2019 17:30

              Вообще это часть работы Senior Developer — рассказывать заказчику, что он может упускать из виду.

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


              1. slonpts
                25.07.2019 03:25

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


                А иногда заказчик сам не понимает, как ему надо. И тогда разумно предложить "сделаем пока так, а если что — переделаем". Как правило, останется как есть — т.е. заказчика все устраивает.


            1. dim2r
              24.07.2019 14:14

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


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


            1. RomanPyr
              26.07.2019 04:20

              Это должен аналитик делать, а не разработчик. Даже старший.


              1. VolCh
                26.07.2019 07:10
                +1

                А вы знакомы с документами типа https://classinform.ru/profstandarty/06.035-razrabotchik-web-i-multimediinykh-prilozhenii.html. Раздел B части трудовые функции


          1. RomanPyr
            26.07.2019 04:19

            Если вы требуете точно ТЗ, то пишите сразу «без багов». Так не бывает? Вот и «точного ТЗ» не бывает.


      1. scruff
        23.07.2019 08:02

        А по-моему это отсыл к недавней катастрофе Б-777. Там вроде выяснили что ПО писалось через одно место индусами за 2$/час.


        1. monah_tuk
          23.07.2019 08:50

          737 MAX? (MAX имеет значение, т.к. 737 сам по себе уже достаточно старый самолётик)


          1. scruff
            23.07.2019 10:45

            1. khabib
              23.07.2019 11:44

              При этом проблем с софтом как раз и не было. Все работало, в соответствии со спецификациями предоставленными, инженерами с зарплатой >200к в год


              1. scruff
                23.07.2019 12:00

                Как раз наоборот — в статье написали что QA делали индусы, нешарящие в авиации.


                1. khabib
                  23.07.2019 12:12

                  Как раз там написано:

                  The coders from HCL were typically designing to specifications set by Boeing.

                  В соответствии со спецификациями, MCAS работал правильно


                  1. scruff
                    23.07.2019 13:17
                    -1

                    Тем не менее «грамотно» оттестированный индусами и «работающий» MSAC привел к трагедии. А если бы большие дяди не экономили бы «на спичках» и заказали QA где-нибудь поближе чем Индия то всё обошлось бы.


                    1. khabib
                      23.07.2019 15:20
                      +3

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

                      Кроме того, презрительный комментарий по поводу 9$ в час — это 90к рублей в месяц. Какие там зарплаты сейчас у Сухого или Яковлева?


                      1. Carburn
                        23.07.2019 15:58
                        -1

                        9$ это цена, которую выставляет компания, а не конечная зарплата разработчика.


                        1. khabib
                          23.07.2019 16:04
                          +3

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


                      1. scruff
                        23.07.2019 19:28

                        Вы внимательно читали мой комментарий? Я индусов винил? Нет. Они возможно сделали всё в рамках своих компетенций и тех «дырявых» спецификаций, что дал заказчик. Плюс еще дело в экономии в ИТ. Там где есть возможность сделать за 9уе вместо 20уе — всегда выберут 9уе (по крайней мере по такой цене продаются индийские гребцы исполнителем, по факту получающие может и меньше 1уе) — даже если на кону жизнь людей. Ведь всегда в случае всего можно спихнуть вину на технарей, не важно кто это будут — индусы, европейцы, китайцы, женщины; большие дяди как были на своих постах — так и остались. Что касаемо Сухого — я не знаю (и не обязан знать) что там у них с QA, но последний пожар на гражданском судне вряд ли заставит адекватного человека подумать, что «новый» Суперджет безопаснее 15-летнего Боинга\Эйрбаса\Эмбраера. Як? Гражданский? Вы серьезно? Кроме Як-40 за последние 10 лет из этого «бренда» я не видел ничего, да и то на задворках аэродрома с демонтированными движками.


                        1. khabib
                          23.07.2019 20:51

                          Вы внимательно читали мой комментарий? Я индусов винил?

                          Определенно, да. Иначе я не знаю, как можно было прочитать этот комментарий:

                          Там вроде выяснили что ПО писалось через одно место индусами за 2$/час.


                          В итоге мы выяснили, что проблема не 9$ баксах в час, не в индусах и не в софте


                          1. scruff
                            24.07.2019 06:19

                            Тогда в чем проблема по вашему? Продолжайте мысль…


                            1. pprometey
                              24.07.2019 07:10

                              Рыба как обычно гниет с головы.


                            1. khabib
                              24.07.2019 09:40
                              +1

                              А это как разз не так и сложно:
                              — Топ менеджеры, которые доят бренд 737го слишком долго
                              — Маркетологи, которые продали MAX как «тот же NG, только новый и экономичный». Переход с NG на MAX это 1 день наземного тренинга.
                              — КБ и главный конструктор, который допустил что в самолете есть система без дублирования
                              — Авиаконтролирующие органы (как в Штатах так и международные), которые сертифицировали этот самолет
                              — Авиакомпании, которые заставляют пилотов летать только на автоматике, с минимум практики управления руками. (Сгоревший суперджет, это как раз туда же)
                              — Пилоты, которые молча хавают и соглашаются с этой политикой.

                              Но сми форсят факт «это просто индусы наговнокодили»


                        1. Kodiak
                          24.07.2019 02:55
                          +1

                          >… но последний пожар на гражданском судне вряд ли заставит адекватного человека подумать, что «новый» Суперджет безопаснее 15-летнего Боинга\Эйрбаса\Эмбраера.

                          Ну вотт новый Суперджет поимел проблемы при посадке с превышением посадочной массы после удара молнии — ~половина выжила.
                          «Штатная» работа одной систем Боинга — выживших немае.
                          Странная нонче адекватность у людей.


                          1. Wesha
                            24.07.2019 03:30

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


                            1. Kodiak
                              24.07.2019 04:24

                              Ну, тут пишут про перегрузки именно для посадки с превышением, а РТЭ мне, в отличие от РЛЭ (в котором отдельным пунктом посадка с превышением посадочной массы тоже есть), что-то нагуглить сходу не получилось.
                              Так что косяки пилотов косяками, но и помимо этого ИМХО были объективные факторы.


                      1. vladkorotnev
                        24.07.2019 03:43

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


            1. monah_tuk
              23.07.2019 12:58

              Моя поправка была относительно модели самолёта, у вас — 777 указан.


      1. deemytch
        23.07.2019 14:06
        -2

        Поищите историю с Боингом, это недавнее. Они наняли индусов для своего ПО с ожидаемым анекдотическим результатом.


        1. wataru
          23.07.2019 15:21
          +1

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


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


    1. Igor_O
      23.07.2019 06:18
      +1

      Странно, что вас в принципе позвали на собеседование. В нескольких компаниях до сих пор висят открытые вакансии по моему профилю, на которые я многократно отправлял резюме. Даже ни одного просмотра резюме. Прошло пять лет уже. Вакансии — до сих пор открыты!
      Почему? А госконтракты. По некоторым из них у исполнителя должно быть X специалистов по специальности Y. «Смотрите! У нас тут открыта вакансия по специальности Y и уже есть 100500 откликов на эту вакансию, мы уже завтра наймем человека!»


      1. snuk182
        23.07.2019 12:02

        Широко известная в узких кругах зарубежная финансовая контора. Там точно не госзаказ.


    1. CrushBy
      23.07.2019 07:32

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


      1. Lezenford
        23.07.2019 09:58
        +1

        Вам это не напоминает грустную тенденцию в школьном образовании последних этак лет 15? Если что, я про ЕГЭ и ГИА, которые точно так же натаскивают на решение задач (тестов), а не на реальные знания)


        1. Evgenym
          23.07.2019 10:18

          Реальность диктует такие требования, поэтому людям приходится под них подстраиваться, чтобы выжить достичь успеха в социуме. Мотивация проста: не сдашь ЕГЭ -> не поступишь -> не получишь диплом -> не устроишься на нормальную работу. Когда я заканчивал школу, цепочка была такая.


          1. CrushBy
            23.07.2019 10:22

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


            1. Xander_Vi
              23.07.2019 11:06

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


              1. Nalivai
                23.07.2019 15:54
                +2

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


            1. VlK
              23.07.2019 13:30

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


              1. CrushBy
                23.07.2019 14:15

                Да, так и есть. Без KPI тоже могут быть проблемы. Нужен какой-то баланс.


              1. Gar02
                23.07.2019 15:11
                +5

                Чтобы проверять адекватность работников с помощью KPI, эти KPI сами должны быть адекватными.
                Вот был я в Тунисе. У чистильщика пляжа есть KPI: чистота пляжа. Этот чёрт чистит пляж на тракторе, а потом скидывает весь мусор в море. Зато KPI выполнен: пляж с утра идеально вычесан от мусора. Правда, море превратилось в дерьморе.
                Русские туристы пару раз чуть не побили его, но что ему делать? «Умный» манагер не предусмотрел вывоз мусора. Куда его девать, если за его наличие на берегу тракториста штрафуют?
                А вот найти адекватных составителей KPI — нереально. Эти люди должны знать всё об оцениваемом участке работ, а сегодня начальнички «не любят погружаться». Знакомая фразочка? То-то!


                1. RedTalon
                  23.07.2019 21:08

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


                  1. Gar02
                    24.07.2019 08:36

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


                  1. vvbob
                    24.07.2019 09:05

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


                    1. pprometey
                      24.07.2019 10:20

                      Вот есть хорошая статья на Хабре по этому поводу (не в смысле челленджа, а в смысле объективной оценки работы разработчика)
                      Оцениваем разработчика на основе объективных данных


                      1. vvbob
                        26.07.2019 09:29

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


                        1. pprometey
                          26.07.2019 10:49

                          Короче первый принцип agile рулит — люди и их взаимодействия важнее процессов


              1. VolCh
                24.07.2019 12:22

                Перевести их на то, что лет 30 назад в Союзе называли "хозрасчёт".


        1. altai2013
          23.07.2019 13:39

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


          1. Lezenford
            23.07.2019 13:47
            +4

            Сразу чувствуется, что вы закончили школу не меньше чем лет 13-15 назад и у вас еще нет детей старшего школьного возраста.
            На самом деле сейчас выпускные классы сводятся именно к натаскиванию на решение определенного шаблона проверки знаний. Зачастую вам не пытаются составить всю структуру знаний, а дают именно подход для корректной сдачи экзамена. При этом в реальности человек может вообще не понимать, как эти знания применять. Точно как в примере с собеседованием — проходить умеют, а работать — нет.
            ЗЫ это субъективный опыт, основанный на собственно сдаче (больше 10 лет назад) и на том, как учатся на текущий момент младшие братья\сестры жены, аккурат возраста сдачи ЕГЭ и ГИА…


            1. dimm_ddr
              23.07.2019 16:06

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


            1. rkuvaldin
              23.07.2019 19:09
              +1

              А вы попробуйте сходить и сдать ЕГЭ. Чисто для себя, чтобы убедиться, что получить там сотню — плёвое дело
              Его ведь может сдать любой человек :-)


              1. Lezenford
                24.07.2019 09:28
                +1

                Уверены что комментарий ко мне? Я то его уже сдавал и знаю, как к нему готовятся и что там спрашивают. Человек с улицы на 100 баллов ЕГЭ не сдаст) даже если у него за спиной красный диплом и отличные знания) У меня много примеров перед глазами было, кто готовился\учился в спец школах для одаренных и прочее, кто в итоге сдавал хуже тех, кто просто зубрили 2 года подряд и монотонно решали тесты)


                1. Ametrin
                  24.07.2019 11:04

                  За 10 лет форма заданий в ЕГЭ поменялась) да даже в те времена зубрежом можно было обеспечить себе не более 50-60 баллов


                  1. Lezenford
                    24.07.2019 11:06

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


                    1. Ametrin
                      24.07.2019 11:21

                      Эм, с чего Вы взяли, что у меня 100 баллов?) Как и у многих, у меня баллы посрезались на незазубриваемых задачах в основном (последние задачи С части, и сочинение по русскому подвалил).

                      За все предметы не скажу, но, объективно, ЕГЭ по информатике усложнился за 10 лет.

                      А еще я тоже сдавал ЕГЭ 10 лет назад)


                      1. Lezenford
                        24.07.2019 11:31

                        Тогда вынужден признать, что фразу
                        >А вы попробуйте сходить и сдать ЕГЭ. Чисто для себя, чтобы убедиться, что получить там сотню — плёвое дело
                        Его ведь может сдать любой человек :-)

                        Я до конца не понимаю) И это либо сарказм либо это сильно выше моего понимания)


                        1. Ametrin
                          24.07.2019 11:35

                          я воспринял ее как сарказм..)


        1. siziyman
          23.07.2019 13:44
          +1

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


          1. Lezenford
            23.07.2019 13:48
            +1

            а я не говорю, что СИСТЕМА плохая. я говорю о том, что в реальности показатели подгоняются под эту систему проверки, а не на что то практически правильное.
            Т.е. это косяк реализации, а не косяк самой абстрактной модели и ее целей\задач


          1. Matisumi
            23.07.2019 15:18
            +1

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


            1. siziyman
              23.07.2019 15:50
              +1

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


              1. Ctacfs
                23.07.2019 17:53

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

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


                1. siziyman
                  23.07.2019 21:25

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

                  Государственный вуз, работающий на мои (и, вероятно, ваши — вы же тоже в/из России, как я понимаю) налоги не имеет никакого права набирать «кого понравится», должны быть объективные критерии.


                  1. VolCh
                    24.07.2019 12:29

                    Объективные критерии: результаты вступительных экзаменов. Пускай в той же форме, что ЕГЭ, но вот содержание каждый вуз точно должен иметь право выбирать сам.


                    1. dimm_ddr
                      24.07.2019 12:40

                      Если содержание может быть любым, а не из заранее определенного списка, общего для всей страны, то мы вернемся к платным группам подготовки от института и фактическому ограничению в 1-2 возможных нормальных ВУЗа на выпускника. Потому что подготовится к большему количеству разных экзаменов (а они будут разными — нужно же стимулировать платить за подготовку) у абсолютного большинства выпускников не получится. То есть ровно та ситуация которая была до ЕГЭ. И это именно те причины по которым ЕГЭ вообще был создан — коррупционность зашкаливала просто. И я даже не говорю про взятки (которых тоже стало меньше с вводом ЕГЭ), речь о том что это достигалось совершенно легальными методами — специально подготовленными ВУЗом задачками которые практически нереально решить не узнав способ решения на платных курсах.
                      Ваш вариант работает только в случае если приемом занимаются кристально чистые люди на всех уровнях.


                    1. siziyman
                      24.07.2019 14:10

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

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


              1. Matisumi
                23.07.2019 18:14

                Абы какие выпускные в школе
                Действительно, очень прозрачно и полезно.


                Можете обосновать необходимость выпускных экзаменов в школе?


                1. siziyman
                  24.07.2019 18:36

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


          1. Ctacfs
            23.07.2019 17:27

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


          1. VolCh
            24.07.2019 12:27

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


            1. siziyman
              24.07.2019 14:02
              +1

              Знания студентов должны быть единственным критерием приёма в вузы, помимо eligibility (вы закончили 11 классов школы, вы имеете право претендовать на бюджетное обучение, если мы говорим о бюджете, и т.д.). Соответственно покуда ЕГЭ — лучшая из существующих в России систем объективной и комплексной оценки знаний студентов, результаты ЕГЭ — лучший критерий для приёма в вузы, да, именно так.


              1. VolCh
                24.07.2019 18:06
                -1

                Это по вашему мнению это лучшая система оценки знаний.


        1. Nalivai
          23.07.2019 15:56

          Да ладно, я учился до ЕГЭ, и абсолютно та же ситуация была, разве что натаскивали не на ЕГЭ а на контрольные.


          1. rkuvaldin
            23.07.2019 19:12
            +1

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


  1. habradante
    22.07.2019 16:36

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


    1. masterspline
      22.07.2019 19:21
      +6

      > задача «отсеивать неподходящих кандидатов» неверно решается

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

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

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


  1. cross_join
    22.07.2019 16:40

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


    1. time2rfc
      22.07.2019 17:14

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


      1. cross_join
        22.07.2019 17:50

        О, это длинная история, я к ней подступался в «Дефрагментации мозга», но уже 6 лет прошло.
        С российской спецификой консалтинга знаком поверхностно, однако автор текста тоже не в РФ работает.
        Если коротко, то консалтинговая фирма сосредотачивается на технической и/или функциональной компетенции сотрудников, продавая их клиентам на проекты по дневной ставке на несколько месяцев. Миссии экспертизы/аудита более короткие, от нескольких дней до недель. Клиент доверяет фирме, поэтому на короткие миссии вообще никаких собеседований не происходит, на длинные — одно-два, обычно совмещенные. Зарплаты немного выше, чем на постоянных позициях, но не в разы, конечно. Неудобство разве что в сильной динамике среды. Тем, кто привык годами «пилить» одно и то же с теми же и на том же будет трудно.


        1. Dolios
          22.07.2019 19:57
          +12

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


          1. cross_join
            22.07.2019 22:20

            Как я уже сказал, с российской спецификой знаком мало, в основном сталкивался с отсутствием культуры работы с консультантами, когда месяцами ищется свободный специалист на рынке. Исключение — внедрение ERP, там это хорошо работает с 1990-х.
            Консалтинговая фирма по определению небольшая. Когда она растет, то либо начинает брать заказы, проекты себе, либо превращается в «галеру» (бодишоп в США, продавцы мяса во Франции) и перестает быть консалтинговой — в крупной фирме нельзя удержать экспертов, большая текучка, уровень компетентности быстро падает.


            1. foal
              23.07.2019 00:22
              -1

              Хм… PwC (pricewaterhousecoopers) это небольшая? А Java програмисты там работают, в основном, как консультанты — на краткросрочных проектах.


              1. cross_join
                23.07.2019 10:59

                PwC — хороший, но единичный пример (и специализируются они совсем не на Яве и ИТ). Несмотря на размер они прилагают массу усилий для поддержания уровня компетентности «выше среднего по больнице». Начиная с пяти собеседований для отсева кандидатов.
                В крупной фирме это дорого и хлопотно, поэтому их единицы, тогда как типовая консалтинговая фирма оптимального размера — 50-150 человек.
                P.S. Минусовал не я, не люблю это дело. Только «лайки», LinkedIn рулит :)


                1. time2rfc
                  23.07.2019 11:32

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


                  1. cross_join
                    23.07.2019 11:53

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


                    1. time2rfc
                      23.07.2019 15:42

                      Спасибо! Звучит очень интересно, пойду гуглить где такие специалисты нужны.


                      1. cross_join
                        23.07.2019 15:59

                        Видимо для РФ типовой консультант это внедренец ERP (SAP, Dynamics, 1С...), специалисты Microsoft (MSPD...), Oracle, программисты с финансовым бэкграундом (банки).
                        Успехов вам!


                      1. DrunkBear
                        23.07.2019 16:06

                        Дополнительно вам пригодится знание предметной области, разговорный английский и понимание индусского разговорного английского.
                        Ну и широкий кругозор — часто после внедрения системы Х будут спрашивать, что лучше внедрять и интегрировать к ней, продукт Y,Z или что-то ещё и если вы знаете о них, а лучше — и о подводных камнях этих систем, ваш контракт продлевают и расширяют.


            1. dimm_ddr
              23.07.2019 16:10
              +1

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


              1. vladkorotnev
                24.07.2019 03:51

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


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


      1. vershinin
        22.07.2019 20:14
        +1

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


        1. cross_join
          22.07.2019 22:15
          +2

          Когда «ты сам делаешь себе фирму» это называется фриланс или ЧП. При этом можно быть консультантом, а можно и не быть.


          1. vershinin
            23.07.2019 12:14

            Да, так лучше. Однако, консультанты обычно фрилансерят, а не гребут на галерах.


      1. morozko
        23.07.2019 14:47

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


    1. AWSVladimir
      23.07.2019 23:22

      Альтернатива задачкам — работа в консалтинге

      Для меня альтернатива задачкам сделать рабочий, оплачиваемый мини-проект перед устройством на работу. За это время познакомишься с командой, постановкой задачи, внедрением и другими важными подводными камнями и тараканами.
      Там где спрашивают про задачи не работал, не сложилось, но 2 компании где делал тестовые проекты, перед устройством, самые классные (тфу-тфу-тфу).
      Это была лично моя инициатива проверить компанию и что бы компания проверила меня.
      Я уже описывал свои критерии выбора работодателя, повторятся не буду, может кому будет интересно habr.com/ru/post/423953/#comment_19142917"


  1. irsick
    22.07.2019 16:42
    -4

    Бедняга, это он ещё тилидом не был. На следующих этапах собеседования превратятся в допрос с пристрастием в стиле «а кто ты такой, пришёл тут с улицы руководить МНОЙ?».

    Автор находится на самом начале пути, в стадии отрицания. Очевидно, что его 5-летний опыт не релевантен рынку, т.к.:

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

    б) 5 лет без собеседований. Крышки люков и автобусы теннисных мячиков постепенно уходят в прошлое, большое О и красно-черные деревья остаются, набирает популярность код в прямом эфире, тестовые задания больше походят на реальные проблемы.

    в) Зона комфорта, высокомерие и тонкокожесть. Автор очень болезненно переживает стадию «окунания в г*но» на собеседованиях, возможно заболел по этой же причине. Лечится работой над собой и своими навыками: codewars.com, фильмами про Рокки, Karate Kid и тд.

    г) Senior в одной компании != senior в другой. На новой работе выслуга лет и опыт работы с конкретными людьми над определенным продуктом могут обесцениться практически полностью. Остаются только эмпирический опыт и computer science.


    1. ukt
      22.07.2019 19:31
      +1

      a) — не совсем понятно
      б) устраивался в одну международную контору, они меня своими задачками три часа мучили, меня это откровенно на втором часу подзнадоело, и спрашивали всякую ересь, вот никак не связанную с реальными задачами. Другая контора, тоже межграничная, спрашивала, а вы знаете map'у, я откровенно отвечаю поясните, что вы имеете в виду (хэшмам, тримап, редусемап, или объект из js фреймворка, отвественного за отображение граф данных), вместо пояснения галочка в опроснике… Ну и на кой писать реализацию какой то мапы, изобретая велосипед? Каждый день их писать что ли?)
      в) окунание в гогно — это эдакий способ сбить цену работнику, так себе, если с ходу, незнакомого человека макают в гогно — лесом товарищей.
      г) сеньор это таки не совсем про опыт, хотя он тоже важен, он скорее про способ мышления.


      1. irsick
        22.07.2019 21:53

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

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

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

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

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

        г) Я использовал в контексте должности. Senior в ООО «Рога и копыта» != Senior в Google.

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


        1. sshikov
          22.07.2019 22:40

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

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


          1. irsick
            23.07.2019 00:14

            Мне тоже приходилось паять и программировать SoC, (де)нормализовывать базы и рисовать дизайн — все это в разных проектах одного и того же стартапа. А потом 4 года воевать в суровом энтерпрайзе с legacy на Mootools в 1M LOC.

            По моему личному, субъективному, не претендующему ни на что 14-летнему опыту — интересные и актуальные решения на продакшене в энтерпрайзе встречались в 10% случаев.


            1. sshikov
              23.07.2019 07:35

              Если что, я отвечал вот на эту фразу:
              > (в компаниях редко бывают разнообразные проекты, если только это не consulting)

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


              1. VolCh
                23.07.2019 10:41

                Да даже в рамках довольно небольших и даже не ИТ компаний часто бывает куча разнообразных проектах на разных стэках (ну или выбираешь стэк сам). Как минимум внутренние системы и внешние публичные "витрины"


  1. JustDont
    22.07.2019 16:55

    Готовьтесь к решению тестовых задачек, пока время не поджимает.

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

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


    1. dss_kalika
      22.07.2019 17:00
      +1

      Когда ты чего то стоишь — покупатель найдётся.
      Когда не очень — … тогда придётся учиться проходить собеседования.


      1. JustDont
        22.07.2019 17:03

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


        1. dss_kalika
          22.07.2019 17:10

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

          Так что — первых разбирают достаточно бодренько (по крайней мере, больше 3-4 собеседований они редко проходят, что бы не получить оффер), а последние — учатся проходить собеседования.


          1. dvenum
            23.07.2019 07:04

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


        1. glestwid
          23.07.2019 13:02

          Расскажите это тем, кто например устраиваетсясейчас в KPMG во Франкфурте, где хрюша проводит каждый день по 5 собеседований и где на вакансию претендует порядка 20 человек, причем с хорошим английским и ненулевым немецким.


          1. Kanut
            23.07.2019 14:06

            Вы мне сейчас действительно хотите рассказать что в Германии стоит очередь в 20 человек на какое-то айтишное рабочее место, да ещё и в контору типа KPMG, где не особо новых технологий не используют, ни условия труда идеальными назвать нельзя, ни звёздочки на кунуну особого впечатления не производят? :)

            Лично у меня опыт просто противоположный. Да просто сделайте профиль среднего сениора на степстоне или монстере и посмотрите сколько предложений вам придёт в течении первого дня :)


            1. glestwid
              24.07.2019 10:15

              Вы мне сейчас действительно хотите рассказать что в Германии стоит очередь в 20 человек на какое-то айтишное рабочее место, да ещё и в контору типа KPMG, где не особо новых технологий не используют, ни условия труда идеальными назвать нельзя, ни звёздочки на кунуну особого впечатления не производят? :)


              Именно так. Потому как это мой свежий личный опыт с небольшим инсайдом + опыт коллеги, подававшегося туда же месяц назад. Просто они могут себе позволить хантить со всего ЕС + привет Brexit, подкинувший до фига народа из Англии на рынок во Франкфурте. По слухам, в Commerzbank ровно такая же картина — конвеер на сотни кандидатов.


              1. Kanut
                24.07.2019 11:49

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


                1. Druu
                  24.07.2019 15:03

                  Но в очередь в 20 человек на место я всё равно не верю.

                  Если под "очередью из 20 человек" понимать каких-то 20 человек, а не тех, что нормально подходят — то вполне реально, может и все 100 быть.


              1. Fedorkov
                24.07.2019 13:39

                привет Brexit, подкинувший до фига народа из Англии на рынок во Франкфурте.
                А как именно брексит привёл к этому?


        1. dimm_ddr
          23.07.2019 16:12

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


      1. Acuna
        22.07.2019 22:04
        +1

        Увы, но не все так просто. Сверхпрофессионалы даже чаще не могут найти работу чем студенты: большинство компаний понимают что могут не потянуть таких специалистов, либо считают что ему у них будет со временем тесно, ибо они не смогут ему гарантировать расширение круга интересных задач, а так же плюшек для удержания, ибо он больно крут для такого места, но понятно что свою крутизну при этом скрывать не выход, ибо лгать в резюме нехорошо, особенно когда вскроется, что ты работал в условном Яндексе. Зарплатные ожидания понижать тоже не выход, мой знакомый рекрутер рассказывал, что нередки случаи когда на собеседования являются рок-звезды на зарплату 30 тысяч, таких обычно они отсеивают, потому-что непонятны мотивы почему человек в возрасте со знаниями на 300 000 идет на 30 000, ибо это явно не тот предел для такого специалиста.


        1. JustDont
          23.07.2019 08:45
          +2

          таких обычно они отсеивают, потому-что непонятны мотивы почему человек в возрасте со знаниями на 300 000 идет на 30 000, ибо это явно не тот предел для такого специалиста.

          А открыть рот и словами спросить человека, почему он так делает — не? Слишком сложно?


          1. Mirn
            23.07.2019 09:22

            причин такого много:
            1. на куда джуна проще пройти если до этого программированием почти не занимался, например раз в неделю (электронщик или админ) или
            2. или есть желание просто попробовать новую отрасль без заморочек со всеми этими свистоплясками с 5-10 собесами и цирком у доски. или просто хочешь обучиться чему то нахаляву да ещё на кофе заработать (почему бы и нет?).
            3. есть очень хорошие компании которые совершенно не умеют искать и собеседовать людей и поэтому проще уйти на минимальную должность (умолчав что ты спец в искомой ими области с 20летним стажем) и быстро получить повышение, тем-более если финансовый жирок позволяет.
            4. Я знаю одного человека который тусил по компаниям которые пользовались трудом неопытных студентов с ставкой в 20-30тр и в свой стартап набрал оттуда сливки — команду крепких разрабов которые остальных тащили и задалбывались, в итоге стартап выстрелил в тех плане.


            1. JustDont
              23.07.2019 09:27

              Да я знаю, что причин много. Мне непонятен вывод «таких обычно отсеивают, потому что нам непонятно, как вообще так». Непонятно? Так спросите.


              1. VolCh
                23.07.2019 10:43

                Далеко не факт, что скажут правду.


                1. JustDont
                  23.07.2019 10:56

                  Далеко не факт, что скажут неправду.


              1. A114n
                23.07.2019 13:00

                Нестандартное — не нужно. Это основополагающий принцип любого бизнес-конвеера.


    1. Dolios
      22.07.2019 19:59
      +3

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


      1. sshikov
        22.07.2019 20:02
        +8

        А если не хотим?


        1. Nalivai
          23.07.2019 16:06

          Все равно придется


        1. nlog
          23.07.2019 20:08
          +1

          Но виллу в Испании хотим, так что придётся в гугл :)


          1. sshikov
            23.07.2019 20:48

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

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

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


          1. Mirn
            24.07.2019 03:42

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


      1. JustDont
        22.07.2019 20:58

        Если вы сами куда-то хотите — то разумеется, пляшите так, как потребуют в том самом месте (если вам после этих плясок туда не расхочется, разумеется).

        А если нет?


        1. sshikov
          22.07.2019 21:57
          +2

          Так самое смешное в том, что при этом со стороны нанимателя это почему-то выглядит одновременно как:
          >Теперь с почти неограниченным пулом претендентов они могут себе это позволить.
          и
          >Потребность в программистах велика как никогда и тем более в Senior Developer'ах.

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

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

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


          1. Nalivai
            23.07.2019 16:08

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


            1. sshikov
              23.07.2019 19:41

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

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


            1. sshikov
              23.07.2019 19:41

              del


      1. blind_oracle
        23.07.2019 03:00
        -1

        Гугл звонит и пишет раз-два в год.

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

        Говорят — придется. До свидания.


        1. 0xd34df00d
          23.07.2019 03:07
          +2

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


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


          1. vladkorotnev
            23.07.2019 03:49

            А что именно за политика?


            1. 0xd34df00d
              23.07.2019 03:57
              +1

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


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


              Днём пишете опердни на Java, а хотите в свободное время писать статьи по теории типов? Согласуйте, это слишком близкие области.


              В свободное время помогаете людям на SO? В примерах кода, которые вы там пишете в ответах, ставьте копирайт гугла.


              1. vladkorotnev
                23.07.2019 04:31
                +1

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


                1. 0xd34df00d
                  23.07.2019 04:48
                  +1

                  Ну, кстати, зависит.


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


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


                  1. vladkorotnev
                    23.07.2019 07:00

                    У нас в японской компании де-юре самопрокачка запрещена в силу белого списка софта и отгороженного политиками интернета.
                    Де-факто наш офис какой-то "удалённый" и поэтому имеет обычный неограниченный интернет, поэтому SSH с иксами домой в РФ и оттуда можно делать что хочешь.
                    Отстрелялись с релизом, клиенты ещё не пришли в себя от празднования, делать нефиг всё равно, так можно Rust покурить :-)


                    1. blind_oracle
                      23.07.2019 09:45

                      Дурь какая. Закрывать разработчикам доступ везде? А зачем вы там работаете?


                      1. vladkorotnev
                        23.07.2019 09:52

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


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


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


                        В локалке нашелся установочник макоси, засунул в виртуалбокс и вспоминал былое в икскоде.
                        А код в обход всех их изощрений прекрасно дёргался на гитхаб протоколом Git-over-GoogleMaps :-)


                        Впрочем, у них изощрения как раз были оправданными, ибо там серьёзные данные на машины, которые конкурентам были бы мягко говоря интересны. Что не отменяет того, что отношение удручает — ты NDA подпиши, но зондов мы тебе всё равно напихаем.


                        1. Fedorkov
                          23.07.2019 11:36

                          А код в обход всех их изощрений прекрасно дёргался на гитхаб протоколом Git-over-GoogleMaps
                          Вы имеете в виду Git over Google Translate?


                          1. vladkorotnev
                            24.07.2019 04:03
                            +1

                            Нет, именно мапсы.


                            Краткий гайд по выживанию в анально отгороженной среде

                            Тянем репу зипом с гитхаба (ибо git не алё). Распаковываем, создаём внутри репозиторий гита. Уходим на бранч develop.
                            Работаем с кодом. Делаем коммиты как обычно.
                            В конце рабочего дня делаем (Cygwin)


                            git format-patch master --stdout | gzip --best | base64 > /dev/clipboard

                            Опционально можно добавить шифрование.


                            Идём в гугловский My Maps, ставим пин на любимую кафешку, в описание делаем Ctl-V, чуть-чуть ждём и сохраняем.


                            Придя в безопасное окружение открываем мапсы, копируем то, что насохраняли и делаем (Cygwin)


                            cat /dev/clipboard | gunzip - | base64 --decode | git apply

                            Вуаля, коммиты из закрытой среды перетекли в открытую. Пушимся, на следующий день повторяем. Если из дома не работать, а только пушиться, можно зип не тянуть каждый раз (в моём случае было актуально для репы под 300 метров).


                            Можно было, конечно, всё заскриптовать, но больно сложно для пары раз.


                            В теории так выносятся любые файлы, как показала практика, емнип до 25 мегабайт (до закодирования) влезало в один пин спокойно, лишь бы браузер не грохнулся.
                            Заносить было проще, на крайняк приклеиванием хедера и куска от PDF к зашифрованному tgz с последующей выкачкой.
                            Что как бы намекает на всю эту "безопасность" без эиргапа...


                1. vvbob
                  23.07.2019 08:57

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


                  1. VolCh
                    23.07.2019 10:45

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


                    1. vladkorotnev
                      23.07.2019 11:35

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


                  1. Endeavour
                    23.07.2019 14:40

                    На обеде вполне нормально поиграть 3-4 партии.


                  1. Nalivai
                    23.07.2019 16:16

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


                    1. vladkorotnev
                      24.07.2019 04:05

                      Опять же, это если отталкиваться от условия, что надо работать 8 часов, а не по мере решения проблемы/задачи :-)


                  1. RedTalon
                    24.07.2019 08:43

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


                    1. vvbob
                      24.07.2019 09:09

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


                  1. dominigato
                    24.07.2019 13:10

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


          1. blind_oracle
            23.07.2019 09:45
            +2

            Ну, кому что нравится.

            Если меня припечет работать именно в Гугле (или прочих буквах FANG) — пойду, конечно, обратно вспоминать все эти сортировки и прочее, которые мне пока в реальной работе пригодились примерно ноль раз. Поэтому я считаю что это бесполезное занятие на собеседованиях, в отличии от того же Distributed Systems Design который у них есть на SRE.

            Но хрен с деревьями этими, у них же по личным занятиям в свободное время политика драконовская.
            В Европе, вроде, такое невозможно. Представляю себе что тут начнется если работодатель начнет мне указывать чем в свободное время заниматься… дикость. Минус 1 балл к переезду в US :)


            1. 0xd34df00d
              23.07.2019 15:06

              Если меня припечет работать именно в Гугле (или прочих буквах FANG) — пойду, конечно, обратно вспоминать все эти сортировки и прочее, которые мне пока в реальной работе пригодились примерно ноль раз.

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


              В Европе, вроде, такое невозможно. Представляю себе что тут начнется если работодатель начнет мне указывать чем в свободное время заниматься… дикость. Минус 1 балл к переезду в US :)

              Ну, это вопрос выбора и конкретного контракта. Моему текущему работодателю плевать вот, например. А куче других людей плевать на все эти внеклассные активности, судя по тому, как они хотят в Гугл. Хорошо, когда есть выбор!


        1. wataru
          23.07.2019 12:07

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


      1. kashtan404
        23.07.2019 11:12

        Не все так плохо. Могу сказать со стороны их поиска на позиции SRE. В Амазоне да, привет hackerrank. В Гугле, техническое интервью представляет из себя общение с сеньором/лидом на технические вопросы и последующее решение задачки, но онлайн и без привязки к синтаксису (хоть псевдокодом), лишь бы логика была верная. Конечно, вы скажете что, «да один фиг олимпиадные задачки решать», но по-моему мнению, это намного проще, когда есть живой диалог. Как минимум видно, что потенциальному нанимателю не все равно.


        1. blind_oracle
          23.07.2019 12:34

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


          1. kashtan404
            23.07.2019 14:52

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


            1. blind_oracle
              23.07.2019 15:35

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

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


    1. grinCo
      23.07.2019 04:18

      В СНГ все легко и просто с работой. В бей эрия решения задачек не хватит для сеньера.


  1. vav180480_2
    22.07.2019 16:56

    Меня однажды мой бывший руководитель (с которым я проработал несколько лет) лично рекомендовал в ЕПАМ (он там уже лет 5 работал), сказал собеседование плевое, можешь не готовиться. Я после работы прибежал на собеседование, красный, запыхавшийся (была весна, утром холодрыга, я был в теплой одежде, а днем уже жара — я вспотел пока бежал). Меня очень хотели завалить и таки завалили, я нервничал еще (первый собес за 10 лет). В итоге собеседование прошел другой мой коллега, лет на 10 младше, с гораздо меньшим опытом, но он готовился:) Мой бывший руководитель был удивлен не меньше меня, а еще сказал что я на интервьюирующих произвел впечатление больного человека (красный, потный и все такое:)) и я там вообще в черном списке теперь. Во как бывает. Хотя мобыть и к лучшему:)


    1. vvbob
      22.07.2019 22:10
      +1

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


      1. arheops
        23.07.2019 02:04
        +2

        Может это был тест на то, спросите ли вы «зачем» или нет


        1. vvbob
          23.07.2019 09:02

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


          1. Mirn
            23.07.2019 09:12

            эхх еслиб они ещё эти уроки делали и статьи читали, как то на вакансию разраба электроники автооборудовния, на полном серъёзе, попросили заполнить анкету, в которой часть вопросов была связана с гос тайной а часть что то там про звания и устав. Погуглив понял что это взято из военного опросника в случае если человек с секретностью хочет забугор и это не первая а N ая анкета в случае… итд


            1. vvbob
              23.07.2019 09:42

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


    1. VolodjaT
      23.07.2019 00:03

      А в черный список за что?


      1. Mirn
        23.07.2019 03:42
        +1

        Да чёрные списки скорее всего существуют, например, украинский чёрный список на весь инет прославился. Ну а я умудрился попасть в чёрный список Яндекса, и сразу рекрутеров со всех галер типа датаарта и епама как рукой сняло, они после этого даже прервали диалог который вёлся. А попал забавно — им нужно было сделать ускорение нейронок на FPGA причём скорее аппаратную часть, забраковали меня после теста на веб программирование с формулировкой «не ИТшник а мошенник какой то, в чёрный список тебя!» после того как я честно признался что на JS дерево не могу развернуть и не знаю что за грязные хаки мне на задание выдали (а там судя по исходникам просили объяснить смысла такого трешака за который в нормальных фирмах сразу увольняют, я потом на разных сайтах просил растолковать их «примеры» извиняюсь за ругательство — все плювались от быдлокода).
        А раз чёрные списки скорее всего существуют, то проблема в статье ещё сильнее усугубляется: Даже если предположить что только часть компаний их придерживается, то при невезении всего с одной все остальные лишаются специалиста. И наверное поделом им.


        1. vvbob
          23.07.2019 09:07

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


          1. blind_oracle
            23.07.2019 09:53

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

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


            1. coolkimchi
              23.07.2019 12:29

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

              a = 1
              b = a
              a == b vs a is b

              Я ответил, что в данном примере разницы нет и оба True и даже попытался объяснить ему почему Python не C/C++. В итоге интервьюер надменно «очень удивлюсь если это действительно так». Через HR я попросил передать ему книжку Python для чайников и больше не писать мне.


              1. Debug_all
                23.07.2019 15:48

                a = 1
                b = a
                a == b vs a is b

                Я ответил, что в данном примере разницы нет и оба True и даже попытался объяснить ему почему Python не C/C++.
                Не могли бы раскрыть свою мысль и направить в документацию в правильном направлении?

                На мой, не специализирующийся на Python, взгляд, вопрос имеет под собой почву:
                a == b # сравнение по значению
                a is b # сравнение по object id, на который ссылаются переменные
                И в случае с мутабельными объектами разница может быть:
                a = [1, 2, 3]
                b = a # произойдет присвоение по ссылке
                с = a.copy() # произойдет присвоение по значению
                d = a[:] # произойдет присвоение по значению
                
                # Значения всех трех переменных равны:
                a == b # True
                a == c # True
                a == d # True
                # Но переменные a и b ссылаются на один и тот же объект списка:
                b is a # True
                # А переменные c и d ссылаются на отдельные объекты:
                c is a # False
                d is a # False
                
                # Модифицируем данные:
                a.append(4)
                b.append(5)
                c.append(6)
                d.append(7)
                # И получим:
                a == b # True
                a == c # False
                a == d # False
                b is a # True
                c is a # False
                d is a # False
                
                # Через переменные a и b был поочередно модифицирован один и тот же объект.
                # Значения этих переменных по-прежнему равны:
                a # [1, 2, 3, 4, 5]
                b # [1, 2, 3, 4, 5]
                # А для переменных c и d - нет:
                c # [1, 2, 3, 6]
                d # [1, 2, 3, 7]


                1. coolkimchi
                  23.07.2019 16:04

                  >>в данном примере разницы нет

                  Небольшие integers (кажется, до 16 но не ручаюсь) существуют в памяти Python программы как синглтоны и все ссылки указывают на один и тот же объект в памяти.


                  1. Fedorkov
                    23.07.2019 17:26

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

                    Если размер переменной меньше, чем указателя, её таким образом не оптимизируешь.


                    1. coolkimchi
                      23.07.2019 18:03
                      +3

                      О, а вы, видимо, из Яндекса :)

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

                      docs.python.org/2/c-api/int.html

                      В памяти хранится весь массив int в пределах, который попадает под оптимизацию.


                1. Debug_all
                  24.07.2019 12:08

                  Вопрос к сообществу и заминусовавшему в частности.
                  В чем в примере выше ошибка по существу?
                  Был бы признателен за конструктивную критику.


              1. MaM
                23.07.2019 22:02

                Все же тема не раскрыта. И почему питон не с++ то?


                1. blind_oracle
                  24.07.2019 14:58

                  Потому что он Питон :) А не C++


      1. vav180480_2
        23.07.2019 06:49

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


        1. monah_tuk
          23.07.2019 09:12

          По поводу, "больного", запыхавшегося. Я бы сходу выдал что-то подобное: "так к вам спешил, что аж дыхание сбил, да и погода внезапно намекнула, что одеться нужно было полегче". Имхо, много бы вопросов сняло :) Я, бывает, вставляю словечки, которые актуальны для игроков в онлайн PRG, так меня с опаской сразу спрашивают — в онлайн игры играете? Приходятся говорить, что любимая RPG — Fallout 2, разок в год-два пробежаться. В общем, тут скорее вопрос коммуникации. Честно, каким бы мегаграмотным не был бы человек, с ним ещё общаться нужно.


          1. vav180480_2
            23.07.2019 11:09

            Это был мой первый собес за 10 лет, возможно я не придал значение такой мелочи (с моей точки зрения, сейчас понятно что это реально не мелочь, потому как не просто спеца, а человека берут), все-таки это кое чему меня научило, к любому собесу надо готовиться, хотя-бы морально:) внешний вид и состояние тоже имеют значение. Опять же, оно и к лучшему, я соскочил с PL/SQL на более популярный стек, проблем с работодателями стало на порядок меньше и лишний раз понял что крупные компании это не моё (были еще Неткрекер и Куйбышевазот) — непонятная шестеренка которая непонятно что и для кого делает, на входе это, на выходе то, почему и зачем? — так в документации, мне как то поближе к человеку хочется.


    1. mopkob
      23.07.2019 11:37
      +1

      Прочел статью. Закрыл хабр. Вернулся.

      Ваша реплика про опыт в ЕПАМ укрепляет меня в догадке, что уже даже среди программистов подбор персонала стал «не про специальность» (ну и градации, в зависимости от компании, от «совсем не про специальность» до «не совсем про специальность»).

      Про «нравишься» и «не нравишься», про возраст (скоро стукнет 45), про рынок труда который отдельные представители HR так структурировали (есть примеры корпораций и компаний), что приходящие вновь команды не могли не то, что специалиста нанять… На интервью никого затащить. При весьма конкурентных предложениях, ведь в кругу нужных специалистов 3% слила одна из предыдущих команд, 15% побывали на интервью и были растоптаны.

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

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

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


  1. RPG18
    22.07.2019 16:59

    Хорошо если 1 час. В некоторых компаниях приходится проходить N собеседований по часу, на которых решаешь задачки. Где N зависит от количество команд, в которых открыты вакансии. Может быть 5, а может 11.


    1. irsick
      22.07.2019 17:08
      -1

      А могут пригласить в главный офис, оплатить 6-часовой перелет и отель, чтобы завалить на самом последнем этапе.


      1. Zoolander
        23.07.2019 07:44

        мне кажется, в Лас Вегасе это называется не собеседование


        1. Andrey_Dolg
          23.07.2019 10:46

          Кастинг.


    1. snuk182
      22.07.2019 17:17

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


      1. Mirn
        23.07.2019 03:58
        +1

        Как то взяли разработку пищалки которая пикает прерывисто когда у грузовика включается задняя передача, всё именно так и было: десятки скайп совещаний с полсотней менеджеров и директоров разных там газмяс-альф и бетт, почта превратилась в вообще Re:Re:Re:Re:… теперьточноокончательная версия(2197) с почти стократным вложением. Кое как вытянул проект и уговорил их взять готовый именно для этого предназначенный и сертифицированный на всякие морозы и IP69 компонент с защитами от всего, генертором и динамиком, из новоразработанного только крепление и корпус был.
        Хотя изначально надо было просто узнать форму корпуса и чёртёж посадочного места что обычно делается за пару бесед с адекватным бизнес процессом не нацеленным на оправдание завышенной стоимости. Да они потратив миллионы рублей на совещания потом ещё тянули до последнего с оплатой несчастных 50тр.


    1. TheKnight
      22.07.2019 22:56
      +1

      Где вы такую жуть встретили? В Яндексе?


      1. VolodjaT
        23.07.2019 00:04

        Del


      1. Whuthering
        23.07.2019 01:21
        +1

        У меня такое в Яндексе было, да.


        1. Mirn
          23.07.2019 04:02
          +2

          в Японском аналоге Яндекса есть ещё круче: там после кучи собеседований нужно прочитать всю книгу-автобиографию основателя компании ну «очень скромно» названную «моя великая борьба» и написать изложение по ней во время спец экзамена без инета и под надзором, ну и конечно всё это на японском.


          1. vladkorotnev
            23.07.2019 04:33
            +2

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


            1. baton4iik
              23.07.2019 05:36
              +2

              Ракутен. 3 месяца собеседований. 4 интервью. В конце попросили написать эссе на книги основателя, но, благо, можно было писать дома и на английском. Похоже, если не боготворить митера Микитани, то в ракутен не попасть.


              1. monah_tuk
                23.07.2019 09:17

                А что… Пишешь эссе с названием "Моя (не)великая борьба" где просто стебёшься над тремя месяцами собеседований. Да ну его нафиг, им специалист или жополиз нужен?


                1. senglory
                  23.07.2019 13:21
                  -2

                  «Я — Начальник, ты — дурак» — все вполне в духе этих косорылых макак, которые устроили Фукусиму, создав 14 уровней начальников над оператором АЭС с нулевой ответственностью в итоге.


                  1. hd_keeper
                    23.07.2019 16:56

                    с нулевой ответственностью в итоге.

                    Для этого и создавали.


              1. siziyman
                23.07.2019 13:47

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

                Оффер получил, не поехал.


          1. lanseg
            23.07.2019 08:57
            +1

            О, я тоже в Ракутен собеседовался, мне тоже дали книжку. Я прямо спросил "Это обязательно? А то я не люблю весь этот успешный успех", мне ответили "Ну не хотите — не читайте, положено предлагать, а дальше дело ваше. Всё равно, никто не спрашивает."


            1. monah_tuk
              23.07.2019 09:18
              +1

              "А что, так можно было!?" :)))


              1. lanseg
                23.07.2019 10:01

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


                1. Neikist
                  23.07.2019 10:13

                  11 дней не считая выходных? Мне казалось в японии норма 3-5, по крайней мере в первые годы. Или там тоже итшникам послабления?


                  1. lanseg
                    23.07.2019 10:22
                    +1

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


                  1. alexkbs
                    23.07.2019 11:05

                    11 рабочих дней за год положено после полутора лет работы. См. 4.5.8 здесь.


                1. monah_tuk
                  23.07.2019 12:57

                  ИМХО, это только если очень хочется "за границу". Либо ну очень сильно к их культуре тянет. Климат тоже… Теплее, чем у меня во Владивостоке, но так же влажно. Да и менталитет относительно работы у них другой.


                  1. Anarchist
                    23.07.2019 15:15

                    Такие же раздолбаи, как и везде.


                1. Anarchist
                  23.07.2019 15:14

                  Почему всем можно, а вам запретили? :)


              1. Anarchist
                23.07.2019 15:14

                Можно :)


      1. RPG18
        23.07.2019 11:16

        Верно угадали. Приятель проходил два года назад, он забил после 11 собеседования. Я проходил этот квест в июне было 5. Никаких вопросов про паттерны, языки программирования, базы данных и т.д. Тупо решаешь задачки.


  1. neurocore
    22.07.2019 17:02

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


    1. nochkin
      22.07.2019 19:21
      +1

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

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


  1. bugsfinder
    22.07.2019 17:10

    Все правда, все о нас...


  1. Izulle
    22.07.2019 17:13

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


    1. JustDont
      22.07.2019 17:38
      +2

      нормальных способов оценки кандидатов нет

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

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


      1. siziyman
        23.07.2019 13:59
        +1

        разговор «по душам» о прошлом опыте и сложных случаях из жизни

        Может быть проблемным, если много что под NDA.


        1. JustDont
          23.07.2019 14:01
          +1

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


          1. siziyman
            23.07.2019 14:13
            +1

            Я встречал задачи, рассказ о которых вне бизнес-конкретики абсолютно лишает разговор смысла.


            1. PsyHaSTe
              25.07.2019 00:34

              Вряд ли NDA защищает диаграмки вида "вот тут у нас сыпались сообщения в очередь, сервис разбирал и писал в эластик, а вот тут фронт оттуда читает"


              1. siziyman
                25.07.2019 01:39

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


                1. PsyHaSTe
                  25.07.2019 02:30

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


    1. smarthomeblog
      22.07.2019 17:48

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


  1. ingvarwolf
    22.07.2019 17:20

    В Монреале есть одна компания, у которой процесс найма на работу занимает очень продолжительное время. Самый короткий срок от первого собеседования по телефону до контракта, который я знаю, занял 6 недель. Самый длинный — 18 месяцев. Как правило они проводят несколько интервью по телефону и несколько личных встреч. Всегда на первом интервью задают вопросы о том как работает сборщик мусора, как там всё устроено. Ни один из проводивших интервью не смог мне внятно привести примеры из их реальных проектов, когда эти знания помогли или были по-настоящему необходимы.
    Я спрашивал нескольких разработчиков, которые работали в этой компании, как им приходилось использовать эти конкретные знания в работе. Самый лучший ответ: «Знание о том, как работает сборщик мусора, нужны чтобы пройти интервью. Больше они не нужны.»


    1. AllexIn
      22.07.2019 18:42

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


      1. snuk182
        22.07.2019 18:58
        +2

        Как часто вы создаете объекты размером со всю доступную VM память?
        Как часто вам встречаются бизнес задачи, требующие создания объектов размером со всю доступную память?


        1. amaksr
          22.07.2019 20:59
          +2

          Как часто вы создаете объекты размером со всю доступную VM память?
          Это и не нужно. Достаточно в цикле читать и обрабатывать какую-нибудь таблицу (или запросы). Если в этом цикле используются любые ресурсы ОС, то забыть закрыть ресурс (а с ним и все связанные объекты) очень даже легко. И даже если не забыть, то не факт, что сборщик будет чистить так, как вам бы хотелось. Мне как-то довелось оптимизировать память процессу на яве. Поставил явный вызов GC, хоть во всех мануалах пишут, что это делатьне надо. Коллеги на ревью удивились, но после демонстрации уменьшения памяти на 50% смеяться перестали. Так что всяко бывает, а памяти всегда мало.


          1. snuk182
            22.07.2019 21:13
            +3

            забыть закрыть ресурс

            Это не "объект размером с память", это баг.


            не факт, что сборщик будет чистить так, как вам бы хотелось

            Для этого придумали пулы объектов.


            Поставил явный вызов GC

            Вам сильно повезло. Обычно жор памяти в Java = утечка. С множеством короткоживущих объектов GC справляется без полной остановки, чисто за счет Эдема.


            1. amaksr
              22.07.2019 22:49

              Вам сильно повезло. Обычно жор памяти в Java = утечка.
              Вот код без утечек, только-что запускал:
              public class MyTtest {
              	public static void main(String argc[]) {
              		while(true) {
              			List<String> arr = new ArrayList<String>();
              			for(int i=0; i<10000000; i++)
              				arr.add(new String("abc"));
              			System.out.println(new java.util.Date());
              			System.gc();
              		}
              	}
              }
              

              Запустил без строчки с GC, процесс быстро набрал 2GB оперативки, CPU циклично скакал от 25 до 90%,
              лог выглядел так
              Mon Jul 22 15:39:31 EDT 2019
              Mon Jul 22 15:39:34 EDT 2019
              Mon Jul 22 15:39:34 EDT 2019
              Mon Jul 22 15:39:35 EDT 2019
              Mon Jul 22 15:39:35 EDT 2019
              Mon Jul 22 15:39:37 EDT 2019
              Mon Jul 22 15:39:37 EDT 2019
              Mon Jul 22 15:39:39 EDT 2019
              Mon Jul 22 15:39:39 EDT 2019
              Mon Jul 22 15:39:42 EDT 2019
              Mon Jul 22 15:39:43 EDT 2019
              Mon Jul 22 15:39:43 EDT 2019
              Mon Jul 22 15:39:46 EDT 2019
              Mon Jul 22 15:39:46 EDT 2019
              Mon Jul 22 15:39:47 EDT 2019
              Mon Jul 22 15:39:50 EDT 2019
              Mon Jul 22 15:39:50 EDT 2019
              Mon Jul 22 15:39:51 EDT 2019
              Mon Jul 22 15:39:51 EDT 2019
              Mon Jul 22 15:39:51 EDT 2019
              Mon Jul 22 15:39:53 EDT 2019
              Mon Jul 22 15:39:53 EDT 2019
              Mon Jul 22 15:39:54 EDT 2019


              1. Endeavour
                22.07.2019 23:03

                В зависимости от GC, вызов System.gc() может быть заимплеменчен как угодно, в том числе и nop.


              1. snuk182
                22.07.2019 23:25
                +1

                Резюме: так писать не надо, и вот почему:


                • с добавлением ноликов в условие цикла разница будет все менее заметной
                • в многопоточном приложении вы получите паузы во всех потоках, и это не обязательно то, что вам позволено
                • более того, явный вызов GC совершенно не гарантирует запуск GC, это зависит от множества факторов и малопредсказуемо в общем. Например, в моем случае (openjdk-11/i7-8750H/16G) в данном примере постоянный вызов GC жрал те же 100% проца и вдвое больше оперы, чем без явного вызова. Зато замена GC на Thread.sleep(500) успокоила процессор в прежних пределах памяти.
                • если придираться: конкретно в этом случае стоит использовать пул. Думаю, это понятно и так, просто сделано в угоду постоянному выделению большого куска памяти, но на практике такое даже джуны себе не позволяют. Кейсы с массивным выделением памяти обычно предсказуемы и предусматриваются архитектурой приложения в особом порядке.


                1. amaksr
                  23.07.2019 00:18

                  с добавлением ноликов в условие цикла разница будет все менее заметной
                  вообще-то, если добавить нолик, то у меня программа без GC просто падает достигнув 2GB RAM (java se 1.8 под виндой). А с GC работает.
                  в многопоточном приложении вы получите паузы во всех потоках, и это не обязательно то, что вам позволено
                  не факт, ведь я же не получаю паузы в одном потоке, даже наоборот — в данном однопоточном быстодействие с GC в разы выше.
                  более того, явный вызов GC совершенно не гарантирует запуск GC
                  здесь полностью согласен, нужно экспериментировать
                  если придираться: конкретно в этом случае стоит использовать пул
                  я список сделал такой большой чтобы сразу было понятно чем занята память процесса — надо же чем-то заполнить пару гигов. Но при других значениях счетчика я получил похожий результат, что с GC работает лучше: видимо моя имплементация GC прислушивается к советам, и это позволяет оптимизировать программу.
                  Вобще всему этому есть объяснение: только программист может знать когда в его программе лучше сделать сборку мусора, так как это зависит от множества факторов, которые из кода и рантайма вычислить или невозможно, или слишком сложно, и поэтому такая задача сборщику может быть в принципе не под силу. Поэтому хотелось бы, чтобы со сборщик перестал быть черным непредсказуемым ящиком.


                  1. Source
                    23.07.2019 00:26
                    +4

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

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

                    В чём проблема? Пишите на Rust.


                  1. snuk182
                    23.07.2019 00:31

                    программа без GC просто падает достигнув 2GB RAM (java se 1.8 под виндой). А с GC работает.

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


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

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


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

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


                    1. user_man
                      23.07.2019 12:50

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

                      А с чего вы это взяли? Или про nop не читали? И да, вот это ваше — «это не просто не черный ящик, это хрень с кучей параметров и ручек для тонкого тюнинга под конкретные задачи» тогда как понимать? Ну и для полноты — вы в курсе как ведёт себя GC при наличии нескольких class loader? С учётом кучи параметров и ручек для тюнинга, разумеется.


                      1. snuk182
                        23.07.2019 13:34

                        1. Несмотря на то, что GC в JVM постоянно улучшается, энтерпрайзные заказчики крайне неохотно перелезают даже на Java 8, не говоря уже о более поздних версиях. И я не слышал о полном отказе от stop-the-world тактики в худших случаях GC даже с Java 11, такое умеет (умел?) только Azul — то есть всегда есть шансы получить StW, которые возрастают при ручном вызове gc(). Может если порыть офдоку, где-то найдется явное упоминание StW независимо от количества потоков приложения (я не задавался целью найти), но просто по логике — общая куча + Full GC + старые не ThreadLocal-данные = хороший повод для StW.
                        2. Количество класслоадеров влияет на мусорщик только в том плане, что для деинициализации объекта нужен соответствующий его классу лоадер. В старых джавах была проблема чистки пермгена в случае нескольких лоадеров, потому что пермген в силу своей природы херово чистится. Сейчас с общим метаспейсом проблем мусорщика, связанных с класслоадерами, нет или мало (исключая случаи кастомных класслоадеров, но это еще более отдельная тема). Но я говорил о потоках, а не класслоадерах, а если потоки шарят общую кучу, StW вполне реален.
                        3. Я вам не отвечку про настройки GC, потому как последний раз явно касался этого еще при Java 6, с коих пор прошло достаточно времени и изменений JVM, о которых знаю лишь в теории. В большинстве случаев вопрос о тюнинге памяти встает только после проблем с производительностью, и решение этого вопроса очень индивидуально.


                        1. user_man
                          24.07.2019 13:24

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

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


                          1. snuk182
                            24.07.2019 13:42

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


                            1. user_man
                              24.07.2019 15:19

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


                              1. snuk182
                                24.07.2019 21:47

                                Не спорю. Но в случае спорных решений — они должны быть обсуждены и оправданы. И документированы.


                    1. balexa
                      23.07.2019 14:42

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

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

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

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

                      Да с чего вы решили что явный вызов GC == stop world?


                      1. snuk182
                        23.07.2019 14:57

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


              1. Source
                23.07.2019 00:23
                +4

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


                1. amaksr
                  23.07.2019 00:32
                  -1

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


                  1. Source
                    23.07.2019 01:34
                    +2

                    Это звучит примерно как: нас устраивало O(n?3), и всё было нормально до тех пор, пока n не начало расти.


                    1. alex_zzzz
                      23.07.2019 13:55
                      +1

                      С этой фразой всё в порядке.


                    1. balexa
                      23.07.2019 14:48
                      +1

                      А что тут такого? Вполне нормальный подход.
                      Более того, алгоритм n^2 бывает значительно быстрее чем n log n. Для примера взять реализацию той же сортировки почти во всех библиотеках всех языков.


                      1. alex_zzzz
                        23.07.2019 15:23

                        На небольших n И/ИЛИ маленьких константах и n^3 может быть вполне нормально, т.к. всё равно быстро, а напишется за минуту в 4 строчки, скорее всего.


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


                  1. PsyHaSTe
                    25.07.2019 00:57

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


                    1. amaksr
                      25.07.2019 02:27

                      У нас в конторе (вернее сказать, у нашего клиента) видел только один апгрейд VM за 5 лет. Причина проста: на нескольких серверах крутится около сотни приложений и сервисов, и при любом апгрейде нижележащих компонент приходится регрессивно тестировать всё. А суппорта на Java-приложения всего 8 человек…
                      Поэтому, посмотрев на результаты тестов, посоветовавшись внутри команды, и, естественно, с клиентом, коллегиально был сделан выбор вставить строчку с GC в код, а не переписывать кучу legacy-кода.
                      Клиент был очень доволен, так как этот вариант позволил решить проблему минимум на пару лет, а там условия и требования скорее всего опять изменятся.


                      1. Endeavour
                        25.07.2019 11:07

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


                1. Druu
                  23.07.2019 05:20

                  Явный вызов GC — это скорее симптом того, что у вас что-то не в порядке с самим алгоритмом.

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


                  1. Source
                    23.07.2019 12:18

                    Я про то, что сначала стоит задаться вопросом: как избежать создания большого кол-ва объектов на ультракороткий срок? А не сразу переходить к вопросу: как побыстрее собрать мусор?
                    Чисто не там, где убирают, а там, где не мусорят )))


                    1. Druu
                      23.07.2019 23:29

                      Я про то, что сначала стоит задаться вопросом: как избежать создания большого кол-ва объектов на ультракороткий срок?

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


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


        1. ofigenn
          22.07.2019 23:07

          Как раз на днях конвертил ~100Gb видео потока. Немного ошибся с реализацией стрима и бац) Но я смог)


          1. snuk182
            22.07.2019 23:33

            Круто :) А как с производительностью? Неожиданное применение языка с автоматическим управлением памятью, если честно.


            1. ofigenn
              22.07.2019 23:51
              +1

              Я вам страшную вещь сейчас скажу: я на JavaScript написал обертку, а само сжатие я делал через ffmpeg)
              Главное получилось и быстро) Просто разовая задача)


      1. playermet
        22.07.2019 20:14
        +7

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


        1. AllexIn
          22.07.2019 21:00

          Создавалась, да. Но при этом существование GC всё равно надо учитывая в процессе разработки, так или иначе.
          Весь гугл в своё время был завален обсуждением Android bitmap recycle.
          И это только одна тема, где играю особенности GC. А так — GC везде очень активно обвешан костылями и особенностями.


          1. snuk182
            22.07.2019 21:19

            Android bitmap recycle

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


            1. AllexIn
              22.07.2019 21:31

              А какое значение имеет причина?
              Факт есть факт — просто принять «у меня GC» и больше не думать о том, что так под капотом — не получается почти никогда.


              1. snuk182
                22.07.2019 21:36

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


                1. AllexIn
                  22.07.2019 21:39

                  Разработка не ограничивается смартфонами.
                  Ну и в целом это лишь пример. Таких примеров — вагонами.


                  1. snuk182
                    22.07.2019 22:31

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


              1. depadep
                23.07.2019 13:45
                +1

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


        1. gudvinr
          22.07.2019 22:45
          +2

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


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


          1. PsyHaSTe
            25.07.2019 00:40

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


      1. dominigato
        22.07.2019 20:54
        -2

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


        1. alex_zzzz
          23.07.2019 14:00

          Либо хорошие (с технической стороны) игры.


      1. ingvarwolf
        23.07.2019 01:53
        +1

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

        class SomeClass {
            private String someValuableData = "Most Valuable Information";
        
            /* Getters and Setters are ommitted. */
        
            public void updateData(String newData) {
                this.setSomeValuableData(this.getSomeValuableData());
            }
        }
        

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


        1. PsyHaSTe
          25.07.2019 00:43

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


    1. Neikist
      22.07.2019 19:16

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


    1. sshikov
      22.07.2019 20:00
      -1

      CGI?


      1. ingvarwolf
        23.07.2019 01:55

        Morgan Stanley


    1. DrunkBear
      23.07.2019 11:13

      Возможно, они хотели получить встречный вопрос «какой именно из алгоритмов GC?»
      На хабре был цикл статей по ним ( если интересно — тык )


  1. truebest
    22.07.2019 17:40
    +2

    Скоро мне стукнет 45 и свой стартап (где был CTO) я покинул в декабре. С тех пор я завалил не меньше 10 тестов и интервью на программиста. Пишу код при этом я уже почти 20 лет, включая создание прошивок (по образованию я инженер-электронщик) и полномасштабные распределенные веб-приложения с интеграцией IoT. Я с нуля создавал ПО для крупных специализированных производственных объектов по всему миру. Тем не менее, я просто не могу устроиться программистом, потому что постоянно проваливаю эти тестовые задачки.


    Тем-же занимаюсь по сути, и кодингом и железом, iot и все что с ним связано, также есть крупные реализованные проекты, есть свой стартап, но переодически уделяю время прохождению интервью, хоть и работать там как правило не собираюсь. Очень нравятся собесы по Skype и тп. Для меня обычно выглядит так, 2-3 интервью проваливаю, потом есть предложение и я отказываюсь. Вопросы на 1-3 интервью практически однотипные, и по факту на повторение. Некоторые вещи, которые никогда не применяю, да и в здравом уме они не нужны, просто записываю, и потом на следующем интервью отвечаю.
    С этого года ноу-хау добавилось, спрашивают часто про контроль версий, про управление задачами, проектами, и другие инструменты, ну и вообще как ты придумываешь, как и куда записываешь, с кем обсуждаешь и как реализуешь.
    Все это превратилось уже даже не в решение тестовых задачек, за решение которых тебя все равно не возьмут, тк ты не знаешь jira или еще какой инструмент, а в банальные как нужно отвечать и как не нужно отвечать. Психопатия. Это и называется навыком прохождения интервью.


  1. pvsur
    22.07.2019 17:45
    +5

    Анекдот в тему:
    Работают два HR, опытный и молодой. Приходит стопка резюме на должность топ-менеджера. Опытный сразу берет и половину стопки отправляет в корзину. На удивленный взгляд молодого коллеги коротко отвечает: — А зачем нам топ-менеджер — неудачник ?!


  1. smarthomeblog
    22.07.2019 17:46

    Столкнулся с подобным сам, когда искал работу. Такое ощущение, что идет поиск не сеньера, а участника игр «Что. Где. Когда». Разнообразие задачек ограничивается только фантазией нанимателя. Тут тебе и веселые шарады, и вопросы про паттерны (куда же без них родимых), и алгоритмы. А потом откроешь проект, а там — контроллеры с методами по 4-е экрана! Тестов нет и деплой по FTP. И вот назревает вопрос — для чего все это? Чтобы потешить свое самолюбие? Плюс ко всему, большая часть задач может быть решена больше, чем одним способом, как говаривал незабвенный Ларри Уолл.И не факт, что человек, проверяющий задание, имеет наиболее оптимальный вариант решения. Несмотря на то, что сам ее сочинил :)


    1. snuk182
      22.07.2019 17:51
      +3

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


      1. smarthomeblog
        22.07.2019 17:55

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


        1. snuk182
          22.07.2019 18:03

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


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


      1. urtow
        22.07.2019 18:33

        Последние два раза устраивался работать по рекомендации.
        Интервью больше напоминало обсуждение тенденций в современном IT и обсуждение применимости стандартных решений/библиотек.


      1. deitry
        23.07.2019 14:31

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


    1. mapron
      23.07.2019 02:31

      А что не так-то? В компании не было знающего человека, они его нанимают, чтобы пришел и все сделал по-человечески (тесты и код по паттернам) :) если в требованиях вакансии это отражено — в чем проблема?


      1. smarthomeblog
        23.07.2019 09:30

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


        1. mapron
          24.07.2019 06:49

          Если расклад такой да, смахивает на лицемерие. Но это можно попытаться узнать на этапе собеседования вопросами «а чем вы планируете меня занять на новой должности?»
          если будет какое-то монотонное «поддержка ХХХ… сопровождение YYY...», то должно напрячь) можно спросить «а зачем указан в вакансии С++42, где он у вас там применяться планирует?» Я когда на работу устраивался, спрашивал как применяются указанные в вакансии технологии, мне вполне без утайки все сказали.
          Опять же странно если начнут отмазываться корпоративными секретами, ибо всегда можно найти способ как не сказать слишком много)


    1. bodqhrohro
      23.07.2019 15:24

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


  1. Ketovdk
    22.07.2019 17:48

    Дело не только в отсеве кандидатов. Просто часто бывает такое, что в коде есть явные алгоритмические ошибки, которые сразу же бросаются в глаза задачколюбам, но незаметны даже для людей с 15-тилетним стажем, которые являются отличными программистами, разбираются в архитектуре, патернах, чем угодно. И в итоге в месте, где должно работать за O(n) или O(log(n)) вылезает квадрат, который можно обнаружить уже только на проде или ближе к нему. Ну как обнаружить, просто все начнет валиться по тайм-ауту


    1. Naglec
      22.07.2019 18:44

      Нагрузочные тесты на что?


      1. Ketovdk
        22.07.2019 19:51

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


        1. Naglec
          22.07.2019 20:01
          +2

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

          Это не отменяет необходимости понимания, что полный перебор — плохо, а кэширование — хорошо.

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


          1. slonopotamus
            22.07.2019 20:34
            +1

            реальные проблемы с производительностью вскрываются код-ревью

            Звучит как "это ок что я не умею искать оптимальное решение, пусть за меня мой коллега-ревьювер его ищет".


            1. Naglec
              22.07.2019 20:38

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


      1. Ketovdk
        22.07.2019 19:54
        +1

        и я не говорю о каких-то хардкорных оптимизациях с построением Ахо-корасика или дирамид, но если где-то можно легко и непринужденно поднять с O(n*n) до O(n) просто использовав хэш-таблицу, вместо кучи избыточных linq, делать это автоматически (а не когда начнет подгорать) вполне полезно


  1. dbelka
    22.07.2019 17:58

    14 лет общего стажа в веб-разработке в достаточно крупных фирмах (где хайлоад и всё такое).
    Помимо основного неплохо знаю C++, писал расширения для PHP, решал задачи по ML и много чего ещё.
    Не собеседовался только уже как лет 7. Два собеса я уже не прошёл :-)


  1. Hydro
    22.07.2019 18:10
    +1

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


    1. playermet
      22.07.2019 20:25
      +2

      Так это же совсем просто. Делаем счетчик, ставим ему 0. Если встречаем открывающую — прибавляем 1, закрывающую — отнимаем 1. Если счетчик в любой момент становится меньше 0, или больше 0 по завершению потока — значит ошибка. Или я не так понял задачу?


      1. Hydro
        22.07.2019 22:25
        -2

        Все-так)) На с Ваши решением следующие строки тоже будут валидны:
        }{, ][, )(
        Ожидается такой поток: {[<()>]}, и проверять нужно было именно правильность открытия-закрытия))
        В любом случае, я получил оценку «procedure inefficient» за реализацию и был послан hr далеко и надолго)


        1. siziyman
          22.07.2019 22:32
          +2

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


          1. Hydro
            22.07.2019 23:39

            Да, Вы правы, читать было лень. Видимо поэтому и пролетел))


            1. siziyman
              23.07.2019 00:12

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


              1. Hydro
                23.07.2019 06:30

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


        1. Razoomnick
          22.07.2019 22:52
          +1

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


          1. Hydro
            22.07.2019 23:22

            Все так и было сделано)


            1. ainoneko
              23.07.2019 09:02

              Все так и было сделано)
              Эээ… А что тогда у них считается эффективным?


              1. VolCh
                23.07.2019 10:53

                Ну, например, найти решение, когда поток (вернее уровень вложенности скобок) на порядок больше объёма доступной памяти.


                1. JustDont
                  23.07.2019 11:01

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


                1. ainoneko
                  23.07.2019 12:43

                  К каждой скобке в стеке добавить счётчик?
                  (А потом ещё проверять, помещается ли количество скобок в этот счётчик??
                  (Так и до числа Грэма дойти можно.))


                  1. JustDont
                    23.07.2019 13:10
                    +1

                    Счётчик не поможет, важен порядок. Иначе будут проходить потоки типа "{([}])" — что, конечно, по условиям задачи могло бы быть допустимо, но «в жизни» такое обычно никому не нужно.


                    1. ainoneko
                      23.07.2019 20:07

                      К каждой скобке в стеке добавить счётчик?
                      Счётчик не поможет, важен порядок.
                      Почему не поможет-то? К каждой скобке:
                      "{((([[(..." — здесь в стеке:
                      ("{", 1), ("(", 3), ("[", 2), ("(", 1).
                      При появлении такой же (или парной) скобки, как в вершине стека, — увеличивать счётчик в вершине стека (соответственно, уменьшать (и выбрасывать при достижении нуля)).
                      Иначе будут проходить потоки типа "{([}])"
                      Как это получится?


                      1. JustDont
                        23.07.2019 20:21

                        А, вы в этом смысле. Ну а где тут особая экономия-то? Вот скажем, если у нас 2 вида скобок, то нам хватит 1 бита на каждую, а если вы рядом с каждым битом будете дописывать да даже 8 бит на количество, то расход памяти едва ли убавится — зависит от кейсов, конечно. Если ожидаются сотни одних открывающих скобочек — то наверное какая-то экономия будет. Если нет — то едва ли.


                        1. ainoneko
                          23.07.2019 20:44

                          Если ожидаются сотни одних открывающих скобочек — то наверное какая-то экономия будет. Если нет — то едва ли.
                          Если нет, то при формулировке
                          «например, найти решение, когда поток (вернее уровень вложенности скобок) на порядок больше объёма доступной памяти.»
                          задача становится немного слишком сложной.
                          (Можно, конечно, пытаться, например, использовать код Хаффмана или ещё что-нибудь для сжатия стека, но это уже извращения начинаются (мой вариант был "RLE-encoding", как в некоторых старых форматах картинок).
                          Или ваш вариант — упаковка в битовые поля (для трёх-четырёх видов скобок уже нужно по 2 бита — не очевидно, хватит ли памяти, если " уровень вложенности скобок на порядок больше объёма доступной памяти" (что бы это ни значило) ))


                1. PsyHaSTe
                  25.07.2019 00:55

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


      1. Spaceoddity
        23.07.2019 01:57
        +1

        {][}
        Такой пример ваш валидатор пропустит?
        <div<span>>
        А такой?


        1. siziyman
          23.07.2019 09:56
          +1

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


          1. Spaceoddity
            23.07.2019 11:55

            А, ну т.е. задачи фильтровать такие варианты как {[}] не стоит? Главное просто посчитать кол-во открывающих и закрывающих? Нормальное задание для сеньора.


            1. siziyman
              23.07.2019 13:39

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

              Указанная автором комментария формулировка задания оставляет простор для интерпретации. На сложность задания это влияет весьма условно.


        1. Kodiak
          24.07.2019 20:46
          +1

          Ещё скажите, что такое должен не пропускать.

          std::vector< std::vector< int > >

          Разве что по поводу отсутствия пробела между ">" варнинг выдавать.


  1. usharik
    22.07.2019 18:13
    +1

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


    1. Hydro
      22.07.2019 22:27

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


    1. 0xd34df00d
      23.07.2019 02:35

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


      1. usharik
        23.07.2019 15:07

        Может оно так и лучше)))


  1. lyadnov
    22.07.2019 18:14

    Я смирился с тем, что все эти собеседования — рулетка.
    5 раз тупые шарады и конкурсы, на которых тебя отсеют, потому что «вспотел через чур».
    А 1 раз, с тобой поговорят по душам и не проверяя реальных знаний возьмут на тестовый срок.
    Вот на тестовом сроке ты и показываешь на что способен.


  1. Yago
    22.07.2019 18:16

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

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

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

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


    1. PsyHaSTe
      25.07.2019 00:59

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


      Дайте задачку на проектирование простенького модуля (если речь про сениора). Ну там "как бы вы сделали логирование с разных модулей", "а вот теперь нам хотелось бы трекать время выполнения запросов", "а вот у нас куча IO-bound задач на сервер валится, а он не справляется, что это может означать?"...


      1. Yago
        25.07.2019 11:21

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

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

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


        1. PsyHaSTe
          25.07.2019 15:37

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


          1. dss_kalika
            25.07.2019 15:42

            Если работать в одном стеке 15-20 лет (причём — если стек при этом и сам не меняется), то не вижу ничего что можно было бы особо нового в нём найти и не быть «закостенелым».


            1. PsyHaSTe
              25.07.2019 15:58

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


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


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


              1. dss_kalika
                25.07.2019 16:04

                Ну, если за это платят и это неплохо получается — почему бы и нет? Кто то же, в конце концов, должен. (поддерживать и развивать системы созданные в прошлом тысячелетии).

                Вы молодец, вы меняли стеки. Но не у всех есть такое желание. =)

                Поискать что то, кардинальное? Переписать проект с дикого размера кодовой базой и без документации?
                … и, да — ничто не защитит от ошибок из разряда «он не робот».


                1. PsyHaSTe
                  25.07.2019 17:54

                  Ну, если за это платят и это неплохо получается — почему бы и нет? Кто то же, в конце концов, должен. (поддерживать и развивать системы созданные в прошлом тысячелетии).

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


                  Вы молодец, вы меняли стеки. Но не у всех есть такое желание. =)

                  Кмк это желание любого разумного автоматизатора: работать меньше, получать результата больше.


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

                  1. не все проекты такие
                  2. есть хорошие книги по тому, как приводить легаси в адекватное состояние.

                  У меня были проекты, где старожилы говорили "Да зачем тебе надо его трогать? Ну да, говно, но у нас же вон в кроне таска настроена чтобы перезапускать, а твой фикс конечно работает, но тестировать его мы не хотим, да и дифф за 200 файлов читать лень".


                  1. dss_kalika
                    25.07.2019 18:47

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

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

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

                    У меня были проекты, где старожилы говорили «Да зачем тебе надо его трогать? Ну да, говно, но у нас же вон в кроне таска настроена чтобы перезапускать, а твой фикс конечно работает, но тестировать его мы не хотим, да и дифф за 200 файлов читать лень».


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

                    А про книги… читал я несколько. Но ничего что могло бы помочь переписать за разумный срок проект на, к примеру, Delphi/SQL, который жил и развивался 15 (или уже 20?) лет, включая динамический sql, динамическое создание dfm-ок, отсутствие тестов и документации я что то там не заметил. Особенно — без увеличения свободных ресурсов программистов.


                1. pprometey
                  25.07.2019 18:50

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

                  Это какой-то ремесленеческий подход, который уже давно умер, еще в эпоху ренесанса.


                  1. dss_kalika
                    25.07.2019 18:58

                    Качество — по каким критериям?


                    1. pprometey
                      25.07.2019 19:02

                      Ну даже с точки зрения пользователя. Сравни хотя бы ASP .NET WebForms и SPA на Angular c бакендом на ASP .NET Core 2. (ну либо JEE). А еще стоимость лицензий и поддержку устаревший решений?


                      1. dss_kalika
                        25.07.2019 19:03

                        И в чём будет разница с точки зрения пользователя?


                        1. pprometey
                          25.07.2019 19:15

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


                          1. MacIn
                            25.07.2019 19:26

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


                          1. Igor_O
                            25.07.2019 22:05

                            Если ты по каким-то причинам не можешь жить в солнечной Калифорнии, ну или во Флориде или, на худой конец, в Техасе, то чтобы пользоваться Теслой нужно потратить еще две-три цены Теслы на организацию ее зарядки. И еще иметь жигули копейку, чтобы ездить за 10 км до паркинга, в котором согласились подключить Теслу к розетке… Ну и да, еще жигули копейка пригодятся в морозы, когда пробег Теслы внезапно сокращается в 3-5 раз… Ну или в сильную жару, когда каждая поездка съедает год ресурса аккумулятора.

                            Это я все к чему? «Жуткое легаси» очень часто — это очень хорошо для бизнеса. Работал я как-то в одной конторе. Там ядро всего бизнеса крутилось на 15-летнем мэйнфрейме. Это был жуткий антиквариат. Но. Сколько думаете было суммарное время простоя этого ядра за 15 лет эксплуатации? Единицы минут! И то, уже ближе к 15-му году эксплуатации, когда электролиты на некоторых платах совсем уже пересохли.
                            И да, вокруг были обернуты всякие новомодные тогда веб-морды, импорты-экспорты из экселя, и прочие выдачи отчетов. И вот тут-то и возникали время от времени письма от админов: «Веб-морда поломалась, мы ее скоро починим, если что-то срочное — го в терминал с командной строкой, там все работает.» И были старожилы, которые застали еще время до веб-морд, которые делали все то же, что и через веб-морду, но в два-три раза быстрее…
                            Да даже элементарно. Вспоминая обучение «юзеров» во времена ДОСа и до них и обучение «юзеров» после появления виндоузов. С ДОСом и раньше — «вот тебе команда чтобы сделать это, вот тебе команда чтобы сделать то. Если что-то пошло не так и на экране не показывают :> с моргающей „|“ после — нажми „Esc“, если не помогает — то „Ctrl-c“. И человек мог через час продуктивно работать! Потом появился виндоус… И просто на то, чтобы человек мышкой попадал в кнопки и умел опознавать ситуацию, когда у него поверх всего диалоговое модальное окно, в котором что-то надо сделать — уходило по неделе и больше…
                            Вспоминается история из промежутка между чистым ДОСом и Виндоус. Когда уже появился NC… Вызывают моего друга бороться с вирусом. Приезжает. Просит продемонстрировать проблему. Дама достает тетрадочку. Открывает на правильной странице, щелкает тумблером на корпусе. Ждет синих окошек. Дальше по тетрадке: „7 раз вниз, энтер, три раза вниз, энтер, 15 раз вниз, энтер“. Дама тщательно отсчитывает нажатия и тщательно жмет энтеры. На экране все те же окошки, ничего не запустилось. Друг начинает разбираться. Оказывается на днях кто-то поставил новую программу на компьютеры бухгалтеров. И теперь, чтобы все работало, нужно начинать с „8 раз вниз“… Дали бы ей „набрать на клавиатуре cd С:\buh\base\ нажать энтер, набрать buh.exe нажать энтер“ — »вирус" бы никто не заметил…

                            PS: яркая демонстрация проблемы сейчас произошла у меня в предпросмотре коммента. Все кавычки съехали. Там где должны были быть "«" вдруг стали "»" а вместо "»" появились “. Но пока писал PS страница почему-то перерисовалась и большая часть багов пропала… Но остался »вирус" в конце…


                            1. MacIn
                              25.07.2019 23:20

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


                            1. pprometey
                              26.07.2019 05:15

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


                          1. dss_kalika
                            26.07.2019 11:38

                            — Легаси плохое, модное — хорошее!
                            — Почему?
                            — А ты попробуй!
                            =))
                            Может всё-таки сформулируете чем лучше то для пользователей, раз уж взялись это утверждать?


                            1. pprometey
                              26.07.2019 13:19

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


                              1. dss_kalika
                                26.07.2019 13:37
                                -1

                                Т.е. вы даже сами не можете сказать чем лучше?
                                Круто-круто.


                                1. Kanut
                                  26.07.2019 13:44

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


                                  1. dss_kalika
                                    26.07.2019 13:50
                                    -1

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

                                    Нет, я хочу увидеть ответ на

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

                                    Качество — по каким критериям?

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

                                    Вот мне и стало интересно — чем таким эти фреймворки ДЛЯ ПОЛЬЗОВАТЕЛЯ (как утверждает тот кому я это вопрос задал) лучше.

                                    Вопрос то простой (раз всё так очевдно), но почему то ответа на него нет.

                                    К примеру — классические легаси проекты на делфи/sql. Учёт там какой-нибудь, отчётики, гридочки и прочая классика. Чем так пользователям будет лучше на новых / более модных фреймворках? )


                                    1. Kanut
                                      26.07.2019 13:55

                                      Цена полной переписки продукта развивающегося уже 15 лет — колоссальна и не сопоставима с ценой поддержания.

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

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

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


                                      1. dss_kalika
                                        26.07.2019 14:00

                                        Практически всегда наступает момент когда переписать оказывается дешевле чем поддерживать.
                                        Если проект активно развивается — стоимость его переписывания точно так же растёт со временем, как и стоимость поддержки. =) А если не развивается — зачем переписывать?

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


                                        И снова — что значит «качественнее»? И как это зависит от фреймворка, а не от архитектуры и подхода к разработке? )


                                        1. Kanut
                                          26.07.2019 14:05

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

                                          Не согласен. Растёт и то и другое, но стоимость поддержки по моему опыту всегда растёт быстрее.

                                          И снова — что значит «качественнее»?

                                          В данном контексте «качественнее» для меня означает менее подвержено багам и критическим ошибкам.

                                          И как это зависит от фреймворка, а не от архитектуры и подхода к разработке? )

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


                                  1. VolCh
                                    26.07.2019 14:17

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


                                1. pprometey
                                  26.07.2019 13:51

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


                                  1. dss_kalika
                                    26.07.2019 13:58
                                    -1

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

                                    Спасибо, что прояснил это )

                                    ЗЫ: и, да — «техдолг» — понятие не связанное с фреймворком. =)


                                    1. pprometey
                                      26.07.2019 14:02

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

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


                                      1. dss_kalika
                                        26.07.2019 14:10

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

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

                                        И так много времени потратил впустую на разговоры с тобой.
                                        Не насилуй себя )


  1. Mox
    22.07.2019 19:06
    +4

    Это про США, в России нет неограниченного пула кандидатов.


    1. sshikov
      22.07.2019 19:58

      Значит, не только я вижу тут противоречие. Кстати, откуда у них пул кандидатов? В США большая безработица среди синьоров?


      1. playermet
        22.07.2019 20:28
        +1

        Имеющие работу частично входят в пул.


        1. sshikov
          22.07.2019 20:32

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


      1. DenisTrunin
        23.07.2019 07:29

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


    1. andersong
      23.07.2019 12:42

      в России нет неограниченного пула кандидатов

      В России это называют очередью за воротами))))


  1. vsantonov
    22.07.2019 19:24
    +1

    Проходил несколько раз подобные тесты, в том числе на HackerRank по специфике Sysadmin/Devops, были довольно практические задачи, например отсортировать скриптом файлы по расширению в папке. Однажды тест был вообще повторением экзамена одной красношляпой компании, где удаленную машину нужно было настроить в соотвтетствии с требованиями. Почему программистам не могут сделать так же? Может просто гугл задал этот идиотский тренд и все слепо повторяют?


    1. Anthony_K
      22.07.2019 19:43
      +1

      отсортировать скриптом файлы по расширению в папке

      э-э-э… ls -la? не?


      1. rakhinskiy
        22.07.2019 20:10

        ls -la --group-directories -X


      1. vsantonov
        22.07.2019 21:11

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


    1. snuk182
      22.07.2019 20:39

      Почему программистам не могут сделать так же?

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


      1. vsantonov
        22.07.2019 21:24
        +1

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


        1. Source
          23.07.2019 00:41

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

          Кстати, очень хороший вариант. Можно даже без уточнений во сколько раз… просто ускорить. Кто сильнее ускорит, тот и больший молодец :-)


          1. arheops
            23.07.2019 02:12

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


            1. snuk182
              23.07.2019 10:33

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


              1. PsyHaSTe
                25.07.2019 01:03
                +1

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


                1. snuk182
                  25.07.2019 12:18

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


            1. Source
              23.07.2019 12:29

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


              1. michael_vostrikov
                23.07.2019 20:30

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

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


                1. Source
                  23.07.2019 21:48

                  Эм, а конфигурацию выписать и приложить к заданию сложно что-ли? Зачем гадать? Да и, по факту, не упрётесь вы в железо в рамках тестового задания. Что вы там собрались оптимизировать за 1-2 часа, чтобы модель процессора влияла на место вашего алгоритма в общей таблице результатов?


                  1. michael_vostrikov
                    23.07.2019 22:24

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


                    1. Source
                      24.07.2019 11:50

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


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

                      Можно. Характеристики конкретных моделей никто не скрывает.


                      1. michael_vostrikov
                        24.07.2019 12:21

                        Вы такой код за пару часов не напишете, а если и напишете, то это будет говорить о вас с негативной стороны

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


                      1. PsyHaSTe
                        25.07.2019 01:08

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


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


                        Проблема в том, что в реальном проекте почти всегда будет вопрос к БД, и почти всегда каждая проблема будет уникальна. В другой раз я, например, пытался понять, почему парсер того же SQL Server ломается, если в контенте XML колонки встречаются значения с ведущими пробелами.


                        Ну и все в таком духе. Как это проверять?


                        1. Source
                          25.07.2019 11:14

                          Если что, ветка про тестовое задание на оптимизацию, как альтернативу тупым задачкам. Или вы ожидаете, что кандидаты будут решать реальные проблемы вашего продакшена за 1 час?
                          В принципе задание на оптимизацию конкретной выборки — это тоже вариант. Даёте доступ к БД, медленный запрос и задание ускорить выборку. Но если Вы сами потратили 2 дня, то странно будет ожидать, что другой человек справится за 1 час. А если справится, компания готова ему платить в 10-15 раз больше, чем Вам?


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

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


                          1. PsyHaSTe
                            25.07.2019 15:43

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

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


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

                            Подзапрос не помогает. Фишка еще в том, что запрос формируется не в SQL, а через ORM, и те же хинты использовать не получится (ORM их не поддерживает). Собственно, задача была именно в том, чтобы придумать как через имеющийся апи сделать, потому что к хранимкам на проекте относились хуже, чем к таким костылькам. На SQL можно было просто влепить left hash join в нужном месте и все бы отработало как надо.




                            Хотя сейчас я наверное какой-нибудь даппер взял и прямой запрос написал. Просто этот подход плохо дружит с паттерном query builder, который используется чуть менее чем везде.


                            1. PashaNedved
                              25.07.2019 15:52

                              Кандидатам не дают реальные задачи из юридических соображений.


                              1. PsyHaSTe
                                25.07.2019 15:59

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


                                1. PashaNedved
                                  25.07.2019 16:36

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


                                  1. PsyHaSTe
                                    25.07.2019 17:55

                                    И что?


                                    1. PashaNedved
                                      26.07.2019 01:25

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


                                      1. Druu
                                        26.07.2019 02:32

                                        Вы не можете просто так взять и использовать

                                        Так не используйте.


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

                                        Не может.


                                        1. PashaNedved
                                          26.07.2019 02:37

                                          Как скажете…


                                      1. PsyHaSTe
                                        26.07.2019 03:03

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


                                        1. PashaNedved
                                          26.07.2019 04:06

                                          в целом реальные задачи тем и хороши, что во-первых показывают уровень проблем проекта

                                          Вы правда думаете, что люди побегут рабочее решение (которое давно внедрено)

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

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

                                          Выбросите всю специфику — это реальная задача? Чем она будет отличаться от задач из мануалов.
                                          Сколько времени вы будете тратить на составление одной задачи рассчитанной на один час времени кандидата? Я думаю, минимум рабочий день. Сколько подобных задач вам понадобится составить за 1 год?
                                          Бизнес не стоит на месте, возникают новые проблемы в проектах, их тоже нужно учитывать. Задачи, как и код — их нужно поддерживать, устраняя неточности и противоречия. И в любом случае, срок годности ваших задач будет истекать довольно быстро.


                                          1. PsyHaSTe
                                            26.07.2019 04:56

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

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


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

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


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

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


                                            1. PashaNedved
                                              26.07.2019 06:50

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

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

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


                                            1. VolCh
                                              26.07.2019 07:36

                                              Вопрос по грамотному проектированию индексов в SQL будет например актуален для любой версии любой реляционной бд.

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


                                        1. VolCh
                                          26.07.2019 07:31

                                          Был такой случай:


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

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


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


                                          1. vvbob
                                            26.07.2019 09:08

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

                                            И нафига они соглашались? Пусть сокращают по закону, со всеми положенными выплатами.


                            1. Source
                              26.07.2019 12:10

                              Фишка еще в том, что запрос формируется не в SQL, а через ORM

                              Ну, это так себе фишка. Нет никакого оправдания городить днями костыли в угоду ORM для случаев, которые нормально решаются на SQL. Большинство ORM позволяют выполнить raw SQL или использовать его фрагменты в нужных местах. Если ORM этого не позволяет, то следует его отправить на другие 3 буквы ещё до старта проекта.


                          1. AlexeySoshin
                            25.07.2019 18:02

                            Так тестовые задания кандидаты тоже отказываются решать, «долго», «не хочу время тратить», «вы мне за это заплатите» :)


                            1. Source
                              26.07.2019 12:13

                              Так это не типовое тестовое задание. Тут уже есть код, который можно запустить без доп.настройки на готовом сервере. И 1-2 часа, чтобы ускорить этот код. Что успел ускорить, то успел. Поэтому долго не будет.


        1. gohan
          23.07.2019 04:22
          -1

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

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


  1. helions8
    22.07.2019 19:53
    +1

    Вопрос, мне кажется, не в задачках – они бывают разные, не только на алгоритмы. Вопрос в том, что собеседование зачастую не отбирает кандидатов, реально необходимых требуемой позиции. Нанимающая сторона зачастую не знает, как отобрать нужных им людей – мне кажется, что именно поэтому возникают негативные ощущения от собеседований. Мне очень понравилось мое же недавнее собеседование в большой банк, которое я не прошел, но было сразу понятно 1) кто им конкретно нужен 2) чем они занимаются 3) почему ни я им, ни они мне не подходят. А вот когда мелкий «стартап» начинает устраивать Google-style interview, говоря, что раз вы с задачками справитесь, то и с остальным точно справитесь, то вот тут уже возникают вопросы. За прошлый год я провел 50+ собеседований, как интервьюер, и для меня самой важной задачей было выяснить 1) проверка минимально необходимого нам уровня (ну должен он знать про хеш-таблицы) 2) границы опыта 3) хотел бы я с таким человеком работать 4) если кандидат нормальный, то дать задачку, чтобы порассуждать. Процесс постоянно надо менять и подстраивать, нужны итерации… Хороший найм и проведение собеседований — это сложно и утомительно.


  1. The_Vlad
    22.07.2019 19:54
    -17

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


    1. knotri
      24.07.2019 13:27

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


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


  1. hoack
    22.07.2019 20:21
    +1

    На самом первом собеседовании я даю задачку на HackerRank и смотрю, как кандидат ее решает. Задачку даю простую, чуть-чуть сложнее, чем FizzBuzz. Зачем? Для того, чтобы убедиться, что кандидат умеет программировать, то есть может, получив практически чистое описание несложного алгоритма, взять и закодировать его на том языке, который он выберет сам. И да, я периодически встречаю кандидатов, у которых 10 с лишним лет опыта работы, все резюме заполнено крутыми технологиями, но закодировать простой алгоритм они не в состоянии.


    1. SergeyVin
      22.07.2019 21:40
      +8

      Если отсечь откровенный обман, что тоже бывает, получается, что кандидат 10 лет не писал ни строчки, получал за это какие-то деньги, а только вы спустя 10 лет раскрыли этого сукиного сына.
      Что-то мне кажется, что это проверка не на умение писать код, а на умение работать под прессингом. Это тоже важно, не спорю. Но не лучше ли спокойно пообщаться, а потом уже разбираться: если сотрудник стрессоустойчив — будет работать с заказчиками, если нет — ну ок, оградим его от стресса, будет пилить свой модуль. Зачем людьми сразу разбрасываться? Тем более «борзый» и «стрессоустойчивый» с более высокой вероятностью кинет вашу компанию, как только получит поинтересней офер. Спокойные же разрабы будут лояльней.


      1. gohan
        23.07.2019 04:36

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

        А вдруг он «читерил»? Вдруг в гугл лазил всё это время, а надо без него уметь! Как вот прочитал тут недавно где-то в интернете байку, типа разработчик из дома работает, ну кодит и постоянно гугл открывает, что-то ищет нужное. Жена ему говорит: «А разве ты не жульничаешь? Ты же дожен сам всё это знать, а ты в гугл лазишь!»


        1. smarthomeblog
          23.07.2019 09:37

          99% кода уже написано давно. Нужно просто его найти и адаптировать для своих нужд. И да, для этого нужен и Гугл, и StackOverFlow. И ничего зазорного в том нет. ИМХО гораздо хуже, когда изобретается велосипед, который по всем параметрам хуже уже готовых аналогов, и кроме геморроя с дальнейшей поддержкой ничего не принесет.


          1. Whuthering
            23.07.2019 11:15

            Мне кажется у комментатора выше был сарказм)


            1. gohan
              23.07.2019 21:16

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


        1. GreenBee
          23.07.2019 12:25

          А в чем проблема в использовании гугла?
          Если ты еще не решал данную задачу — логично погуглить, чем изобретать велосипед.
          На том же SO можно по некоторым вопросам увидеть прямо «изобретение поезда»: вопрос задан, кто-то на него ответил, вроде даже правильно, потом в комментариях оказалось, что есть нюансы, потом оказалось, что эту задачу можно решить совершенно по-другому, потом, через пару лет, еще появился ответ с использованием каких-нить новых фич языка/инструментария.
          Умение применять существующие решения, а не изобретать свои — очень хороший навык.


      1. hoack
        23.07.2019 18:59

        Нет-нет, я не говорю про обман. Я имею в виду ситуацию, в которой человек, работая, не программирует, а модифицирует/адаптирует/клонирует чужой код. Где взял уже написанное, где на Stack Overflow сходил… Так можно очень долго работать, и даже вполне результативно. Моя цель на этом этапе совсем не вызвать стресс, поэтому я даю очень простые задачи. Ну, например, одно время давал вот такую:

        «Определим последовательность Трибоначчи как последовательность, первые 3 элемента которой равны 1, а каждый последующий равен сумме трех предыдущих. Написать функцию trib(n), которая будет возвращать n-ный элемент последовательности.»

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


        1. Kwisatz
          24.07.2019 00:09
          +1

          Конечно стресс:
          — Сам факт экзамена
          — Все эти игры с простыми/сложными задачками и кусками кода привели к тому, что не поймешь толи правда элементарщина, толи где то заныкали заковыку
          — Этот код никогда не увидит жизнь, у меня например при этом мозг начисто отключается
          — Разные критерии оценки: мне важно оформление кода и читаемость, вам оптимальность, 3ему обязательно нужно чтобы это было обернуто в класс, 4му знание математических формул и теорем, 5му знание встроенных функций языка, 6му знание плугинов/фреймворка, 7му слабодокументированных хитростей языка. И во всех этих случаях есть очень высокий шанс того, что вместо разговора двух профессионалов это превратиться в: Как, вы незнаете?!!! А вот это вы тоже не знаете? *мерзкий тон, осуждающий взгляд*. Это очень неприятно знаете ли.
          — многим, в тч и мне не нравиться писать на листочке. Нет автодополнения, писать нужно ручкой (чего многие годами не делают), текст уползает (хоть кто бы дал листок в клеточку/линеечку) итд

          ЗЫ ну вот я накидал примерчик, по-моему минуты 4 ушло, еще столько же пробелы расставлял, затолкал его в класс от нефиг делать, прописал нормальное имя (нам же читаемый код нужен, правда?), переименовывал функции чтоб читалось лучше(на листочке, ага), загуглил как пишеться Трибоначчи(«ааа, незнаете», помним, да?))

          class TribonacciSequence
            {
            public static function getElement($elementNumber)
              {
              $sequence = [1, 1, 1];
              if ($elementNumber >= 4)
                {
                return self::extendSequence($sequence, $elementNumber);
                }
              else
                {
                return $sequence[$elementNumber - 1];
                }
              }
            
            private static function extendSequence(&$sequence, $targetElementNumber)
              {
              $elCount = sizeof($sequence);
              $newElement = $sequence[$elCount - 1] + $sequence[$elCount - 2] + $sequence[$elCount - 3];
              $sequence[] = $newElement;
              if ($elCount + 1 < $targetElementNumber)
                {
                return self::extendSequence($sequence, $targetElementNumber);
                }
              else
                {
                return $newElement;
                }
              }
            }
          
          echo TribonacciSequence::getElement(10);


          Осталось 34 минуты, вспотел, переписал:

          
          function trib($n)
              {
              $sequence = [1, 1, 1];
              return $n >= 4 ? extendSequence($sequence, $n) : $sequence[$n - 1];
              }
            
          function extendSequence(&$sequence, $n)
              {
              $elCount = sizeof($sequence);
              $newElement = $sequence[$elCount - 1] + $sequence[$elCount - 2] + $sequence[$elCount - 3];
              $sequence[] = $newElement;
              return $elCount + 1 < $n ? extendSequence($sequence, $n) : $newElement;
              }
          
          echo trib(10);
          


          Осталось 32, еще переписал
          
          function trib($n)
            {
            $first = 1;
            $second = 1;
            $third = 1;
            for ($i = 3; $i < $n; $i++)
              {
              $curr = $first + $second + $third;
              $first = $second;
              $second = $third;
              $third = $curr;
              }
            return $curr;
            }
          


          Еще 30… Да пока 45 прошли я бы в ужасе был, честно говоря)


          1. Source
            24.07.2019 12:04

            У вас в финальном варианте $curr не определён при $n <= 3, и нет проверки что $n > 0
            Ну и мемоизацию не помешало бы докрутить, а то нафига всю последовательность пересчитывать при каждом вызове xD


            1. Kwisatz
              24.07.2019 12:46

              А я в курсе) Я специально убрал, чтобы было до чего докопаться. А в третьем варианте в угоду минимальному коду)

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


          1. hoack
            24.07.2019 15:55

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

            Так вот, как минимум 30%, а то и больше, кандидатов НЕ МОГУТ за 45 минут написать хоть как-то работающее решение.


            1. Kwisatz
              24.07.2019 16:43

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

              Кроме того поймите, вот вы вроде адекватен, были бы на месте, мы бы с вами обсудили. Очень часто это заканчивается не так. Либо уже на первой задаче: «а вы знали что тут можно very_rare_function_name? Как нет?» И таким тоном, что поневоле начинаешь себя чувствовать идиотом, тем более что все это знаешь же. Либо задачи сменяют друг друга до тех пор пока не возникнет такой момент.

              Однако, все еще зависит от постановки вопроса. Ну например «какие индексы бывают в PostgreSQL». Простой вопрос? По идее звучит просто, но на практике большинство разработчиков кроме b-tree в жизни своей ничего не использовали. Ну некоторые вспомнят GIN/GIST, возможно даже hash (хотя он редко упоминается во всевозможных гайдах да и пользоваться им ну очень редко кому приходится), BRIN не вспомнит никто (если вы недавно не читали документацию и то врядли). Да и сама постановка вопроса ставит в тупик: что значит какие? многоколоночные, уникальные, частичные, функциональные. Вот только часто разговор двух профессионалов и будущих коллег больше похож на допрос и тут прям простор для фантазии. А это всего лишь один простенький вопросик, к задачам еще может добавиться отсутсвие обратной связи, неочевидный синтаксис (ой а какие прелести можно вытворять с использованием магических методов в php) и разные критерии оценки.

              Посему если собеседование начинается с задачи то сразу нет. Тем более если на листочке или на н часов.


              1. VolCh
                24.07.2019 18:12

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


                1. Kwisatz
                  24.07.2019 22:08

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

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


          1. symbix
            24.07.2019 20:12

            За Whitesmiths coding style я бы сразу не взял.


            Если человеку это нравится, он очень странный!


            1. Kwisatz
              24.07.2019 21:58

              Не переживайте, я бы вас тоже не взял с таким уровнем аргументации)

              Очень странно когда компания переживает не о том насколько оптимальным/читаемым/etc будет код, а о том как будут расставлены скобочки и пробелы)

              The advantages of this style are similar to those of the Allman style. Blocks are clearly set apart from control statements. The alignment of the braces with the block emphasizes that the full block is conceptually, and programmatically, one compound statement. Indenting the braces emphasizes that they are subordinate to the control statement. The ending brace no longer lines up with the statement, but instead with the opening brace.

              Whitesmiths, along with Allman, have been the most common bracing styles with equal popularity according to the Jargon File

              Давным давно, когда я еще был маленький, отец меня учил C++ и я усердно читал книжки с листингами сишного кода, вот как раз в таком стиле. Потом были Basic,Pascal, PHP, Java, SQL etc и большая часть кода с которым работал была написана в таком же стиле. Конечно, когда я дописываю библиотеку или участвую в проекте с другим стилем я копирую его в точности, кроме жуткого легаси, где давно всем плевать.

              Вот что кстати забавно, begin/end никто не ставит на ту же строку, а вот скобочку уже очень всем хочется. Но вообще то совершенно все равно, код, кроме всего прочего, можно форматировать единым стилем при комите. А вот именование в стиле i,j,k,x,y,z уже не пофиксишь, mont/mons/mesyac уж тем более, говнокод тоже никуда не денется.

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

              ЗЫ Вы знаете, за 20 лет вы первый кто поднял этот вопрос)


              1. symbix
                24.07.2019 22:37

                Да я вообще пошутил скорее. :)


                Но, как говорится, в каждой шутке есть доля шутки. Whitesmiths style не используется примерно нигде, и человек с опытом работы в команде давно бы уже отвык, потому возникает подозрение, что кандидат "не такой, как все" и будет вечно спорить по ерунде вместо того, чтобы сделать "как тут принято". Разумеется, это проверяется провокационными вопросами, ну вот как щас :-)


                1. Kwisatz
                  24.07.2019 22:45

                  А почему нет? Читается легко)

                  Нести свет у меня нет никакого желания уже давно. Фреймоврк? Да пофигу какой, код стайл? Ссылочку. Хотя… давайте зарежем ваши богомерзкие недоБД и воткнем постгрес, да и вместо монги тоже)

                  А ну еще могу по UX попрыгать)

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


                1. PsyHaSTe
                  25.07.2019 01:16

                  Какая вам разница, как написан пример? В нормальном проекте у вас есть editorconfig/gitattributes/…, который форматирует весь код всех участников единообразно. Предъявлять человеку что у него другой стиль это… Такое.


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


                  За редкими исключениями, конечно


                  image


          1. Igor_O
            24.07.2019 22:00

            Третий вариант красив, но не работает — для N = 1, 2 и 3 выдает неопределенное значение. Нужно еще добавить в начало функции $curr = 1;
            Проверка на граничные условия — первое, что в нас пытались вдолбить на программировании на первом курсе в 1987-м году…
            Ну и да, переменные объявлять и инициализировать тоже руками приходилось в те времена, обычно…
            Причем, в первых двух вариантах вы выполнили проверку… А в третьем — почему-то проигнорировали.


            1. Kwisatz
              24.07.2019 22:15

              Потому что достаточно громоздко получится. $curr=1 подойдет только в том случае, если первые 3 равны (в этом плане в первом варианте все красиво, не хватает только проверки на >0, которую убрал намерено, чтобы посмотреть только ли это может быть причиной обсуждения). В 3 хотел специально сделать поменьше, можно еще инициализацию в одну строчку собрать но это уже перебор.


              1. Igor_O
                24.07.2019 23:02

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

                $curr=1 подойдет только в том случае, если первые 3 равны

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

                можно еще инициализацию в одну строчку собрать

                … но у нас уже исходник не на перфокартах, где каждая лишняя строчка — лишняя перфокарта, которая может не прочитаться.


                1. Kwisatz
                  24.07.2019 23:55

                  … но у нас уже исходник не на перфокартах, где каждая лишняя строчка — лишняя перфокарта, которая может не прочитаться.


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


                  1. PsyHaSTe
                    25.07.2019 01:20

                    Ну тогда объясняете человеку, что его код не будет понятен коллегам, и что вам не по пути.


              1. PsyHaSTe
                25.07.2019 01:19

                Если внимательно посмотреть, можно увидеть, что curr это и есть third, кроме случаев от 0 до 2, когда он с ними совпадает по значению.


                Поэтому можно просто заменить на return third. Нужно только чуть-чуть поправить цикл, чтобы он учел это изменение.


          1. mobi
            25.07.2019 11:51

            А как же переход к матричному формализму и быстрое возведение матрицы в степень? Или даже приведение этой матрицы к диагональному виду? (но тут, в отличие от ряда Фибоначчи, к сожалению будет комплексно-сопряженная пара собственных значений)


            1. Kwisatz
              25.07.2019 11:54

              Звучит скучно


  1. jakobz
    22.07.2019 20:27
    +20

    Ну вот я всегда когда нанимаю — прошу открыть IDE, и мы начинаем писать код. Начинаю с супер-простого. Например есть массив городов, есть строчка от пользователя. Давай найдем в ней все города. Уточнаю что все просто и без подвохов. Пишет String.Split(" "), цикл, String.Find() — пойдет. Дальше давай предположим что массив большой, какая сложность алгоритма? Ну типа сколько сравнений будет если 1000 городов и 100 слов в строке? Как ускорить? А давай сделаем поиск case insensitive. И запятые обработаем. А как бы ты ускорял поиск, если бы табличка городов была в БД?

    Такой подход позволяет сразу получить работающий код без стресса. Ну, кроме случая когда человек ну вообще программировать не умеет — бывают на первом шаге отлетают. И постепенно дойти до тонкостей — dictionary vs. hash, как устроены деревья. Ну и вообще посмотреть вживую как человек пишет — видно же сразу набита рука или нет.

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


    1. Source
      23.07.2019 00:54
      +5

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


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

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


      1. tangro
        23.07.2019 11:10

        Так а чем плох вышеуказанный подход для сеньйоров? Если за час собеседования только задавались вопросы, а до кода дело так и не дошло — ну, значит, сеньйор :)


        1. Source
          23.07.2019 12:31

          Ахах, ну как вариант )))


      1. jakobz
        23.07.2019 19:14

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

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


        1. Source
          23.07.2019 21:01

          Он просто сделает задачку быстро и четко
          String.Split(" "), цикл, String.Find()

          Вы это в контексте данной задачки считаете решением?
          Она же изначально сформулирована не как задача, а как проверка "конформизм vs профессионализм": прогнётся ли человек под вас в стрессовой ситуации, поступится ли профессиональной этикой, начав писать то, что вы просите?


          1. jakobz
            24.07.2019 16:20
            +2

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

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

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


          1. AlexeySoshin
            25.07.2019 18:18

            Решать задачи на интервью — это уже нарушение профессиональной этики? :)


      1. AlexeySoshin
        25.07.2019 18:16

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


        1. VolCh
          26.07.2019 07:36

          А сколько вообще получили оффер из сотни?


    1. MRDjeko
      23.07.2019 07:32

      Вы же описали процесс найма на позицию джуниора? Или у сеньоров такие же задачи и вопросы?


      1. AlexeySoshin
        25.07.2019 18:19

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


    1. Kwisatz
      24.07.2019 00:38

      Если бы табличка была в бд, то вы бы построили по ней индекс и не задавали таких вопросов.


      1. AlexeySoshin
        25.07.2019 18:21

        Задавал бы :)


        • Как эта таблица будет выглядеть?
        • А какой бы индекс построили?
        • А как вообще индекс в БД в целом можете рассказать?

        Задача должна быть предлогом пообщаться с человеком.


        1. Kwisatz
          26.07.2019 08:41

          А как бы вы собственно на них ответили?)

          Зы формулировка 3 более чем странная


    1. sergey-b
      24.07.2019 02:17

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


    1. ainoneko
      24.07.2019 06:53

      Уточнаю что все просто и без подвохов. Пишет String.Split(" "), цикл, String.Find() — пойдет.
      А «Великий Новгород» в массиве есть?
      А надо ли находить «Петропавловск» в «Петропавловск-Камчатский»?
      (И «Ростов» в «Ростов-папа»?)


      1. PsyHaSTe
        25.07.2019 01:27

        После таких вопросов можно переходить к более синьорским темам )


  1. JediPhilosopher
    22.07.2019 20:35
    -1

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


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


    1. Fedorkov
      22.07.2019 22:01
      +1

      По вашему опыту, какой процент потенциальных мидлов/синьоров не способны написать FizzBuzz?


      1. Assimilator
        22.07.2019 22:14
        -1

        Минимум 30%


      1. JediPhilosopher
        22.07.2019 22:17
        +4

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


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


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


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


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


        1. AlexTest
          23.07.2019 02:57
          +1

          Я обычно даю задачку — обратить массив. Это простейший пример на понимание работы с циклами и индексами.
          Ну а если он использует что-то типа array_reverse(), аналог которого есть в любом ЯПВУ, что вы тогда узнаете про
          понимание работы с циклами и индексами
          ?


          1. Whuthering
            23.07.2019 11:17

            Более того, если он не использует Array.reverse(), а сразу начнет изобретать велосипеды, то это уже минус для разработчика:)


            1. JediPhilosopher
              23.07.2019 12:10

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


              1. deespater
                23.07.2019 12:22

                Но потом я все-таки прошу сделать это ручками.

                Зачем?


                1. Kobalt_x
                  23.07.2019 12:24

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


                1. JediPhilosopher
                  23.07.2019 13:05

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


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


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


                  1. JustDont
                    23.07.2019 13:16

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


                    1. JediPhilosopher
                      23.07.2019 14:07

                      Буду рад, если вы какую-нибудь такую задачку порекомендуете. Которая не настолько общеизвестная (как FizzBuzz), не требует написания больше 5-7 строчек кода и проверяет какие-нибудь базовые навыки программирования.


                      1. JustDont
                        23.07.2019 14:51

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

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


                  1. deespater
                    23.07.2019 13:57

                    При этом в рамках собеседований достаточно сложно родить какой-то содержательный пример «из жизни»

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

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

                    И кстати, как бы вы ответили на встречный вопрос кандидата «зачем»?


                    1. JediPhilosopher
                      23.07.2019 14:11

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

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


                      с завязанными руками и без ноутбука

                      Почему без ноутбука-то? Я как раз и пишу, что даю ноутбук с IDE и подготовленным проектом.


                      И кстати, как бы вы ответили на встречный вопрос кандидата «зачем»?

                      "Небольшая проверка на ваше умение писать простой код".


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


                      1. deespater
                        23.07.2019 14:21

                        но это как правило довольно нетривиально — суметь упаковать что-то несинтетическое в несколько строчек кода

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

                        Небольшая проверка на ваше умение писать простой код

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

                        Да простой вопрос «а напишите map/reduce по таким-то условиям» уже на порядок лучше чем «разверните массив не пользуясь компилятором»

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

                        Так может вам процессы пооптимизировать? Скрининг ввести, чтобы таких кандидатов отсеивать.

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


                        1. JediPhilosopher
                          23.07.2019 15:02

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


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


                      1. pprometey
                        23.07.2019 14:44

                        del


                    1. wataru
                      23.07.2019 15:35

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


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


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


                      1. PsyHaSTe
                        25.07.2019 01:33
                        +1

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


                        1. AlexeySoshin
                          25.07.2019 18:31

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


                  1. PsyHaSTe
                    25.07.2019 01:32

                    Затем, что программирование это не только перекладывание из коллекции в коллекцию и вызов пары-тройки методов API.

                    Как правило, оно и есть.


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

                    Ну вот эту задачу и задавайте. Хотя я бы её так и решал xs.filter().group_by().map()....


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


                1. serge-phi
                  23.07.2019 14:12

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


                1. AlexeySoshin
                  25.07.2019 18:24

                  Предлагаете кандидата сразу брать? Пришел — молодец, нанят? :)


            1. dominigato
              23.07.2019 12:27

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


        1. Xander_Vi
          23.07.2019 11:47

          Обратить массив?
          Не знаю, насколько сложно это реализовать в других языках, но в Python это не просто одна строчка — это буквально 6 символов (без учета названий переменных): reversed_list = input_list[::-1]


          1. Andrey_Dolg
            23.07.2019 11:53
            +1

            input_list.reverse()
            Всё же лучше.


      1. PsyHaSTe
        25.07.2019 01:29
        +1

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


        1. AlexeySoshin
          25.07.2019 18:34

          Существуют :)


          Даже тут полно товарищей "я уже знаю один язык, работу найду, больше и не нужно".


  1. borv
    22.07.2019 20:38
    +5

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


    Я думаю упражнения — это хорошо, но есть один нюанс. Проходить они должны в нормальных рабочих условиях, максимально приближенных к боевым. Как часто вы impromptu будете объяснять комнате полной инженеров как манипулировать двоичными деревьями? А кодить по тимвьюверу на чужой машине, параллельно объясняя ход своих мыслей? А как на счет оптимизации кода под конкретный GC без телеметрии? Может подъем кубов с масштабируемой трехзвенкой с нуля в проде за час? Вы правда именно так работаете? Если ответ — реально "да", то, простите, я ваш вертеп укурков не пойду работать ни за какие деньги. Если "нет" — тогда зачем весь этот цирк с конями? Что вы проверяете?


    Куда более реалистично — поговорить про задачу у доски, придумать дизайн и уйти кодить, а через день принести код на ревью. Собственно у нас есть упражнение на дизайн (на доске, с группой из 4 человек) и задача часов на 4-6 которую надо сделать дома и прислать на ревью. Оба упражнения очень близки к тому, что реально делалось когда-то. Мне этот подход сразу показался адекватным, что существенно повлияло на мое решение работать с ними. После 2 лет в коллективе — не жалею ни разу. Контора (внезапно!) тоже оказалась очень адекватной, и по режиму работы, и по отношению к инженерам, и по компенсации.


    В интервью очень многое — дань моде, к сожалению. Раньше было модно думать за пределами коробки, потому были круглые люки и автобусы набитые шариками. Сейчас модно хипстерство и коллаборешн, поэтому задачки и интерактив. Завтра будет найм только через нетворкинг и по количеству звезд на гитхабе. Если контора гоняется за трендами как ошпаренная, десять раз подумайте есть ли смысл там работать за +15К в год.


    1. PsyHaSTe
      25.07.2019 01:37

      Куда более реалистично — поговорить про задачу у доски, придумать дизайн и уйти кодить, а через день принести код на ревью. Собственно у нас есть упражнение на дизайн (на доске, с группой из 4 человек) и задача часов на 4-6 которую надо сделать дома и прислать на ревью. Оба упражнения очень близки к тому, что реально делалось когда-то. Мне этот подход сразу показался адекватным, что существенно повлияло на мое решение работать с ними. После 2 лет в коллективе — не жалею ни разу. Контора (внезапно!) тоже оказалась очень адекватной, и по режиму работы, и по отношению к инженерам, и по компенсации.

      Подход хороший, но ИМХО предельное время на задачу — 1-2 часа, причем желательно и собеседующего, и собеседуемого, иначе это какая-то домашняя работа строгого учителя. "Разошлю сотне претендентов задачку, пусть помучаются". И потом 2 минуты на проверку каждой.




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


      1. AlexeySoshin
        25.07.2019 18:38

        Как software architect, именно так и стараюсь делать :)


        Правда стараюсь не на бумажке, а на доске, но если кандидат очень хочет — можно и на бумажке, конечно.


  1. botyaslonim
    22.07.2019 20:54
    +1

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

    А те ребята ещё спустя где-то полгода всё искали человека. И потом ещё через год искали.

    ps. Думаю, более-менее разумным выходом были бы сертификации в авторитетных центрах. Что-то типа прошёл двухнедельные курсы, показал себя со всех сторон, порешал сложные задачи, получил лычку и право называться senior. Тогда и собеседующим было бы спокойнее. Смотрели бы на собесах soft skills и мотивацию кандидата, а не знание на память всех встроенных методов. Но до этого, очевидно, далеко.


  1. musicriffstudio
    22.07.2019 20:59
    -2

    Нытье какое-то.


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


    Да, они сами не пройдут такое же точно интервью у такого же горе-программаста.


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


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


    Это ж на один раз.


    1. AlexeySoshin
      25.07.2019 18:39

      И как успехи, где уже квест прошел? Google/Facebook/Netflix, Uber/Microsoft/Amazon хотя бы? :)


  1. CrushBy
    22.07.2019 20:59
    +11

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


    1. Hydro
      22.07.2019 23:28

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


      1. CrushBy
        23.07.2019 07:59

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


        1. VolCh
          24.07.2019 12:17

          Или что-то другое достало. Или просто не видит дальнейшего роста. Ещё сркращения бывают.


  1. VGoudkov
    22.07.2019 21:01

    Мы вот тоже, после некоторого количества неудач, решили, что раз мы нанимаем программиста — он таки должен уметь программировать! И сделали класс с заготовками методов, заданиями в виде JavaDoc и тестами TestNG, которые проверяют результаты.Первый метод — реализовать тело FizzBuzz, далее задачки чуть хитрее (но все из практических ситуаций), в пределах стандартной библиотеки Java. Кандидату предоставляется ноутбук с IDEA, изображение дублируется на проектор в переговорке. Вопросы задавать можно, гуглить тоже. Обычно кандидаты справляются за 15-40 минут.
    Интересен не столько достигнутый результат (все тесты зелёные), сколько способ решения задачи / кодирования. Если предложенный вариант решения мягко говоря странен — начинается дискуссия по возможным улучшениям и/или краевым случаям, что позволяет оценить опыт кандидата и количество косяков в production, которые от него можно ожидать.
    Экономит просто ТОННЫ времени и нервных ресурсов на собеседованиях и неплохо отделяет тех, у кого код на кончиках пальцев, от заучивших ответы про устройство HashMap.


    1. sergey-b
      24.07.2019 23:14

      Можно мне к вам на собеседование прийти?


    1. AlexeySoshin
      25.07.2019 18:41

      Это один из наиболее здравых подходов, кстати. Видел такое у OLX и Atlassian как минимум.


    1. VolCh
      26.07.2019 07:39
      +2

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


  1. moonster
    22.07.2019 21:01

    Год уже как участвую в найме — провожу техническое интервью. Никакой теории не спрашиваю, сплошная практика.
    За отпущенные 2 часа большинство не успевает.
    Всего две задачи, можно использовать IDE.
    Первая — разработать некий сервис + тесты, из сложностей — нужно уметь читать требования на английском, иметь базовые навыки многопоточного программирования, уметь писать юнит-тесты. Разрешаю пользоваться документацией, даже гуглить при сильных затруднениях.
    Вторая — до 20 строк забагованного кода, нужно почитать и найти косяки (уже без документации).
    Обе задачи вполне себе боевые, первая имитирует процесс разработки, вторая — кодревью.
    За год я смог одобрить 9 человек, прошло через меня несколько десятков.
    А резюме почти у все были хорошие. Многообещающие.
    Зато многие кандидаты говорят, что это был их лучший собес за все время. )))


    1. dominigato
      22.07.2019 21:27
      +7

      Если бы это делалось дома, я бы еще согласился. Но пока человек сидит под стрессом интервью, это никак не «имитирует процесс разработки». У вас все разработчики пишут сервисы под вашим пристальным взглядом и на время?
      Интервью может быть только тогда репрезентативным, когда максимально имитирует рабочие условия, тогда вы можете экстраполировать и предположить что человек так и будет работать.
      Хотя даже и это не панацея — я как-то брал работника и было все хорошо первые полгода, а потом оказалось что он не понимает что такое работа вообще. То есть делать что нужно на работе и что от тебя требуют — это как-то странно, нужно же делать что тебе хочется и интересно. Даже если результатов нет, главное — процесс. Кстати, технически он был подкован на все 100.
      Вот такие вещи нужно на интервью узнавать, а не сортировку пузырьком. Я пузырьком научу за 10 минут, а работать человека уже вряд ли кто-то научит.


      1. moonster
        22.07.2019 23:30
        +1

        У вас все разработчики пишут сервисы под вашим пристальным взглядом и на время?
        Таки да. Сами при планировании дают оценки, а потом иногда укладываются в них. Непосредственно во время разработки наблюдения нет, зато потом перекрестное code review проходят вообще все, разработчики, лиды, архитектор. Причем люди уже поняли, что тащить сомнительное себе дороже, если нужна ранняя критика — сами придут к коллеге и попросят взглянуть.

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


        1. dominigato
          23.07.2019 00:36
          +1

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


          1. moonster
            23.07.2019 01:22

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


            1. dominigato
              23.07.2019 02:55
              +1

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


      1. AlexeySoshin
        25.07.2019 18:44

        Так домашние задания тоже не хотят делать :)


        1. dominigato
          25.07.2019 19:28

          А вы хорошо попросите :)
          Задания тоже разные бывают. Мне тут недавно дали одно, которое взяло бы примерно недели две фул-тайм. Я, конечно, рад узнать новое и потренироваться, но блин, надо же совесть иметь. Я не могу взять отпуск только чтобы ваше задание делать.
          Я в другом месте дали примерно на неделю по вечерам, и технологий много и довольно бесполезное, то есть не оставляет впечатления что ты работаешь забесплатно на это компанию. Вполне нормально
          А то есть любители раздавать свои баги и проблемы в продакшне в качестве «домашних заданий».


          1. AlexeySoshin
            25.07.2019 22:50

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


            Сам даю обычно написать сервис на три endpoint'а буквально: create/get/getAll
            Persistence — как бонус. Даже тесты бонусом.


            И все равно многие отказываются писать :)


        1. VolCh
          26.07.2019 09:26

          Из заданий, которые делал в последние годы:


          • написать интерпретатор простого языка. Решил использовать наконец-то полученные кучу лет назад по теории трансляторов, все эти парсеры, токенайзеры, токены, AST и т. д. Бонусом было компиляция скрипта в LLVM
          • написать простой CRUD на голом PHP. Применил по полной SOLID, продублировав частично PSR интерфейсы, создал adhoc DataMapper ORM+identityMap+UnitOfWork c детектором изменений (Doctrine/Hibernate like в общем), DI-контейнер и т. п.
          • написать программу выявления десинка частот часов двух нод на ассемблере с очень ограниченным набором команд. Говорили что использовали систему команд каких-то реальных процессоров, но по ощущениям даже если так, то сильно порезали

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


    1. siziyman
      22.07.2019 21:45
      +6

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


      1. moonster
        22.07.2019 23:23

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


      1. moonster
        22.07.2019 23:41

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


        1. siziyman
          23.07.2019 00:02

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


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


          1. moonster
            23.07.2019 01:05

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

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

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

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

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


            1. siziyman
              23.07.2019 09:58

              Знакомые мне хорошие джава-джуны более чем достойно знают стандартную библиотеку. Да и сам я джавист.


              1. moonster
                24.07.2019 03:19

                Видимо, джуны могут быть очень разными. Я никогда не видел таких хороших джунов, но это не значит, что их не бывает. )


        1. 0xd34df00d
          23.07.2019 02:53

          Написать парсер json или чего-то json-подобного.
          Наваять обёртку вокруг mmap, которая прикидывается pod-типом.
          Написать свой std::any. Или optional.


          На проектирование, увы, придумать сложнее.


          1. moonster
            23.07.2019 03:54

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


            1. 0xd34df00d
              23.07.2019 03:59

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


          1. Skerrigan
            23.07.2019 08:16

            Не сам парсер, но «инструмент выборки/обработки», близкий к полному, писал сам в 2014-ом, когда еще не знал про JSONPath… ну чтобы «как в jQuery все было» (по селекторам).
            Году в 2017 гугл в поисковой выдаче выдал JSONPath и… весь мой код спокойно был пересажен на опенсорсную библиотеку, без правок на моей стороне (по селекторам). Я доволен :)


          1. PsyHaSTe
            25.07.2019 01:43

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


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


    1. grinCo
      23.07.2019 05:58

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

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


      1. moonster
        23.07.2019 18:59

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

        А средняя зарплата — это какая, по вашему мнению?


        1. grinCo
          23.07.2019 20:18

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


          1. moonster
            24.07.2019 03:21

            РФ, СПб, никаких супертехнологий, сплошной опенсорс — spring, activiti, drools, mongodb, ну и по мелочи всякое.


            1. grinCo
              24.07.2019 10:57

              Для РФ я могу только ориентироваться на исследования в интернете и те предложения, которые я получал оттуда. Поэтому я не могу считаться авторитетом в этом вопросе. 150К выглядит медианой для среднего синьера в СПб.

              Я из Беларуси и мне кажется эта цифра слишком заниженной.

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


  1. dominigato
    22.07.2019 21:18
    +6

    Собеседования это единственное что плохо делают в ИТ и причем делают это хуже и хуже. Все таки для этого нужны какие-то базовые знания не только в технологиях, а и в психологии. Пока программисты будут собеседовать, ничего улучшаться не будет.
    Это какой-то идиотизм что для интервью нужно готовиться, выпускают специальные книжки, ожидается что люди будут читать эти книжки, проходить курсы, а потом интервьюеры будут задавать вопросы по этим книжкам, получать отверы по этим книжкам и все будут довольны. То, что человек готов к интервью мы выяснили, а готов ли он к работе — это не столь важно, да и времени на это уже нет.
    Я постоянно хожу на интервью чтобы не потерять скилл и быть в курсе последних веяний, и сам интервьирую постоянно. Положение — ужас, хотя может и не ужас ужас ужас. (Я помню времена когда на интервью надо было толпой лего собирать.) Полно неадекватных интервьюеров, случайный людей которых вообще к интервью нельзя подпускать, идиотские вопрос не имеющие отношения к реальности и работе, но зато повторяющиеся от компании к компании, как будто они все ищут в гугле «что задать на интервью если я вообще не при делах» и все открывают один и тот же первый линк.
    Большинство как понимаю просто тупо повторяет то, что спрашивали их самих и сам процесс интервью, что только закрепляет идиотские традиции. Есть большая часть доморощенных «психологов», которые считают себя пупом земли и что они «знают жизнь и людей», и это вообще какое-то жалкое зрелище.
    Про ХР я даже не говорю, дай бог если одну-две нормальных видел. Эти вообще все невежды и профессионализмом там даже и не пахнет. Так как они знают что ведут себя по-любительски и ничего не понимают в своей области, они еще пытаются скрыть это и просто докапываются до кандидатов всякими недо-психологическими трюками, прочитанными вчера в брошюрке «стань ХР за 2 минуты».
    Раздражает тенденция интервьюеров спрашивать на интервью то, что они сами только вчера узнали, или даже так и не узнали толком. Зачем делать интервью, которое ты бы сам не прошел позавчера? Понтов накидать?
    Вообще положение аховое, думаю надо открыть контору которая будет профессионально отбирать людей для вакансии, а компании надо будет только ознакомительнор интервью сделать. Так как похоже почти никто на рынке не умеет отбирать людей — ни гугл, ни амазон, ни банки, ни стартапы. У всех свои дебильные заморочки как оно должно быть, но никакого понимания даже и близко нет. Думаю всем было бы удачнее просто кидать жребий и так был бы больший шанс нанять лучшего работника.
    Наболело.


    1. JediPhilosopher
      22.07.2019 22:45

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

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


    1. siziyman
      23.07.2019 00:05

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


      1. dominigato
        23.07.2019 00:46
        +2

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


        1. DrPass
          23.07.2019 00:53

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

          Вообще, многим и прятать-то нечего :) Процент бестолковых людей, он ведь примерно одинаков, как среди эйчаров, так и среди программистов.


  1. SergeiGarbar
    22.07.2019 23:29
    +2

    я ни фига не понял. джунов не берут, сениоров не берут. WTF?


  1. chilicoder
    22.07.2019 23:41
    +3

    У вас есть выбор
    1) Ходите на собесы в нормальные конторы, где люди ищут себе коллег и готовы общаться по вашему опыту и проектам
    2) Если хотите конкретно в Google, Amazon, Facebook, Netflix и тд прекратите ныть и примите их правила игры.


  1. DrPass
    23.07.2019 00:06

    Я вот один из тех, кто задаёт задачки на интервью :) И я не тупой эйчар. Я сам программист, сам ненавидел решать задачки на интервью, хотя и решал. Знаете, почему я их даю? Это не идеальный, но достаточный фильтр. Который:
    1. Может не пустить хорошего специалиста, который теряется, когда испытывает стресс на собеседовании
    2. Может не пустить хорошего специалиста, который, блин, вот сегодня сам забыл, как инвертировать бинарное дерево, и придумать не успел.
    3. Может отпугнуть хорошего специалиста, который считает, что ему негоже решать такие задачки и вообще это жуткий моветон, а такой работодатель — отстой.
    Но
    4. Люди, которых этот фильтр пропустил, не теряются в стрессовых ситуациях, они не из тех, кто не сложит себе цену, и, блин, они реально умеют программировать!
    Так что я буду задавать задачки и дальше. Я переживу, если упущу какую-то звезду, есть и другие звёзды.


    1. dominigato
      23.07.2019 00:51
      +6

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


      1. DrPass
        23.07.2019 00:55

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

        Прекрасно. Это именно то, что надо, вообще-то это и называется «уметь программировать» :)


        1. dominigato
          23.07.2019 01:05
          +3

          ОК, значит у нас разные понятие что такое «уметь программировать» :)
          Мне только интересно — сколько тасков у вас в компании содержат задачи на хакеранке и сколько задач на бинарные деревье в спринт? Сколько раз в день надо писать фибоначчи? Просто любопытство :)


          1. DrPass
            23.07.2019 01:11

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


            1. Source
              23.07.2019 01:24

              Но есть одно «но»: человек, который умеет решать подобные таски, решит и любые другие.

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


              1. DrPass
                23.07.2019 01:36

                Не прикалываюсь. Умение соображать ведь не единственное требование к программисту, который метит в миддлы и сеньоры. Знание матчасти ведь никто не отменял :)


                1. PashaNedved
                  23.07.2019 02:06

                  Умение соображать проходить собеседования


                  1. DrPass
                    23.07.2019 02:33

                    Умение соображать проходить собеседования

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


                    1. dominigato
                      23.07.2019 02:45

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


                      1. DrPass
                        23.07.2019 02:54

                        Алгоритмов очень ограниченное число, алгоритмов которые спрашивают на интервью — очень ограниченное число.

                        Откуда тогда в природе берутся те ребята, которые тест FuzzBuzz на собеседованиях не проходят?


                        1. dominigato
                          23.07.2019 03:04

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


                    1. PashaNedved
                      23.07.2019 02:49

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

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


                      1. DrPass
                        23.07.2019 02:55
                        +1

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


                        1. pprometey
                          24.07.2019 07:38

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


                1. Source
                  23.07.2019 12:04
                  +1

                  И как из этого следует "решит и любые другие"? Другие задачи на то и другие, что они принципиально отличаются.


            1. dominigato
              23.07.2019 02:40

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

              Это очень наивно так думать, мягко говоря. Как и в любых делах, люди подгоняют результат под определенный KPI. Так и здесь — они умеют решать данную задачку на хакеранке, вряд ли они ее сами и решали вообще. Но смогут объяснить вам где-то подсмотренное решение как свое, не проблема.
              Никакого отношения к любым другим таскам это не имеет и умения другие задачи решать это не означает.
              Не знаю зачем писать «код по сохранению данных с формы в базу.» на интервью вообще, но если это и есть ваши 90% тасков, то зачем вы спрашиваете про бинарные деревья, бектрекинги и т.д.? На тот единственный таск в год, когда понадобится что-то нестандартное, он что-нибудь нагуглит уже.
              Мне хотелось бы провести опрос среди интервьюеров, на соотношение работы которая включает навыки, о которых они спрашивают на интервью и работы, которая не включает. Прям конкретно по вопросам: сколько времени потрачено в спринтах на задачи с обходами деревьев, фибоначчи, рекурсией, переворачиванием бинарных деревьев и т.д.
              А сколько на вычищение легаси, составление докерфайла, изучение очередного АПИ с реверс инжинирингом, влезание в недра какого-нибудь линукс модуля, составлением хмл рамочки и т.д.


              1. DrPass
                23.07.2019 02:53

                Это очень наивно так думать, мягко говоря.

                1. Нельзя наизусть выучить решение задачи, не поняв «фишку» их решения. Вернее, можно, но это сложно, долго и непродуктивно. Вероятность встретить подобного «шулера» ненулевая, но ей можно смело можно пренебречь.
                2. Я с 2010 года собеседую людей, с тех пор как получил свою первую команду. Этот критерий меня ни разу не подводил. Последний довод для меня в сто раз убедительнее всех ваших рассуждений, так что уж не обессудьте, но вы ошибаетесь :)
                но если это и есть ваши 90% тасков, то зачем вы спрашиваете про бинарные деревья

                Затем, что как раз те оставшиеся 10% тасков, которые требуют включения мозгов, определяют, насколько софт работает эффективно и надежно. Это не один таск в год. Речь не о тому, что программисту там нужно будет перебалансировать B-дерево или что-то отсортировать вручную. Но, например, у него не будет готовой библиотечной функции для быстрого расчета прогноза по складским остаткам, ему нужно будет составить эту страшную штуку под названием «алгоритм», которая учитывает различные стадии выполнения заказов продажи и закупки с определённой вероятностью.


                1. dominigato
                  23.07.2019 03:14

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


                  1. DrunkBear
                    23.07.2019 12:04

                    Может, это проблема в задачах на испытательный срок?
                    Везде, где устраивался, в задачах были прописаны:
                    1. Получить допуски и прочитать доки
                    2. Реализовать и зарелизить фичу №1 ( с использованием половины тех.стека)
                    3. Реализовать и зарелизить фичу №2 ( используя оставшуюся половину технологического стека)
                    Итого: к концу испытательного срока я уже знаю весь процесс выпуска в прод, прошёл пару раз кодревью, у меня развёрнут и настроен git/svn/jira, я показал свои навыки по всему стеку технологий, с которым дальше буду (или не буду) работать, пообщался с командой — и здесь уже легко понять, нужны ли мы с этой командой друг другу или пора расставаться.


                    1. dominigato
                      23.07.2019 12:17

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


                      1. DrunkBear
                        23.07.2019 13:12

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


                        1. dominigato
                          23.07.2019 13:26

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


                          1. DrunkBear
                            23.07.2019 15:10

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


                1. senglory
                  23.07.2019 15:49

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


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


                  1. DrPass
                    23.07.2019 16:34

                    Осмелюсь спросить, вы с китайцами или индусами дело имели?

                    Эээ, а причем тут китайцы или индусы? Я не в гугле работаю.


                    1. senglory
                      23.07.2019 21:29

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


            1. 0xd34df00d
              23.07.2019 02:59
              -1

              Не, ну.


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


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


              1. DrPass
                23.07.2019 03:01
                +2

                Вас я не найму. Вас я знаю, вы вредный


    1. symbix
      23.07.2019 01:15

      Это работает для миддлов, но совершенно не работает для senior-ов. Когда я там в последний раз инвертировал бинарное дерево вручную? Лет 20 назад? Не, ну соображу, конечно, если буду сидеть за ноутбуком и писать в IDE, но у доски с маркером — вот не знаю, может, и нет. И при этом то, что действительно требуется от senior-а, это не проверяет вообще.


      Я на скайп-интервью прошу расшарить экран и, да, даю задачки, но простые (такие, которые любой нормальный программист уж точно решит в уме за 2-3 минуты и останется только код написать), разрешаю пользоваться привычной IDE, гуглить что угодно, кроме решения задачи, и смотрю на то, как человек работает в привычных ему условиях. Из того, как именно он работает в IDE, как мыслит, как пишет код, как называет переменные и функции, как по коду перемешается, если гуглит, то на английском ли, — сразу все ясно.


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


      1. GDXRepo
        24.07.2019 01:11

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


        1. symbix
          24.07.2019 20:24

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


  1. PashaNedved
    23.07.2019 01:18

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


    1. cry_san
      23.07.2019 06:19

      Русскому языку вы тоже так и не научились…


  1. agalakhov
    23.07.2019 02:26
    +1

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


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


    1. JustDont
      23.07.2019 09:24

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

      Есть еще такие штуки, как понятность кода и границы применимости. Если вам надо обработать 10 элементов в худшем случае, то от того, что кто-нибудь очень «глупый» сделает эту обработку в лоб простым и легко читаемым способом за О(N!) — ничего важного для кода не изменится. Зато потом другие люди на этом месте не будут спотыкаться об код.

      Нет ничего более печального, чем видеть лес красно-чёрных деревьев, который «ускоряет» работу кода, вызываемого один раз с 0.01ms до 0.005ms.


      1. agalakhov
        23.07.2019 11:17
        +2

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


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


        Самое печальное, что приходилось видеть — это когда говорили "ой, да у меня 10 элементов в худшем случае", а потом оказывалось, что 20 ("всего-то в два раза ошиблись"), а потом "ой-ой-ой, а что это оно зависло?" (ну правильно, 10! и 20! — как бы некоторая разница есть). А потом появляются посты про то, как плохо написан софт, что за время обновления винды можно было бы ее трижды с нуля переставить. Это ведь вот оно и есть.


        Типичный пример выглядит так: вот надо человеку пробить строки по черному списку. Кто в курсе, тот понимает: "ага, тут подойдет Ахо-Корасик", расчехляет готовую библиотеку и решает задачу в две строки. Кто не в курсе, пишет for и получает там же 100 строк, да еще медленно работающих. Когда приходит жалоба ("тормозит"), начинает "оптимизировать" эти строки (ну профилировщик же на них указывает!) и "оптимизирует" до тех пор, пока не начнет глючить. В нашей практике был случай, подобный плохо написанный код год (!) пытались исправить, прежде чем согласились, что вывести и доказать алгоритм было бы быстрее (на митинге тогда говорили "да ну, мы сейчас за два дня пофиксим, а алгоритм две недели писать будем").


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


        1. Fedorkov
          23.07.2019 11:41

          Кто не в курсе, пишет for и получает там же 100 строк, да еще медленно работающих.
          Кто не в курсе, гуглит %framework_name% multiple substring search.


        1. michael_vostrikov
          23.07.2019 21:42

          Типичный пример выглядит так: вот надо человеку пробить строки по черному списку
          ага, тут подойдет Ахо-Корасик

          Типичное решение выглядит так:


          Вариант 1


          SELECT * from black_list WHERE value IN (...)

          Вариант 2


          $hashTable = array_combine($blackList, $blackList);
          $rowsFromBlackList = [];
          foreach ($rows as $row) {
              if (isset($hashTable[$row])) {
                  $rowsFromBlackList[] = $row;
              }
          }

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


          1. DrunkBear
            24.07.2019 09:36

            Первый вариант — типичное медленное решение при больших объемах таблицы и / или большом количестве строк для проверки в in ( а в случае с mssql + запросом размером больше 8 кб — не работающее).
            Не проще ли создать временную таблицу с value_hash, заполнить её хэшами и сделать inner join по value_hash?
            В самом ленивом случае — добавить триггер on after insert, который сам будет хэшировать value во временной таблице.
            C индексом по value_hash этот вариант переживёт и 10, и 10! значений для проверки.
            PS для варианта с небольшим черным списком, который не расширяется и не будет расширяться — подойдёт любое решение.

            SELECT b.* 
            from black_list b 
            inner join value_hash_tmp t on b.value_hash=t.value_hash  


            1. michael_vostrikov
              24.07.2019 11:40

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


      1. agalakhov
        23.07.2019 11:23

        BTW, если каждый код, который вызывается один раз, ускорить с 0.01ms до 0.005ms, это даст двукратный рост производительности программы в целом. Для этого вовсе не надо переписывать сотни алгоритмов, так как алгоритмы обычно повторяются, и достаточно нескольких хорошо написанных дженериков. (И очень странно, если их приходится писать самому, обычно все уже написано до нас.)


        1. JustDont
          23.07.2019 13:24

          BTW, если каждый код, который вызывается один раз, ускорить с 0.01ms до 0.005ms, это даст двукратный рост производительности программы в целом.

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

          Сам по себе «рост производительности программы» не имеет значения. Да хоть тысячекратный. Зато очень даже имеют значение усилия, которыми это будет достигнуто: если вы ради этого написали так, что ваш код плохо понимают коллеги, резко упал bus factor, и надо нанять второго спеца вашего уровня только для того, чтоб проект не встал, если вы уйдете — это всё имеет выразимую стоимость в деньгах. Тысячекратное ускорение, если имеющейся скорости было достаточно — не даёт ничего.


          1. agalakhov
            23.07.2019 18:35

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


            1. JustDont
              23.07.2019 18:58
              +1

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


            1. PsyHaSTe
              25.07.2019 02:01

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


              1. VolCh
                25.07.2019 06:26

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


      1. wataru
        23.07.2019 12:46

        Соглашусь с ответом Вам выше: Часто наивный полный перебор длиннее и непонятнее умного алгоритма. Сам с таким кодом встречался. Рекурсивный перебор был 100 строк сильно запутанного кода, когда как весьма простое динамическое программирование было всего 20 строк, из которых 5 — комментарий, полностью описывающий все происходящее, что даже человек ни разу в жизни не видевший ДП, мог бы нагуглить и все понять.


        1. JustDont
          23.07.2019 13:28

          Часто наивный полный перебор длиннее и непонятнее умного алгоритма.

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


          1. wataru
            23.07.2019 15:15

            Ахо-корасика писать не надо — он уже 100500 раз написан в библиотеках. Но знать, что есть какой-то алгоритм поиска среди набора строк, который работает сильно быстрее чем цикл for — надо.


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


            1. agalakhov
              23.07.2019 18:44

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


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


            1. PsyHaSTe
              25.07.2019 02:03

              Ахо-корасика писать не надо — он уже 100500 раз написан в библиотеках. Но знать, что есть какой-то алгоритм поиска среди набора строк, который работает сильно быстрее чем цикл for — надо.

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


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


      1. AlexSky
        23.07.2019 22:55
        +4

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


    1. Druu
      24.07.2019 09:44

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

      Каким образом обучение программированию и самообразование связано с решением учебных задач?


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

      Какой способ может быть проще, чем перебор в лоб?


      Тут как раз показывали пример "найти недостающее число". Умный просто просуммирует числа и вычтет, а глупый начинает сортировать.

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


  1. sergey-b
    23.07.2019 03:07

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


    Затем я полученное решение проверяю часа 4, выдаю кандидату список замечаний. Даже если задача сделана прям идеально (хотя такого не бывает), я чего-нибудь напишу по принципу "почему без шапки". Затем по телефону, или на 2-й встрече мы все эти замечания с ним вместе обсуждаем.


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


    Такой подход дает хорошие результаты, но чрезвычайно трудоемок.


    1. dominigato
      23.07.2019 03:16

      Затем я полученное решение проверяю часа 4

      В смысле? Сидите с кандидатом и проверяете вместе? Почему 4 часа?


      1. sergey-b
        23.07.2019 03:19

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


        1. dominigato
          23.07.2019 03:27

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


          1. sergey-b
            23.07.2019 03:44

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


      1. sergey-b
        23.07.2019 03:21

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


    1. VIkrom
      23.07.2019 06:03

      Многие соглашаются потратить дополнительно 3 часа личного времени? Или вы из компании, куда все хотят? )


      1. sergey-b
        23.07.2019 07:58

        Пока только один отказался из 40 человек за 1,5 года.


      1. sergey-b
        23.07.2019 08:18

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


        1. VIkrom
          23.07.2019 08:24

          Ну тогда перформулирую) Многие ли в результате присылают какое-либо решение?


          1. sergey-b
            23.07.2019 08:26

            Да, многие. Задачи даются специально очень простые.


    1. xPomaHx
      23.07.2019 07:22

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


      1. sergey-b
        23.07.2019 07:56

        Да вы что. Обычно вообще никакого фидбека нет. Спасибо. Мы вам позвоним. Даже если возьмут на работу, фидбека, скорее всего не будет.


        1. Skerrigan
          23.07.2019 08:31

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


        1. vvbob
          23.07.2019 09:32

          Увы, даже в приличных вроде-бы фирмах это сплошь и рядом. Просто после интервью молчание.


    1. PsyHaSTe
      25.07.2019 02:05
      +1

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

      Пожалуй, к вам бы я не пошел.


      1. sergey-b
        25.07.2019 02:28

        Почему? Не воспринимаете критику?


        1. PsyHaSTe
          25.07.2019 02:32

          Только аргументированную. И когда "код написан идеально", а критика есть, значит это неаргументированная вкусовщина.


          1. sergey-b
            25.07.2019 02:50

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


            1. PsyHaSTe
              25.07.2019 03:05

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


              1. sergey-b
                25.07.2019 03:18
                -1

                Э-э-э. Вы не поняли фишку. Это психологический прием. Чувак написал идеальный код. Ждет заслуженную похвалу. А вместо этого бац: "Почему импорты со звездочками?" Его переполняют эмоции. Он вместо того, чтобы спокойно выбирать между похожими оферами, сидит и думает, как же это возможно. И тут ему предлагают все замечания конструктивно обсудить, обсуждают, у него появляется возможность проявить свои софт-скиллы, он побеждает в деловом споре, и позиция в нашей команде для него начинает ассоциироваться с победой.


                1. PsyHaSTe
                  25.07.2019 03:52
                  +1

                  Я и говорю, дешевый психологический трюк, ориентированный непойми на кого.


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




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


                1. Druu
                  25.07.2019 05:46
                  +1

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


                1. Fedorkov
                  25.07.2019 08:19

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


  1. Heian
    23.07.2019 07:31

    Почему Senior Developer'ы не могут устроиться на работу

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

    P.S. Статью не читал


    1. White_Scorpion
      23.07.2019 15:19
      +1

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


      P.S. Мож и заинверсирую — лень пробовать :).


  1. OvkHabr
    23.07.2019 07:40

    А я был поражен одним собеседованием в корпорации на «Аналитика с навыками разработчика».
    Не проверяли вообще ничего. Всему верили на слово.
    Примерно так:
    — Вы говорите на китайском?
    — Да. Поговорим по-китайски?
    — Нет, зачем? (Ставит плюсик)

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


  1. FluktLight
    23.07.2019 07:40

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


  1. ohyou
    23.07.2019 07:40

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

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


    1. PsyHaSTe
      25.07.2019 02:09

      Что если флоу правда состоит в том, что ПО создает задачки в ютреке, которые техлид потом декомпозирует?


      1. ohyou
        25.07.2019 11:32

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

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


        1. PsyHaSTe
          25.07.2019 15:48

          Появляются задачи рода «не думай, просто сделай, так надо»

          Как это связано с задачами в ютреке?


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

          Посмотреть на эпик, поговорить с лидом, поговорить с ПО не поможет?


  1. yuliaazak
    23.07.2019 07:40

    Почему не оценивают по портфолио? Если кандидат может показать свои законченный проекты и объяснить логику (доказать, что это его/ее код), разве этого не будет исчерпывающие?


    1. VIkrom
      23.07.2019 08:19

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


      1. dvmedvedev
        23.07.2019 08:48

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


        1. glestwid
          23.07.2019 20:16
          +1

          Поделитесь, плиз, названиями этих понторезов.


          1. PsyHaSTe
            25.07.2019 02:10

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


      1. gohan
        24.07.2019 00:22

        Проекты работодателей показывать нельзя

        А мне пофиг, просто покажу проект со своего ноута, когда придётся собеседоваться. Передавать на сторону ни одного байта не придётся, текущий работодатель не пострадает.

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


        1. vvbob
          24.07.2019 00:36

          Сколько из того проекта именно вашего кода?

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

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


    1. vvbob
      23.07.2019 09:31

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


  1. lanseg
    23.07.2019 09:24

    Раз уж тема снова всплыла, то оставлю свою историю о собеседовании, которое неприятно поразило меня больше всего.
    Задал мне собеседующий простую олимпиадную задачку и стал равнодушно пялиться в свой ноут. Я начинаю рассказывать, как и что я делаю, обосновывать своё решение, а собеседующий — ноль внимания. Когда я решил задачу, он мельником на неё взглянул и бросил "Квадрат, не пойдёт!", а ведь я объяснял, почему я делаю за квадрат и как потом буду улучшать.
    Решил задачку за линейное время, показываю ему, а он — "Ладно. Так… у вас ошибка" и снова смотрит к себе. Оказалось, я пропустил проверку на граничные условия, но упомянул о ней вслух.
    Кое-как завершил собеседование, но так и не понял, что это было — недавний олимпиадник? Педант, для которого неверными будут все решения, кроме оптимального? А если бы у меня так же спрашивали задачу "на сообразительность", я бы просто ушёл.
    Из российских компаний самое адекватное собеседование было у Jetbrains, но я довольно халтурно подошёл к решению домашней задачки, потому что уже почти был готов оффер от гугла — возможно, та команда решила, что я ленивый раздолбай. Да и мог бы нормально слиться и не тратить зря их время — тогда было очень стыдно.


    1. vvbob
      23.07.2019 09:38

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


    1. Kobalt_x
      23.07.2019 10:31
      +1

      >Задал мне собеседующий простую олимпиадную задачку и стал равнодушно пялиться в свой ноут.
      Не оправдываю собеседующего но могу объяснить почему так происходит.
      Потому что внезапно во время собеседования ему ещё нужно вести полный протокол с таймстампами вида начал решать в 12:00 задал первый вопрос тогда-то, тогда-то вручил первое решение во столько-то. И да замечаю что обычные комментарии вслух мало кто слушает, вот задаете вопрос а какие ограничения, тогда говорят… обычно это бывает либо на phone-секциях или секциях с кодом на листке, когда код на доске там уже точно будут смотреть.
      Почему они так делают тоже объяснить просто, потому что после собеседования лениво заполнять отчет выдумывая таймстампы и прочие вопросы из головы и тратить на это время, а хочется просто работать. поэтому сидят и заполняют прямо на месте.


      1. lanseg
        23.07.2019 10:45
        +1

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


        1. lanseg
          23.07.2019 18:07

          Забыл уточнить, что было 4 собеседования, конкретно на этом собеседующий был один.


  1. snvtr
    23.07.2019 09:48

    Задачки в HackerRank теперь даже сисадминам задают.


  1. White_Scorpion
    23.07.2019 10:26
    +1

    К тому же я слышал о собеседованиях, где кандидат вообще не умел программировать (не мог написать программу типа hello world)

    Я Senior программист на C#.NET стеке и я… не напишу Hello World сходу.
    Нет, если поставить задачу:


    1. Создать новый шаблон Console Application в Visual Studio 20XX
    2. Найти функцию Main вписать туда Console.WriteLine("Hello, World!"):
      То с этим я вполне способен справиться.

    Но если есть пустой файл документа (а некоторые умники вообще листок бумаги подсовывают), на котором надо написать всё без шаблона солюшена, автоподсказки и Intellisensa… то я скорее всего подвисну. Потому что точно помню, что класс program может быть без спецификатора доступа, а Main должна быть статичной… Но обязательно ли туда параметры вставлять или это опционально? Или какие там надо было namespace вписывать, чтобы всё заработало? System хватит или что-то ещё надо?
    Я думаю — суть понятна.


    Программисты уже давно переложили на IDE огромное количество рутины и теперь, когда подсовывают бумажку и предлагают напиши "Hello World!" от руки — это вводит в ступор. А они всё предлагают и предлагают бумажки.


    P.S. Ну и я не отменяю иронии парадокса, что людей, которым на собеседовании подсовывают "напиши Hello World" — надо решать СОВСЕМ ДРУГИЕ задачи.
    Как написание "Hello World!" коррелирует с задачей создания оптимальной архитектуры приложения или оптимизацией рабочих процессов — сие есть загадка неведома есьм.


    1. PsyHaSTe
      25.07.2019 02:24

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


      Да, IDE помогает, но мозг она при этом не заменяет. Что мешает на бумажке написать:


      svm 
      {
         Console.WriteLine("Hello world!");
      }

      А интервьюверу объяснить, что это сатнадртный класс объявления входной точки в Visual studio? Раз вы эксперт в IDE то должны это знать. Если же человек не может хелло ворлд ни на бумажке, ни в IDE написать, то это достаточно грустно, пусть и не имеет прямого отношения к реальным задачам.




      В какой момент времени стало модным невежество? "Я не знаю как работает гц, это пусть джуны учат". "Какие там модификаторы доступа? Я же сениор, мне это знать не обязательно". "Что такое SOLID? Спросите чего поновее".


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


      Теперь когда берем сениора и спрашиваем его что-то из основ он высокомерно изгибает бровь и говорит что это дело плебса знать такие нюансы.


      1. White_Scorpion
        25.07.2019 08:39

        svm
        {
        Console.WriteLine("Hello world!");
        }
        А интервьюверу объяснить, что это сатнадртный класс объявления входной точки в Visual studio?

        Что это за магия? Первый раз такое вижу. Гугл пишет, что это некая библиотека standard vector machine и Visual Studio требует устанавливать это отдельно посредством NuGet.
        Вы уверены, в том что вы написали?


        1. Source
          25.07.2019 11:39

          Это "static void Main" сокращенно, для тех, кто помнит что надо написать, но ему лень :-)


          1. White_Scorpion
            25.07.2019 12:41

            Аххх сниппет… Вообще не часто их использую.


            1. samhuawey
              25.07.2019 13:11

              Почему void? Как операционная система узнает результат работы программы? Как её вставить в цепочку скриптов?


              1. Endeavour
                25.07.2019 14:02

                Потому что спека C# (и Java) так требует. Код возврата задается через вызов Environment.Exit (System.exit для Java).


      1. VolCh
        26.07.2019 07:03

        любой человек считающий себя разработчиком обязанть знать эти ответы

        С тех пор как я узнал про SOLID, я всё меньше знаю что это. У меня нет однозначного ответа что такое, например, SRP. Вот полноценный объект, в котором есть и данные, и методы их обрабатывающие, и изменяющие — у него две ответственности или одна? Это без учёта самих данных и методов. Вот создаём объект с публичным свойством, инициализируем его в конструкторе. Понятно, что одна — хранить это свойство. Или две уже — дать клиентам возможность его изменять? Создаём геттер — добавляем ли ответственности за доставку клиентам значения свойства? А за защиту этого свойства?


        1. PashaNedved
          26.07.2019 07:59

          Полное и исчерпывающее руководство по SRP

          Принцип SRP можно применить только в том случае, когда:

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


        1. vvbob
          26.07.2019 09:15

          ИМХО, я это так понимаю.
          Нужно различать ответственность и действия. Когда описываем объект, в графе: «Объект отвечает за» — должно быть одно значение, а не перечисление. В графе: «Для обеспечения ответственности объект делает»: тут может быть сколько угодно пунктов, главное что-бы все эти действия были подчинены одной единственной ответственности.

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


    1. PashaNedved
      25.07.2019 11:14

      Но обязательно ли туда параметры вставлять или это опционально?

      Математика 9 класс.
      Я думаю — суть понятна.

      Не совсем. Задача настолько сложная, что сеньору нужна IDE для решения этой задачи?
      Это конечно сарказм, но с другой стороны интервьюеру стоит принять во внимание, что у сеньора возникают трудности в решении такой простой задачи. Это может быть как вопрос квалификации, так и вопрос психологии.
      предлагают напиши «Hello World!» от руки — это вводит в ступор. А они всё предлагают и предлагают бумажки.

      Одни раз за разом предлагают, а других каждый раз это вводит в ступор… Не пора бы привыкнуть? Или у вас есть решение, которое запретит предлагать hello world на бумажке?
      P.S. Ну и я не отменяю иронии парадокса, что людей, которым на собеседовании подсовывают «напиши Hello World» — надо решать СОВСЕМ ДРУГИЕ задачи.
      Как написание «Hello World!» коррелирует с задачей создания оптимальной архитектуры приложения или оптимизацией рабочих процессов — сие есть загадка неведома есьм.

      Видишь суслика? Вот и я не вижу, а он есть!


      1. Druu
        25.07.2019 11:33

        Задача настолько сложная, что сеньору нужна IDE для решения этой задачи?

        А забить гвоздь — задача настолько сложная, что для этого нужен молоток?


        1. PashaNedved
          25.07.2019 11:39

          В кусок сливочного масла?


          1. samhuawey
            25.07.2019 13:15

            На одном собеседовании меня сначала спросили работал ли я с маком и какие дистрибутивы линукса знаю. После получения отрицательного ответа по поводу MacOS выдали мак и попросили установить в виртуалку c редким дистрибутивом линукса Jira и Confluence. Более менее справился, спросил почему именно так. Говорили, надо проверить как поведу себя under stress. Типа, кнопки давить все умеют, а решать неожиданно возникающие проблемы за ограниченное время — не все.


            1. dominigato
              25.07.2019 17:41

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


          1. White_Scorpion
            25.07.2019 13:52

            В кусок сливочного масла?

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


            1. PashaNedved
              25.07.2019 14:05

              То есть, это сопоставимая по сложности задача с «hello world»?
              Плотник 7 разряда сможет забить гвоздь без нейлера или без молотка?


              1. White_Scorpion
                25.07.2019 14:57
                +1

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


          1. Druu
            25.07.2019 14:03

            В кусок сливочного масла?

            Зачем вы забиваете гвозди в сливочное масло?


            1. PashaNedved
              25.07.2019 14:10

              Я не забиваю.


              1. Druu
                26.07.2019 01:06

                Я не забиваю.

                Тогда зачем предлагаете делать это соискателю?


                1. PashaNedved
                  26.07.2019 01:39

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


                  1. Druu
                    26.07.2019 05:07

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

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


                    Вы имеете ввиду, зачем предлагать писать код на листочке, когда есть IDE?

                    Ага. Зачем? На практике у программиста будет и ИДЕ и гугл и все остальное.


                    1. PashaNedved
                      26.07.2019 07:29
                      -1

                      Может, еще предложить поперемножать в уме большие числа?

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

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

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

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


                      1. vvbob
                        26.07.2019 09:19

                        Тем не менее программисту (современному) никогда не придется кодить на листочке, да даже в «Блокноте» очень вряд-ли.
                        Тоже не понимаю этой страсти, сейчас такая проблема предоставить человеку на собеседование ноут с предустановленными несколькими популярными IDE?


                      1. Druu
                        26.07.2019 09:48

                        Ну, математики это делают перед зрителем: умножают, делят, извлекают корни.

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


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

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


                        Ну да


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

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


                        1. PashaNedved
                          26.07.2019 11:06

                          Ну в договоре все это прописано? За переработки с двойным рейтом заплатят?

                          Конечно прописано. Переработки компенсируются 3 днями оплачиваемого отпуска.
                          Не понял, к чему это все.
                          Еще раз — зачем соискателю задавать цирковые задачки, если он устраивается программистом к вам, а не циркачом? Он же не собирается у вас перед зрителями писать код во время езды на одноколесном велосипеде. Так зачем вы от него требуете этих непонятных скилов?

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


                          1. Druu
                            26.07.2019 11:51
                            +1

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

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


                            1. PashaNedved
                              26.07.2019 12:25

                              Не подходящего в чем?

                              В деловых качествах.


                              1. White_Scorpion
                                26.07.2019 13:22

                                Какие именно "деловые качества" проверяются стрессом?
                                И самое главное — зачем вы человека планируете тестировать именно так? Вы думаете он стал сениором БЕЗ испытывания достаточного количества стресса? Без срывов дедлайнов, объяснений с манагерами и т.д.?


                                1. PashaNedved
                                  26.07.2019 14:04

                                  Вы думаете он стал сениором

                                  Сеньором?
                                  • Hello World без IDE написать не может
                                  • Алгоритмов не знает
                                  • Математики не знает
                                  • Пет проектов — нет
                                  • Вклада в opensource — нет
                                  • Синтаксис языка знает плохо
                                  • Кейворды не помнит
                                  • ...

                                  Зато хочет прийти на собеседование, поболтать за жили были и подписать оффер на работу с 300к. Чтобы потом на работе 1/4 времени проводить, играя в пинг понг и попивая смузи. Оставшееся время он будет зависать в гугле и на стековерфлоу.

                                  А вы сеньору идиотские вопросы задаете…


                      1. Fedorkov
                        26.07.2019 13:45

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

                        И мы вроде как обсуждаем именно программистов, а не админов.


  1. Archie_RU
    23.07.2019 10:39

    image
    Допустим мы получили 7 резюме.
    Из них 5 — от Senior JavaScript developer с опытом менее 2 лет. На позицию Java architect.
    Скажите, у вас течёт слюна на пол если вы сидите неподвижно более 3 секунд?


  1. sergeymelnichuk
    23.07.2019 10:47

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

    Но с другой стороны, Senior Developer который не может инвертировать бинарное дерево (рекурсивное решение занимает 3 строчки кода) или написать за час BFS по графу, должен провести очень серьёзную «инвентаризацию» своих скиллов и сделать выводы.


    1. Andrey_Dolg
      23.07.2019 11:04

      Я вот не знаю, что вы написали. Но вопрос не в дереве и графах а в том что ваш словарь(инвертировать, BFS) мне не знаком.=)


    1. vvbob
      23.07.2019 21:10

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


      1. sergeymelnichuk
        23.07.2019 21:21

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

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


        1. vvbob
          24.07.2019 08:57
          +2

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

          Думаю большинство разработчиков от мидла и выше она ставит в тупик не по причине того что они не могут этот алгоритм закодировать, а по причине того что сам алгоритм уже основательно забыт.
          Человеческая память так устроена, что все неиспользуемое ежедневно уплывает далеко на периферию и вспомнить старые знания чем дальше тем сложнее. Видимо эволюция неспроста так распорядилась, ресурсы ограничены и лучше потратить их на что-то более актуальное.
          Если на интервью так уж хочется проверить умение работы с деревьями — я думаю стоит просто дать человеку ноутбук с нормальным (и желательно привычным ему) IDE, описание задачи, включающее в себя описание алгоритма, и посмотреть на результат. Если человек не программист, то он и со всем этим ничего сделать не сумеет, и по результату будет хорошо видно какой уровень у разработчика.
          Особенно если задачка не на три строки.
          Оформление кода, декомпозиция задачи, использование (переиспользование) переменных, умение внятно объяснить примененные решения.
          А тестировать память… это такое. Ну окажется что человек имеет феноменальную память и помнит алгоритм, который он 20 лет назад в ВУЗе учил, и что дальше то? Он только от этого становится полезным членом команды? Не думаю.


  1. Beshere
    23.07.2019 10:54

    Сам сейчас прохожу интервью. Опыт работы — 20 лет.

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

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


    1. JustDont
      23.07.2019 11:23

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

      Ничего подобного.
      Впрочем, если вы смотрите вакансии на ваш опыт работы и на соответствующие деньги, то неудивительно, что там «требования к скиллу». Или вы думали, что джунам тоже будут по 100 с лишним тыщ платить просто потому, что это вайти?


  1. Kyushu
    23.07.2019 11:21

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


  1. savimar
    23.07.2019 11:36

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


  1. dominigato
    23.07.2019 11:43
    +2

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


    1. agalakhov
      23.07.2019 19:12

      Скорее это значит, что:


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


      1. dominigato
        23.07.2019 22:25
        +1

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


        1. gohan
          24.07.2019 01:16
          +1

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

          Вот-вот. Меня в универе ещё бесил подход у некоторых заносчивых преподов (не все такими были, но немало). У них отношение такое, что типа «ну чего ты, дурак, этого не помнишь, я-то весь материал помню, всю теорию, вот какой я молодец!». Да, ты помнишь, вот только у тебя, дебила, ничего в жизни нет кроме своего предмета, который ты каждый день повторяешь по 100500 раз. А у нормального даже добросовестного студента без феноменальной памяти таких вот преподов и предметов с десяток одновременно, и попробуй-ка упомнить все формулы и доказательства. И какой-нибудь такой супер-препод гордый по теормеху скорее всего мог бы только лососнуть тунца, если я б ему задал вопрос по теорфизу, например.

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


  1. dbelka
    23.07.2019 11:55
    +1

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


    1. snuk182
      23.07.2019 12:46

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


    1. sergeymelnichuk
      23.07.2019 21:27

      Странная логика, получается чем опытнее инженер тем сложнее/медленнее он будет решать простые задачи? Мозг не может быть «заточен», мозг либо решает задачу либо нет.

      Не могу представить себе инженера который быстро и легко решит, скажем, задачу распределённого консенсуса («изобретёт» PAXOS-like протокол, например), но который при этом не сможет инвертировать бинарное дерево :)


      1. dbelka
        23.07.2019 21:54

        Про инвертирование бинарного дерева, это конечно фейл :-)


  1. pprometey
    23.07.2019 12:06

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

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

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

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


    1. JediPhilosopher
      23.07.2019 12:37

      Есть нюансы.


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


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


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


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


      1. pprometey
        23.07.2019 13:11

        Я при приеме на работу практикую такой поток:
        1. Созвониться, договориться о встрече. Этап — Телефонное интервью.
        2. Встретиться с кандидатом, поговорить. Показать офис, условия труда. Этап — Предварительная оценка.
        3. Тестовое задание. Из двух частей — опросник по навыкам (хард и софт скилы детально — 3-5 стр.), задание на разработку прототипа приложения (приход, расход товара, отчеты). Иногда можно дать дополнительное задание, специфичное для проекта (например на знание SQL, какой-либо библиотеки и т.д.). Предварительное время выполнения кандидат назначает сам. Этап — заключительная оценка.
        4. Переговоры об условиях работы и оплаты труда. Этап — заключительное собеседование.

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


      1. pprometey
        23.07.2019 13:20

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


      1. agalakhov
        23.07.2019 19:21

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


        1. senglory
          23.07.2019 20:24

          как можно много лет работать и не столкнуться при этом с необходимостью объяснить кому-то устройство красно-черных деревьев


          А нафига их знать, если в повседневной работе дело имеешь с Sharepoint, например? Или еще какой ERP системой?


        1. dominigato
          23.07.2019 23:36

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


          1. pprometey
            24.07.2019 07:44

            Наставничество — неотъемлемый элемент в работе сеньора.


            1. dominigato
              24.07.2019 13:03
              +1

              Да, но это не наставничество, вы путаете его с учительством.


              1. pprometey
                24.07.2019 13:20

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


                1. Fedorkov
                  24.07.2019 13:51

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


                  1. pprometey
                    24.07.2019 13:56

                    Ну это довольно субъективное разделение как мне кажется. Натянутая сова на глобус.
                    А разве наставник не может быть учителем или наоборот?


                    1. Fedorkov
                      24.07.2019 13:59

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


                      1. pprometey
                        24.07.2019 16:56

                        Да, так заметна разница. Согласен. Спасибо.


                1. dominigato
                  24.07.2019 14:03

                  Ну давайте предметно, расскажите что вы имеете в виду под наставничеством.


            1. VolCh
              24.07.2019 13:28

              Отъемлемый в работе. Команда может быть из одних сеньоров, например. Или из одного.


              1. pprometey
                24.07.2019 13:33

                В теории да, но не на практике. Ну и в редких случаях. В основном разнородные по уровню команды.


                1. VolCh
                  24.07.2019 13:47

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


                  1. pprometey
                    26.07.2019 09:07

                    Мы наоборот поощряем.


  1. lotse8
    23.07.2019 12:47

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


    1. Andrey_Dolg
      23.07.2019 14:31

      Если человек с как вы сказали «потенциалом»(опыт) не сделал в срок, это в 90%(Имхо) случаях не верно поставленный срок.


    1. vvbob
      26.07.2019 09:23

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


  1. guryanov
    23.07.2019 13:05

    Что же это за вакансии такие, куда 500 человек на место?


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


    1. NLO
      00.00.0000 00:00

      НЛО прилетело и опубликовало эту надпись здесь


  1. MacIn
    23.07.2019 13:12
    +1

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

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


  1. A114n
    23.07.2019 13:25
    +1

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

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


  1. yuliaazak
    23.07.2019 13:31

    Сейчас много людей учится программировать, но для решения задач прикладных, а не для красоты кода: надо построить базу данных для анализа или создать морду для сервиса- то есть это профессионалы из индустрии. Постепенно они повышают квалификацию и хотят перейти в разработку в смежную -такую же индустрию. Но они не пройдут через ассесмент программистов тк у них задачи и навыки другие.
    Здесь может быть вопрос, что нужно компаниям (хардкодеры или междисциплинарнгсть) и что хотят люди (расширение своего профессионализма или глубокого кода ради кода/денег).
    Если компаниям нужна monkeyjob- делай, что сказали, то у них есть бюджеты на то, чтобы ждать и искать лучшего по алгоритма наизусть, чтобы не лез в продукт. Если компания более подвижная, она возьмёт специалиста, кто сейчас метит в Джуны, и имеет большой опыт в индустрии.


    1. sergeymelnichuk
      23.07.2019 21:38

      Программирование для не-прикладных задач — это академические исследования.
      Всё остальное программирование — так или иначе предназначено для решения прикладных задач.

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

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

      > кто сейчас метит в Джуны, и имеет большой опыт в индустрии
      это как вообще?


  1. user_man
    23.07.2019 13:45

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

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

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

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

    ЗЫ. А для джунов всё ещё неприятнее, но они не плачут, а тихо зубрят и устраиваются в богатые конторы, что бы через несколько лет получать 200к. А те, кто плачут, идут работать дворниками. Опять се ля ви.

    Хотите по другому? Меняйте мир. Не получается? Но почему вы в этом гуглов обвиняете? Это вы не смогли подстроить мир под себя, а не они. Они, как раз, смогли.


    1. JustDont
      23.07.2019 13:52
      +2

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

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


      1. user_man
        23.07.2019 14:00

        >> дело в хайпе

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


        1. 0xd34df00d
          24.07.2019 14:59

          Это не совсем тот хайп, ИМХО.


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


  1. samhuawey
    23.07.2019 13:52
    +2

    Задачки помогут когда у специалиста 1-5 лет опыта. Если у него в резюме несколько компаний из программисткого Топа — какие вопросы, всё и так понятно. Останется спросить почему ушёл и поболтать на отвлечённые темы, а ещё лучше рассказать о предстоящей работе и спросить интересно или нет.

    Это не работа выбирает сеньора (ну разве что после форс-мажора типа сворачивания бизнеса Sun в России), это сеньор выбирает работу, и после банального отсеяния на адекватность на уровне HR технические вопросы задавать бесмыссленно.

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


  1. spamas
    23.07.2019 15:48
    -4

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


  1. rokuz
    23.07.2019 16:03

    Для крупных корпораций этот подход хорош почти всем. Это превращает процесс найма в конвейер, это дает одну «линейку», который можно сравнивать разных разработчиков. «Линейка» позволяет унифицировано определять ЗП, в том числе продавливать разработчиков на меньшие деньги, так как олимпиадными задачами на работе мало кто занимается, а значит шанс того, что ты решишь все задачи без возможности придраться к чему-либо, совсем мал. Этим, кстати, активно пользуется небезызвестная российская корпорация.
    Вот что такой подход нормально сделать не позволяет, так это нанять людей с узким профилем. Узких профилей бывает много, чтобы стать профессионалом в некоторых нужно потратить годы. Тот же Google прямо говорит, что такие люди в большинстве случаев им не нужны, им нужны универсалы, способные потенциально работать в любой части корпорации, которых можно перераспределить в случае закрытия проекта и любой другой смене направления деятельности. Так как такие корпорации имеют тенденцию скупать технологически сложные перспективные стартапы, то есть определенный риск того, что покрыть узкие профили в этих проектах с таким подходом к найму им будет не просто. Поэтому разработчики, которые попали в корпорацию вместе с проектом и получают там космические ЗП, а если покидают компанию, то проект оказывается на грани забвения. Это создает редкие случаи, когда корпорация отступает от правил, и собеседует людей в индивидуальном порядке, еще часто и по рекомендации. Все остальные, если действительно хотят в Google, и чувствуют, что там им будет комфортно, к сожалению, должны научиться проходить фильтр.


  1. saterenko
    23.07.2019 17:07

    Ну так нужны им вызубрившие спецификации с опытом решения олимпиадных задач… Из почти 20 лет опыта работы около 15-ти переходил по рекомендации… Иногда проходил собеседования just for fun, пролетел в Майкрософт, Блумберг, два раза в Яндекс… Подумываю закрыть профиль в линкедин, потому как всё одно и то же, ни кому не интересен мой опыт решения задач, всем нужны спецификации и олимпиадные задачи…


  1. Wesha
    23.07.2019 17:25

    Задачки, говорите? Я просто оставлю это здесь.


  1. igor-sheludko
    23.07.2019 17:31

    Задачи позволяют проверить насколько хорошо человек умеет мысли нестандартно. С набором опыта, специалист уже легко решает многие задачи, потому что имеет в голове подходящие шаблоны. Вероятно, это снижает частоту применения творческого подхода. Поэтому неудивительно, что опытные специалисты плохо проявляют себя в олимпиадных задачах.
    Основной вопрос тут такой — будет ли искомый человек потом на работе часто решать нестандартные задачи? В большинстве случаев — скорее всего не будет. Лично я выступаю за проверку знаний с помощью быстрых тестов, на подобии тех, что проводят для определения уровня владения иностранными языками (50-100 вопросов за 30-60 минут).


    1. dbelka
      23.07.2019 21:59
      +1

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

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


  1. Tantrido
    24.07.2019 14:47

    В принципе мне подобные практические собеседования нравятся больше, чем те, что были раньше, когда компании нужен не программист решающий задачи, а ходячий справочник по технологии, например .Net. Но если в 16-м на работу взяли сеньором моментально и без проблем после решения тестовой задачи (на решение дали сутки) + резюме, github и LinkedIn, то сейчас даже решение 3-х задач на отлично на codility за 2.5 часа и успешно пройденное затем техническое интервью не гарантировало получение работы — бред.

    Затем в другой очень известной фирме с высокими зп тоже напрягся и решил эти тестовые задания на codility. На решение дали уже меньше — 1.5 часа, что непонятно: спортсменов по программированию или рабов на галеры нанимают: даже тестовые задания нормально не успеваешь составить на проверку и производительность кода. Но потом этот бред продолжился: тестовые задания дали ещё и на последующем техническом интервью, только решить уже нужно было в присутствии интервьюера за 15-20 мин — решил за 21 мин — отказ. Что происходит?!

    Уже нарешался этих задач на codility массу — аллергия на них уже, если б это ещё получение работы гарантировало. Они могут мои предыдущие тесты посмотреть?! ;)


    1. user_man
      24.07.2019 15:29

      >> аллергия на них уже, если б это ещё получение работы гарантировало

      Есть менее щедрые по з\п конторы — можно пойти туда.

      Да, а где вы регионально? Запад или московия?


      1. Tantrido
        24.07.2019 15:37

        По московскому времени живём :)


  1. iCoderXXI
    24.07.2019 15:04

    А в чем проблема для крутого синьора потратить пару месяцев на кодварс и прокачать эти задачки?


    1. dss_kalika
      24.07.2019 15:19
      +1

      Потому что это не повышает его навыков программирования и ничего полезного как для специалиста не несёт.


      1. iCoderXXI
        24.07.2019 17:23
        -3

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

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

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

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

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

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


        1. dss_kalika
          24.07.2019 17:59
          +2

          1. Если вы не пользуетесь чем то давно — то и задачки по этим вещам не решите, да и не очень они вам нужны, если вы ими не пользуетесь давно.
          2. Есть технологии/задачи/области, для которых задачки такого рода не показывают ничего.
          3. Это из разряда «каждый программист должен быть математиком и отучиться несколько курсов изучая интегральное/дискретное и прочие исчисления». Вроде бы и должен, но большая часть — никогда не столкнётся с необходимостью использовать эти знания и просто забудет их через 10 лет.
          4. Забывают конкретику, а принципы остаются. Конкретную задачу можно не решить или решить неправильно, но думать при этом правильными категориями и исходя из правильных критериев делать прикидки и суждения. Потому что конкретика забывается, а привычки остаются.

          ЗЫ:
          Но, да — если в конкретной работе/области/технологии часто встречаются такого типа задачи и необходимы именно эти навыки, то такие задачи помогают оценить кандидата.
          Только речь как раз о задачах, которые не встречаются в работе )


          1. iCoderXXI
            24.07.2019 18:24
            -1

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

            У меня в 11-12 годах отросла корона, а потом пришлось менять компанию, походил впервые за много лет по собесам, корону отшибло начисто, вместе с гордынюшкой. :)


            1. dss_kalika
              24.07.2019 18:30
              +2

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

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

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


              1. iCoderXXI
                24.07.2019 18:51

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

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

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

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

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


                1. user_man
                  25.07.2019 12:25

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

                  И сколько времени всё это заняло?

                  Вообще, вы говорите о переходе на новые для вас технологии, а вам говорили про сеньора, который давно сидит на известных ему технологиях и именно по ним заработал своё сеньорство. Поэтому если в его работе встречались алгоритмические задачки, то он и их должен бы вместе со всем остальным хорошо представлять. Но бывает так, что алгоритмы в работе примитивные, и всё упирается именно в знание технологий. Это весьма распространённый вариант для бэка (ну пишет чел. OLTP 10 лет и ни про какие алгоритмы никогда не вспоминал). Хотя при этом работу с БД, целевой язык, библиотеки, инфраструктуру и много чего ещё он может знать очень хорошо (на много лучше джуна). И вот вы как поступите — откажете ему и возьмёте мало знающего джуна или? Хотя задачки сеньор может и решит, но медленно, медленнее джуна или ваших лимитов. А может даже чего-то не решит. Каков ваш выбор?


                  1. iCoderXXI
                    25.07.2019 13:16

                    Вот каждый о своём, ей Богу.

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

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

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

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

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


                  1. samhuawey
                    25.07.2019 13:18

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

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

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


                1. michael_vostrikov
                  25.07.2019 17:49

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

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


                  1. JustDont
                    25.07.2019 18:29

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


        1. Fedorkov
          24.07.2019 20:20

          По личному опыту, на практике важнее уметь вкурить в заумную научную статью с нюансами редкого алгоритма, чем выдать на-гора решение десятка олимпиадных задач. Хотя your mileage, как говориться, may vary.


          1. Tantrido
            24.07.2019 23:35

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


          1. user_man
            25.07.2019 14:05

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


            1. Fedorkov
              25.07.2019 22:25

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


              1. user_man
                26.07.2019 12:50

                И как понять (без задачек), сможет ли кандидат «хакнуть» сложную задачу?


                1. Fedorkov
                  26.07.2019 13:48

                  Обсудить с ним предыдущие проекты. Попросить показать личные работы, если есть что-то серьёзное.


    1. PsyHaSTe
      25.07.2019 02:29

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