Ну привет. Я только что с собеса, и у меня бомбит. Сколько не пишут на Хабре, как правильно собеседовать — лучше не становится.


Мне кинули предложение — Senior full-stack .NET Developer, удаленно, крутой проект, куча денег. В списке требований хренова гора не связанных между собой вещей из мира .net и js/ts. Выглядит так, будто просто свалили в кучу все, что нагуглили за 10 минут — причем мало понимая, что именно.


Тревожно, но ничего. Собеседовать, думаю, будет разработчик — человек, с которым я говорю на одном языке. Расскажу про то, что делал, обсудим подходы к решению задач, проблемы в .NET, перспективы C#. Поговорим про структуры данных. Расскажу, почему структурная типизация мне нравится больше, чем мнемоническая. Если пойдет хорошо, поделюсь даже своей идеей фикс — всегда использовать структуры вместо классов в качестве моделей. Посравниваю FLUX с MVVM, расскажу, как нереально красив симбиоз ФП и ООП в TypeScript.


В общем, предвкушаю хороший разговор.


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


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


Пошли "синьорские" вопросы. Что такое protected internal? Отвечаю. Что такое ref, что такое out. Тоже знаю, но уже подозреваю, что развернутые ответы ему не нужны. Чем dynamic отличается от Object? Чувствую себя как в школе, но ладно, рассказываю. Что такое virtual?


Бам!


Убей не помню. Смотрю — топище расплывается от гордости, светится. Высокомерие так и льется из экрана. Рад, что съел очередного болвана, который не знает “базовых” вещей. Самоутвердился, можно искать следующего. Интервью, естественно, кончается.


Я закрываю скайп и, конечно, тут же вспоминаю, что за virtual. Но компания уже, наверняка, уверена, что я на 100% профнепригоден.


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


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


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


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


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


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


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


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


Это очень плохо. Вы боитесь самозванцев, а я боюсь следующего собеса.


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


Зазубривание кейвордов, механик, принципов и паттернов — опциональный скилл. Думать и предвидеть — вот хороший скилл.


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


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


Пацаны, достаточно. Поговорите с человеком. Спросите, что делал, как и почему.


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


И да — теперь, пока за мной не будет стоять мой код, на собес я не пойду.

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


  1. xakepmega
    26.09.2018 17:05
    +3

    Сильно.
    Как js разраба раздражает что даже на senior позицию присутствует обязательный вопрос «что такое замыкание?»


    1. fillpackart Автор
      26.09.2018 17:06
      +2

      И просят реализовать приватную статическую переменную с его помощью.


      1. b00taNik
        27.09.2018 12:18
        +1

        И все равно 80% заваливаются на данном вопросе.


        1. fillpackart Автор
          27.09.2018 14:14
          +1

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


          1. b00taNik
            27.09.2018 15:19

            — Чёрт, да, я отлично это понимаю.
            К сожалению, хоть вы и понимаете, как работают замыкания, но не поняли их главного назначения — это не «самовызывающиеся функции», это — объекты (функции первого порядка), которые замыкают в себе некоторый контекст, который в зависимости от языка может содержать в себе определенный набор переменных и областей.
            То, что вы можете реализовать статическую переменную, опираясь на эти свойства, учитывая при этом все особенности JS/TS/.NET, говорит о вас как о хорошем разработчике, способном видеть архитектурные концепции за простым кодом, что как раз и вызывает восторг у знающих коллег.

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


            1. fillpackart Автор
              27.09.2018 17:02

              Где я сказал, что замыкания — самовызывающиеся функции?


              1. b00taNik
                27.09.2018 18:33

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


                1. fillpackart Автор
                  27.09.2018 20:18

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


                  1. b00taNik
                    27.09.2018 22:08
                    -1

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

                    Или это как в квантовой механике — самовызов — функция считается одновременно вызванной и нет до тех пор пока программист не скомпилирует код?

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


                    1. ApeCoder
                      27.09.2018 22:32
                      +1

                      Очевидно, функция которая сама себя вызывает, т.е. рекурсивная ;). (на самом деле, наверное, module pattern)


                    1. fillpackart Автор
                      28.09.2018 00:22

                      (function () {
                      }());


                      1. Druu
                        28.09.2018 03:08

                        Вообще это называется iife (immediately-invoked function expression) :)


                      1. b00taNik
                        28.09.2018 08:51
                        -1

                        Вызов анонимной функции? И что же тут «самовызывающего», если вы сами ее вызвали, написав () в конце?

                        Это видимо какой-то особый .net нейминг, с теорией программирования не связанный.

                        Ну или кто-то сеньор только своей голове, а не в реальности, тут не совсем понятно.


                        1. mayorovp
                          28.09.2018 08:57
                          +1

                          Это не ".net нейминг", а устоявшийся перевод термина IIFE (immediately-invoked function expression).


                          1. b00taNik
                            28.09.2018 10:09

                            Гугл транслейт почему-то переводит это как «немедленно вызываемые», что куда ближе к правде, чем «самовызываемые» (self-invoked).
                            Ирония всего происходящего в том, что самозванец, называющий себя «Senior full stack developer», кричит о том, что «хватит подозревать разрабов в самозванстве».

                            Для меня это звучит как «Платите мне сеньорские за знания слабого миддла». Это просто смешно.


                        1. fillpackart Автор
                          28.09.2018 10:24
                          +2

                          Похоже, я мешаю вам лупить вооброжаемого противника)


        1. Chamie
          27.09.2018 14:54

          Конечно. Вот я не понял даже смысла этой просьбы. Что такое, вообще, «статическая переменная»? Это что-то из Си?


          1. timon_aeg
            27.09.2018 16:53

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


            1. donRumatta
              27.09.2018 17:58

              Тогда может не переменная, а поле?


          1. tyomitch
            27.09.2018 18:09

            В Си (и в плюсах) слово static означает три разные вещи — внутри функции, внутри структуры/класса, и на внешнем уровне. Какой из этих трёх смыслов вкладывается в понятие «статической переменной»?


    1. gasizdat
      26.09.2018 20:13
      +2

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


      1. Alexsandr_SE
        26.09.2018 20:31
        +3

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


        1. gasizdat
          26.09.2018 21:10
          +1

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


          1. kalyukdo
            26.09.2018 21:46
            +4

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


            1. ScreamPassion
              27.09.2018 13:19

              Для предотвращения подобных ситуаций, хорошо бы чтобы наймом сотрудников занималась сторонняя HR компания имеющая при этом штат технических специалистов, которые будут проводить беспристрастную оценку уровня знаний соискателя… Но видимо это пока только мечты(


              1. u010602
                27.09.2018 13:29
                +1

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


                1. ScreamPassion
                  27.09.2018 13:57

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


                  1. u010602
                    27.09.2018 15:04

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


                    1. ScreamPassion
                      27.09.2018 15:53

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


              1. kalyukdo
                27.09.2018 13:49

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

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


          1. Oakum
            26.09.2018 22:17
            +6

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


            1. Misaka10032
              27.09.2018 10:48

              O_o, нифига себе. У меня было похожее, только на экзамене по цифровой обработке сигналов.
              Преподаватель видела, что я в принципе разбирался в теме, но переволновался. Попросила нарисовать какой-то график, нарисовал. Спросила, что больше: 1/4 или 1/2(1/4 у меня было больше). Тут до меня дошло, она посмеялась и поставила 4))


            1. Alesh
              27.09.2018 11:41
              +1

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


              1. EvilsInterrupt
                27.09.2018 12:14

                А разве он его не мотивировал? Он признал, что ученик действительно с мозгами и шарит в предмете. Признание это и есть уважение. Какая хрен разница какая оценка? Если бы ученику нужен был бы красный диплом, он бы сказал «Ставьте два. Буду пересдавать» и проблемы в этом нет. Препод все сделал грамотно!


                1. Alesh
                  27.09.2018 13:07

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


                  1. EvilsInterrupt
                    27.09.2018 15:17

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


                  1. terek_ambrosovich
                    28.09.2018 11:21

                    На отлично человек не знал.
                    Отлично — это знание, ставшее отсутствием ошибок. Причём неважны причины тут… хочешь пересдавать (говори, что оценка 4 без пересдачи тебя не устраивает) — готовься лучше, и пересдавай.
                    Без ошибок.
                    Если мне на заводе инженер напортачит, я что — буду смотреть на то, что он в принципе всё знает?..
                    Тут экзаменатор как раз поступил очень корректно.


                    1. Neikist
                      28.09.2018 11:34

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

                      Здесь ничего не смущает?


                      1. terek_ambrosovich
                        28.09.2018 11:54
                        +2

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

                        Экзаменатор формирует очередь пересдачи (самому себе, как правило), и не хочет туда включать сдающего. Он уже оценил его уровень, и оценивает на 4-е (и я его понимаю). Сдающий понимает, знает предмет, но допускает ошибки, и довольно глупые. Успеет ли он до пересдачи справится с причинами, приведшими к ошибке? Не знаю, тут уже рядом сидеть нужно. Но там ещё за тобой народ, потому здесь и сейчас — 4-ка.
                        Уровень, условия включения на пересдачу «спускаются свыше». Деканатом, как правило. И эта очередь да, зависит от оценки. Ибо только её обычно и видит деканат в реестре. Если 4-шников включать в списки на пересдачу, будет уже беседа деканата с экзаменатором. С какого ты его на пересдачу-то?! У него же «хорошо».
                        Ибо время экзаменатора — принадлежит не ему.
                        Он должен обосновать требование пересдачи перед контролирующим органом (деканатом).
                        Но ученик может возразить.
                        Это его право.
                        Как правило, экзаменатор на требование «да не нужна мне 4-ка без пересдачи!» пожимает плечами, и ставит оценку, которая автоматом направляет на пересдачу (там, где я учился, хотя бы 3-ка нужна, чтобы не разбираться потом с деканатом).
                        Никаких проблем в 99,9999% случаев.
                        Потому что эта оценка до пересдачи уже ничего не значит.
                        Подготовишься на отлично — получишь отлично.


                1. hexploy
                  27.09.2018 13:38
                  +1

                  А разве он его не мотивировал? Он признал, что ученик действительно с мозгами и шарит в предмете. Признание это и есть уважение.

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


                  1. Druu
                    27.09.2018 13:40

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


                  1. EvilsInterrupt
                    27.09.2018 15:14

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


                    1. u010602
                      27.09.2018 15:31

                      А почему вы думаете, что навык переговоров исключительно приобретенный и не зависит от врожденных возможностей? Некоторым так-же сложно вести переговоры, как другим решать матан. Размышлять в стиле «вот слабак! я бы на его месте зарешал!» не продуктивно. Люди все разные, у всех есть слабости, не все слабости можно превозмочь, не все навыки можно приобрести. Некоторые навыки так-же сложно приобрести — как подрасти на 10 см усилием воли. И мы(как человечество) хотим создать условия комфортные для большинства, а не только для бетменов, что-бы каждый человек, не смотря на свои недостатки, могу раскрыть свои сильные стороны. Задачи выведения супер-солдата без недостатков — не стоит. Попытки были — можете почитать, чем они закончились.


                      1. EvilsInterrupt
                        27.09.2018 15:54

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

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

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

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


                        1. u010602
                          27.09.2018 16:04

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

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


                    1. prospero78su
                      27.09.2018 18:41

                      Я так подозреваю, что речь идёт о навыках хамства и умении искать новую работу на следующий день))


              1. nvv
                27.09.2018 12:25

                За что ненавидить? Глупые обиды какие-то.
                Преподаватели разными способами (наводящими вопросами и др.) подсказывает, но так получилось что это не помогло. В результате человек получил 4, но навсегда запомнил.
                В системе тестирования или у другого преподавателя, нет решения = нет положительного результата, на пересдачу. Так лучше?


                1. u010602
                  27.09.2018 13:13
                  -1

                  Да лучше, или 2 или 5. 4 это унизительно, я бы психанул.


                  1. DelphiCowboy
                    27.09.2018 15:00

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


                    1. u010602
                      27.09.2018 15:10

                      Я бы психанул не из-за ошибки, ошибки нужно исправлять. Здесь же в истории было явное наказание «без права пересдачи». Вопрос в стиле «что мне теперь ставить вам 4?» вызвал бы у меня достаточно стресса, что-бы я это запомнил на всю жизнь. Я считаю поступок преподавателя — чрезмерно жестоким.

                      А относительно ЧСВ и Ф-16 — если система создания ПО уязвима к ЧСП одного из членов команды — то она явно подобрана не правильно. Там где от софта зависят жизни людей — там человеческий фактор должен быть сведен к минимуму.


                    1. megathrone
                      28.09.2018 00:31

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


                1. Alesh
                  27.09.2018 14:14

                  Оценка — это мера знаний ученика, а не понтов преподавателя. Если препод уверен, что его ученик знает предмет на отлично, он должен ставить отлично. Что дала эта четверка ученику? Он на всю жизнь запомнил что 2*2=4, он это и так знал. Что у другого преподавателя из-за особенностей своей памяти, он тоже может столкнуться с тем же, не факт, другой преподаватель может быть более вменяем.

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


                  1. Druu
                    27.09.2018 14:18
                    +7

                    А какой урок это ему дало для реальной жизни?

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


                    1. u010602
                      27.09.2018 16:10

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


                      1. gremlin244
                        27.09.2018 16:20

                        Я решительно не понимаю с какого перепуга оценка 4 — сильно жесткое наказание за ошибку.


                        1. Kroid
                          27.09.2018 16:43

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


                          1. u010602
                            27.09.2018 16:59

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


                          1. ArsMak
                            27.09.2018 17:07

                            а это уже факап родителей…


                        1. Murat1992
                          27.09.2018 21:53

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


                      1. Druu
                        28.09.2018 03:11

                        Советую почитать (всем лайкнувшим в т.ч.) про «право на ошибку» и его влияние на не зрелую психику, тема хорошо изученная.

                        Человек — студент, какая незрелая психика? Хватит уже этого инфантилизма. Он к реальной работе готовится, к ответственности, а не в детский сад пришел.


                        1. Neikist
                          28.09.2018 07:43
                          +1

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


                          1. tommyangelo27
                            28.09.2018 10:04

                            До 20? Да это отличный расклад :)
                            Лично мне понадобилось 25.


                            1. Neikist
                              28.09.2018 10:10

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


                          1. DelphiCowboy
                            28.09.2018 11:49

                            Сколько вам лет?
                            Я в начале 90-х поступал уже зная кем я хочу стать и чем заниматься по окончании ВУЗа.


                            1. stul5tul
                              28.09.2018 11:59

                              Я в начале 90-х поступал уже зная кем я хочу стать и чем заниматься по окончании ВУЗа.


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

                              Все больше вторая вышка стала призванием.
                              Или вообще вышка и профессия не связаны.


                            1. Neikist
                              28.09.2018 12:27

                              26


                        1. u010602
                          28.09.2018 09:17

                          Человек зреет после 30. Задолго после первой работы, первой жены и первого ребенка. А студенты — дети. Хотя конечно это так не воспринимается — когда тебе меньше 30, а уж тем более меньше 25. Мои дети в 3 года уже говорят что они взрослые :)


                          1. stul5tul
                            28.09.2018 10:44

                            Человек зреет после 30.

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

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

                            А современные люди — какое там учение, они, оказывается, после 30 дозревают еще (как вино, что ли)

                            P.S.:
                            А если серьезно — то да, современные люди более инфантильны (можно почитать про особенности поколения Y).

                            Но раз на раз не приходится. Всех грести под одну гребенку — некорректно.

                            У меня есть знакомые: одна уехала из родительского дома в 15 лет учиться и с тех пор живет самостоятельно, обеспечивает родителей; другая уехала в 18 и родители вообще не помогали и не помогают (у них конфликт), моталась по съемным квартирам, как-то зарабатывала сама; другая в 40 лет сидит на шее у родителей, не работала и не работает (здорова, с вышкой), полагаю, и не будет (родители не олигархи, обычные).


                            1. BigBeaver
                              28.09.2018 12:53

                              И вот уже 2 тысячи лет вся европа расплачивается за его незрелые действия)


                            1. aknew
                              28.09.2018 13:14

                              По поводу Христа есть стандартный ответ что Илья Муромец в 33 впервые с печи поднялся.
                              А так — как-то несерьезно сравнивать чисто биологическое взросление из древности (мужчина и сейчас в 15 может и детей заделать, и по физическим габаритам не кардинально отличается от взрослого) и более сложное социальное и профессиональное взросление. Вроде как Моцарт прославившийся еще подростком как композитор и тогда считался гением и скорее исключением, чем правилом, а в основном реального профессионально зрелыми люди и тогда становились после 20 (учебу никто не отменял же), думаю, часто сильно после.


                    1. Kocmohabt314
                      27.09.2018 17:33
                      +1

                      Ну почему любой, вон на ракете «Протон» кто-то поставил датчик вверх ногами… а, ну да…


                  1. gremlin244
                    27.09.2018 16:11

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


                    1. u010602
                      27.09.2018 16:28

                      Ну так и система оценивания не 1000 бальная, и оценку ставят не за «выполнение задания», задача экзамена выявить итоговый уровень знаний и умений ученика в конце курса. На лабораторке вполне нормально ставить 4 за такую ошибку. А экзамен это инструмент преподавателя, похожий на собеседование. Задача преподавателя разделить учеников на 5 категорий. Каждая категория детально описана в рекомендациях министерства образования, ведь диплом у нас государственного образца, а не образца «Ивана Федоровича»?
                      Конечно каждый ученик — личность и выполняет задание не как другой. И вы могли-бы подумать что 5 это 100% идеальное знание предмета в стиле Бетмена, но это не так. 5 это примерно 80% и более усвоения материалов и навыков.
                      На практике обычно 5 обозначает — «ученик понял суть предмета и его принципы», а не стал матерым специализстом за пол года с набитой рукой. Например на вопрос «чем прямое преобразование Фурье отличается от обратного», отличник ответит «Прямое преобразует сигнал в спектр, а обратное по спектру восстанавливает сигнал.» А хорошист начнет цитировать определение сначала первого, потом второго. Т.е. хорошист запомнил, выполнил все что нужно было, но ни чего не понял, «вы хотели чтоб я это знал — я знаю». А троечник как хорошист, но не смог все запомнить. НО это грубо и мое мнение, министерство расписывает лучше.


                      1. gremlin244
                        27.09.2018 18:05

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


                        1. u010602
                          27.09.2018 23:16

                          Конечно обесценивается, но так и мотивация учащихся падает и их способности. 5 это значит — годный студент фактически, интересуется предметом, интересуется учебой. Если у человека 4 и 5 в дипломе — то он нормальный и адекватный, можно брать. Если везде одни 4 — ну значит он прилежный болван, делает что говорят, в суть не вникает. Если значительное количество 3 по профильным предметам и при этом есть и 5 и 4, значит эмоционально не стабильный, не дисциплинированный и своенравный. Может работать шикарно месяц, потом месяц бухать или прокрастинировать. А через год пошлет всех матом, скажет у вас технологии скучные\не правильные — я ушел.

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

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

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

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

                          Если брать всякие курсы и сертификаты — то там два состояния — сдал или не сдал, дали или не дали. Фактически 2 и 5. А что такое 4? Пол сертификата? Полу специалист?

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


                          1. sumanai
                            27.09.2018 23:43

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


                            1. Neikist
                              28.09.2018 00:36

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


                            1. tommyangelo27
                              28.09.2018 10:07

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


                          1. Druu
                            28.09.2018 03:15

                            5 это значит — годный студент фактически, интересуется предметом, интересуется учебой.

                            На практике у каждого преподавателя свое мнение о семантике оценок и его надо просто принимать. У меня например у преподавателя по матану было мнение из разряда канонического "на 5 знает господь бог, на 4 — я, а вы — на все остальное", с-но иногда никто из потока не мог сдать с первого раза хотя бы на 3 :)


                          1. 0xd34df00d
                            28.09.2018 06:10

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


                          1. ApeCoder
                            28.09.2018 08:57

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

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


              1. nmrulin
                27.09.2018 14:02

                Вот смотивировал, в сложных расчётах не забывать, что 1/2 больше 1/4. В физике народ вот постоянно палиться на том, что результат в 10 раз больше или меньше. Казалось бы небольшая ошибка, а на самом деле можно такой расчёт отправить в помойку, если он на порядок расходится. И рассчитать «на глазок» с ошибкой 10-20%.


              1. 0xd34df00d
                27.09.2018 16:47

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

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


                1. tyomitch
                  27.09.2018 18:13

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

                  В российском-то, т.е. сразу после школы? Ну-ну.


                  1. 0xd34df00d
                    27.09.2018 18:16

                    В Физтехе, например.


                    1. tyomitch
                      27.09.2018 18:19

                      Ну так «в абстрактном российском вузе» и «в Физтехе» — это две очень большие разницы.


                    1. u010602
                      27.09.2018 23:27

                      Личность становится зрелой — пожив жизнь. Пройдя определенные этапы, и семейные и бытовые и рабочие. Т.е. это тупо зависит от времени жизни. И не нужно путать интеллект и самоконтроль — со зрелостью личности. Личность становится зрелой примерно к тому времени, когда разрешено баллотироваться на президента. И то не всегда! Яркий пример очень одаренного, но не зрелого, человека показан в фильме «Good Will Hunting», и там как раз аналог Физтеха.


                      1. 0xd34df00d
                        28.09.2018 06:10

                        Не очень понял, причём это к мотивации к изучению предмета.


            1. Vantela
              27.09.2018 12:57

              Это да. Бывает.

              Я когда 18 лет назад писал «олимпиадную» как бы предварительно вступительную работу по математике в МГУ решил 5 задач из 6ти.
              В одной чуток налажал. Сложная стереометрия, я рассмотрел 3 случая из 4х. 4ый вырожден, но я не написал об этом. Ок. Минус.

              Но другая задача… До сих пор обидно. Две страницы вычислений и в конце:
              … = 8+6 = 10
              Ответ: 10

              И минус за задачу. 3 за работу — не прошел. Правильный ответ был 14.
              Так что пришлось поступать летом.

              PS. Еще. Более эпичесский фейл. Сдавал ГосЭкзамен. Где то в ходе одного доп. вопроса нарисовал касательную и доответил на вопрос. А экзаменатор такой: «Ну, хорошо. Это вы знаете. Давайте напоследок выведете мне уравнение касательной и закончим на этом.».
              Я такой радостный — 5 за Гос уже у меня, что там эта касательная, я ее в 10 классе мог вывести. И… ступор. Не выводится. Так порисовал — не выводится.
              Эдак попробовал — фигня получается(я ж помню формулу!).
              Результат — 4 по госу из-за этой касательной. Вышел — все вывелось устно.


              1. TheIseAse
                27.09.2018 14:55

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


                1. Vantela
                  27.09.2018 15:53

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


              1. DistortNeo
                27.09.2018 15:52

                Сейчас в МГУ арифметические ошибки трактуются в пользу абитуриента.
                Сейчас такое было бы плюсом с точкой.


                1. Vantela
                  27.09.2018 17:14

                  Да? Даже на МехМат\физмат\ВМиК?
                  Даже не знаю как к этому относиться.

                  Хотя… если одновременно усложнить задачи, то думаю и норм.


          1. Alexsandr_SE
            26.09.2018 22:48
            +2

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


          1. 0xd34df00d
            26.09.2018 23:48
            +1

            А если он забывает аксиоматику, то какой он тогда математик?

            Ну, аксиоматик много разных, математика — это не про заучивание аксиоматик.

            Хотя формулу нахождения корней действительно стоит уметь выводить.


          1. anprs
            27.09.2018 08:18
            +1

            А теперь представь, что времени вывести и доказать нет. И д.ф.-м.н выглядит профаном


          1. LinearLeopard
            27.09.2018 10:34

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


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


            1. gasizdat
              27.09.2018 10:43

              Так на вскидку не скажу. Насколько помню это было в одной из лекций 100 уроков математики.


              1. Druu
                27.09.2018 11:16

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


                1. gasizdat
                  27.09.2018 11:27
                  -1

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


                  1. Gasaraki
                    27.09.2018 14:12

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


                    1. gasizdat
                      27.09.2018 14:25

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


                1. nmrulin
                  27.09.2018 14:04

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


                  1. Druu
                    27.09.2018 14:10

                    Для формулы кардано не нужна теория Галуа.

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


                    В Википедии вывод достаточно простой и специфических знаний не требует.

                    Открытие сейфа тоже не требует специфических знаний — это ведь не сложно, влево-вправо крутить :)


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


          1. luck1ess
            27.09.2018 13:20

            Но как математик ты можешь например сходу не ответить сколько существует суръекций между множествами. Я думаю подобных вопросов можно много накидать.


            1. 0xd34df00d
              27.09.2018 16:52

              Или там арифметика кардиналов-ординалов, сколько будет омега в степени омега умножить на омега там, например.


          1. ddwu
            27.09.2018 13:36

            программирование — не математика.


          1. bay73
            27.09.2018 15:01

            Да, похоже учителем математики в школу Савватеева бы после такого не взяли.


        1. cooltonbek
          27.09.2018 00:25
          +3

          +100500.
          Особенно на первых нескольких собеседованиях.
          Многие хорошие спецы просто никогда не были на собеседованиях, потому как их просто безоговорочно переманивали или звали.


        1. TheShock
          27.09.2018 02:34

          на небольшое время «забыть»

          Я не очень представляю, как Senior JS разработчик может забыть, что такое замыкание)


          1. shaggyone
            27.09.2018 07:35

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

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


            1. Free_ze
              27.09.2018 11:22

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


              1. shaggyone
                27.09.2018 12:20

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

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


                1. TheShock
                  27.09.2018 12:50

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

                  Опять вы впадаете в крайность. Зачем?


                  1. shaggyone
                    27.09.2018 13:07

                    Это ситуация, которая описана в статье.


                1. Free_ze
                  27.09.2018 13:01

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

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

                  Есть разница между выполнением задач и выполнением их в хорошем качестве.


                  1. shaggyone
                    27.09.2018 13:15

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

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

                    Есть разница между выполнением задач и выполнением их в хорошем качестве.

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


                    1. Free_ze
                      27.09.2018 13:29
                      +1

                      есть же испытательный срок

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

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

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


                      1. shaggyone
                        27.09.2018 13:47

                        Нельзя всех взять вне штата, а потом устраивать чемпионат на вылетание.

                        В комментарии ниже этот момент затронул.

                        Если у человека есть знания, но нет возможности это выразить, то как он с командой общаться будет? С заказчиком?

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

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

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

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


                    1. tyomitch
                      27.09.2018 18:18

                      Может конечно, нужно джедаем найма быть, но по мне проверить человека «в бою» надёжнее.

                      Надёжнее, но намного дороже в случае его неуспеха.

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


                  1. shaggyone
                    27.09.2018 13:18

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

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


                    1. Free_ze
                      27.09.2018 13:39

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


                      1. shaggyone
                        27.09.2018 13:57

                        Вижу у меня «не» потерялось. Предложение должно звучать так:

                        Но именно прибавит тому кто ответил, а не убавит баллов у второго.


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

                        А тут мы упираемся в эффект Даннинга — Крюгера. Особенно если проведение интервью это не основная работа, а то, что приходится делать время от времени.

                        Мне кажется, мы с вами примерно про одно говорим.


            1. TheShock
              27.09.2018 12:49

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

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


              1. shaggyone
                27.09.2018 13:05

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

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

                Вопрос в дальнейшей реакции вас, как интервьюера.


                1. mayorovp
                  27.09.2018 14:03

                  Например он недавно из института...

                  … и собеседуется на сеньора? :-)


                  1. shaggyone
                    27.09.2018 14:09

                    Признаюсь, этот момент я проглядел ).


                  1. Druu
                    27.09.2018 14:12

                    Не видели таких ни разу? :)


                  1. 0xd34df00d
                    27.09.2018 16:58

                    Моя история, кстати.

                    И да, мне было немножечко грустно, когда у меня всё CV в гитхабе и прошлых местах работы лет на 9 с десятком разных проектов, от самописной in-memory-БД для геокодинга до всякого natural language processing и коллаборативной фильтрации, а меня спрашивают определение R-squared и почему конструктор не может быть виртуальным.


          1. michael_vostrikov
            27.09.2018 09:18

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


            1. qrKot
              27.09.2018 10:50

              <зануда мод>Ну почему же сразу неправильным? В замыкании проводов как таковом ничего неправильного нет — это нормальная практика. А в словосочетании «короткое замыкание» про «неправильность» та часть, которая «короткое»</зануда мод>


            1. michael_vostrikov
              27.09.2018 17:37
              +2

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


        1. rkosolapov
          27.09.2018 07:32

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


        1. nikolayv81
          27.09.2018 08:44
          +1

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


          1. Neikist
            27.09.2018 09:29

            Был во второй категории, но сейчас скорее в средней. Просто понял что неправильно запоминал все это. Хотя может все эти замыкания и прочие термины запоминаются потому что выглядят интересно и часто мелькают в описаниях технологий/статьях?


            1. nikolayv81
              27.09.2018 09:43

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


              1. Neikist
                27.09.2018 09:47

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


              1. Zyxxyz
                27.09.2018 13:20

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


                1. nikolayv81
                  27.09.2018 14:12

                  Для меня вы из категории не понимающих как такое возможно.
                  Уточню, когда вам говорят а расскажите про "название" вы просто не помните про что оно :)
                  p.s. и да уточнить не проблема, проблема в том что вторая сторона делает однозначный вывод руководствуясь своим опытом и верой в то что если не может сходу ответить то не знает.


                  1. PashaNedved
                    27.09.2018 16:29

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

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


                    1. nikolayv81
                      27.09.2018 18:54

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


                  1. qrKot
                    28.09.2018 06:37

                    Уточню, когда вам говорят а расскажите про «название» вы просто не помните про что оно :)


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

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

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

                    Как бы, вспомните правильный термин, подходящий под определение — это да, вопросы не для собеседования, а, скорее, для кроссворда. А вот «объясните термин» — вроде, норм.


              1. Lookmorum
                27.09.2018 14:39
                -1

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

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


                1. nikolayv81
                  27.09.2018 17:13

                  Да, это с 3х лет было да и читать не осоьо умеет.


          1. mayorovp
            27.09.2018 11:03

            А зачем запоминать определения дословно? При наличии понимания о чем речь определение можно сочинить на ходу используя ту самую логику в которой есть преимущество.


        1. a_e_tsvetkov
          27.09.2018 11:18
          +3

          Глупо отрицать что существуют интервьюэры пытающиеся почесать свое ЧСВ на собеседованиях. Но надо помнить что собеседование процесс двухсторонний. Если вы видите что компания вам не подходит, скажите спасибо, за то что они об этом честно рассказали и двигайтесь дальше. Хуже когда на собеседовании врут про то что будет скрам и передовые технологии, а после выхода на работу оказывается что везде code-and-fix на фреймворке который уже вышел из поддержки, но для этого и дален испытательный срок. Он, как и собеседование, тоже работает в обе стороны.

          И еще, мне кажется что если вы волнуетесь на собеседованиях, то вам еще рано называться senior :)


          1. Kocmohabt314
            27.09.2018 17:35

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


            1. a_e_tsvetkov
              28.09.2018 04:45

              Если могут возникнуть вопросы, то нужно иметь на них ответы.

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

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


      1. dead_undead
        26.09.2018 21:22
        +6

        в какой системе счисления?)


        1. MacIn
          26.09.2018 21:39
          +1

          Вы нам подходите.


        1. 0xd34df00d
          26.09.2018 23:49
          +1

          В каком кольце? ;)


        1. middle
          27.09.2018 10:10

          Все позиционные системы счисления изоморфны.


      1. Moskus
        26.09.2018 21:41
        +4

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


        1. Danik-ik
          26.09.2018 22:19

          Таки да. Всегда путал по номерам законы Ньютона...


        1. gohan
          26.09.2018 23:36
          +4

          Плюсану мануально, так как по-другому не могу. Для меня все эти вопросы на «память» — полный бред. Этак скоро начнут собеседовать как-то так: «Какого числа, какого месяца и какого года Страуструп придумал C++? Аааа, не знаешь! Ну так говно ты, а не C++ разработчик».

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


          1. cooltonbek
            27.09.2018 00:28
            -2

            +1


            1. cooltonbek
              27.09.2018 15:33
              -1

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


              1. mayorovp
                27.09.2018 15:39

                Потому что никому не интересно что бы вы сделали если бы у вас была карма. Ограничения отрицательной кармы вообще-то задумывались как наказание, а не как индульгенция на оставление мусора.


                1. cooltonbek
                  27.09.2018 18:45
                  -2

                  Вопрос был риторический.
                  Вы думаете, ваш камент как-то уменьшил количество мусора?
                  Хм…


                  1. sumanai
                    27.09.2018 20:12

                    Уменьшит в будущем.


              1. Druu
                28.09.2018 03:20

                Думаю, если бы вы более внятно изложили свою мысль (развернули, чем вам так понравился коммент и почему, а не просто тыкнули +1), то вас бы не минусовали.


          1. agarus
            27.09.2018 00:54
            +2

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


            1. tyomitch
              27.09.2018 11:38

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


              1. hallucination
                27.09.2018 20:16

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


            1. hokum13
              27.09.2018 12:11

              Ну год и месяц октябрьской революции помнить надо (день ИМХО не обязательно), чтобы в ноябре не смотреть «парад в честь парада 7.11.1941». По крайней мере в нашей стране, по крайней мере ближайшие лет 100.

              Но в принципе согласен. Знание того, какая именно полубригада штурмовала южные флеши в 8 утра 26 августа — информация для массового обучения лишняя. Важно что в этом бою сражалась буржуазная армия объединенной Европы с феодальной армией РИ и что в его итоге понесла поражение (стратегическое, а не тактическое). И то, что не смотря на поражение в войне буржуазная идея спустя 200 лет цветет и пахнет.


        1. TheShock
          27.09.2018 02:36

          Это не «сколько будет 2?2», а то, что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта

          Замыкание — это такой базис, что более подходящий пример, что 2?2 — это термин «умножение». Может ли математик забыть термин «умножение»? Для этого необходимо зубрить?


          1. Murat1992
            27.09.2018 10:59

            Может ли математик забыть термин «умножение»

            А программист?

            Для математика аналогом «замыкания», скорее, будут термины: «поле», «кольцо» и т.д.


            1. hexploy
              27.09.2018 14:04

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


              1. Druu
                27.09.2018 14:15

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


                1. 0xd34df00d
                  27.09.2018 17:00
                  +1

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


          1. TheIseAse
            27.09.2018 15:07

            А что, если сеньор всю жизнь читал статьи про кложур и рекуршен, а замыкание – это термин из электротехники?


            1. ApeCoder
              27.09.2018 19:31

              Сеньор должен знать понятие «замыкание», а не слово :)


        1. rkosolapov
          27.09.2018 07:36

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


          1. Druu
            27.09.2018 08:52

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

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


          1. nikolayv81
            27.09.2018 08:58

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


          1. eugenk
            27.09.2018 15:49
            +1

            Понимаете ли какое дело, к программисту нельзя предъявлять таких же требований как скажем к слесарю. Ибо у него область компетенции порой просто необъятна. Взять последний мой проект. Железка — на верилоге. Тесты — на яве. Клиентская библиотека — на С++. Морда лица всего этого безобразия — джаваскрипт в броузере. Плюс схематика и разводка для железке делалась в eagle. И этот проект ещё далеко не самый сложный, на пару месяцев! И программёр я далеко не уникальный, так, крепкий сеньёр, не более. И всё перечисленное мне пришлось «пощупать руками» в ходе одного проекта… Не мудрено, что если меня будут спрашивать о каких-то пыльных углах какого-то из этих инструментов, я поплыву как нерадивый студент. Но если мне надо будет в этом разобраться, сделаю это очень быстро. Самый умный начальник, которого я в жизни знал, любил говорить так (за точность цитаты не ручаюсь, ибо было это 18 лет назад, но смысл сохранен) — «Мне не нужны те кто всё знает, ибо всё знать невозможно. Мне нужен тот, который ничего не знает, но дай ему задачу, через неделю принесёт пусть грубое, но решение».


            1. ApeCoder
              27.09.2018 19:35

              Как бы вы выбирали, какого кандидата принять на работу если надо закрыть вакансию?


              1. eugenk
                27.09.2018 19:54

                А так бы и выбирал, как мой самый умный начальник, респектище и уважуха ему во веки веков, аминь. Дал бы совершенно практическую задачку. Связанную с будущей работой, хотя и элементарную. И поглядел бы как чел справится. Впрочем есть вариант. Дать в качестве задачки полную херню и ахению, однако требующую серьёзной разработки своего собственного алгоритма. Поскольку задачка полная херня и ахения, в тырнетах чел решения явно не найдёт. Тем интересней будет ЧТО он придумает… Один раз мне такое попадалось. Во избежание косвенной рекламы, опущу подробности.


        1. ABy
          27.09.2018 08:35

          что формула, описывающая термодинамический процесс без обмена теплом со средой, называется законом Бойля-Мариотта
          Нет, она называется уравнением Пауссона. Закон Бойля-Мариотта описывает изобарный процесс. Пара минут Гугла;)


          1. ABy
            27.09.2018 08:39

            Или вы специально перепутали а я не понял подвоха?


            1. BigBeaver
              27.09.2018 15:53

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


        1. fareloz
          27.09.2018 09:55

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


        1. qrKot
          27.09.2018 10:55

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


          Вот тут стоит признать, что вопрос был «что такое <термин>», а не «каким термином называется вот это». И вот тут ситуация начинает играть другими красками. Не «как называется формула, описывающая термодинамический процесс и т.д.», а «в чем суть закона Бойля-Мариотта». Разные несколько вопросы, не правда ли?


          1. Druu
            27.09.2018 11:23
            +1

            а «в чем суть закона Бойля-Мариотта». Разные несколько вопросы, не правда ли?

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


        1. olsamurai
          27.09.2018 12:26
          +1

          Плюсануть, к сожалению, не могу, но у вас один из самых толковых комментариев! Я учился дважды, но последний раз это было уже почти 12 лет назад, а первый 21. Я программирую с 1992 года. Многие определения я помню еще, но далеко не все. Можно еще в С++ спрашивать с какой версии в лямбдах происходит захват *this? Или с какого билда VS 2017 intellisense будет корректно отображать Structured bindings. Но это нужно только для ЧСВ. Кому надо это быстро нагуглят. Скажу честно, но меня ни разу не собеседовали по терминам или алгоритмам, и я, кстати, тоже! Какие-то определения можно спрашивать вчерашнего студента, у которого может не быть портфолио, но не сеньера…


      1. rajven
        26.09.2018 22:18
        +3

        Как говорил мой препод 25 лет назад — зачем мне помнить определения/константы, если у меня есть справочник, в котором это всё написано? Мне надо знать КАК это работает.


        1. 9660
          27.09.2018 06:44

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


          1. rajven
            27.09.2018 13:45

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


            1. 9660
              27.09.2018 13:55

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


              1. rajven
                27.09.2018 14:11

                Тут только один вариант — поменять место лова. Если приходят только неподходящие специалисты, то, возможно, вы выбрали не то болото для их поиска?


                1. tvr
                  27.09.2018 16:01

                  Или болото то, но наживка мелковата и прикорма пожалели.


        1. WasqH
          27.09.2018 13:35

          Эйнштейн как-то сказал что он намеренно забыл скорость звука тк может найти её в любом справочнике.


          1. Druu
            27.09.2018 13:48

            Эйнштейн был музыкантом ;)
            Длина резонатора камертона чуть меньше 20см, это четверть длины волны при частоте 440гц, длина волны чуть меньше 0.8м, скорость звука чуть меньше ~350м/с, ему бы даже смотреть не пришлось :)


            1. WasqH
              27.09.2018 19:56

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


      1. predecessor
        27.09.2018 11:19

        От балды легче… ибо тензорный анализ напрягает умы упругих программистов.


      1. nmrulin
        27.09.2018 13:35

        Он может и забыть сколько будет 71x34. А третьекласник, владеющих искусством быстрого счёта его обгонит.


    1. Fengol
      26.09.2018 20:38
      +18

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


      1. cooltonbek
        27.09.2018 00:29
        -5

        рукалицо


        1. cooltonbek
          27.09.2018 15:38
          -1

          Какие мы нервные


          1. cooltonbek
            27.09.2018 18:22
            -1

            Почему то я не сильно удивлен.
            Не зря говорят, психология толпы.
            Если бы я эти минусы схватил лет 7-8 назад, я бы действительно сильно переживал.
            А сейчас, пф-ф…
            Какую-то истерию развели. Детский сад, честное слово.


      1. lightman
        27.09.2018 08:16
        +2

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

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

        А если автора оставить одного с чужим кодом в котором есть ключевое слово virtual и попросить код модифицировать согласно таске, он справится или нет? Я думаю ему и дня не понадобится, да что там, и часа. Даже если он запамятовал, 20-гуглинг с чтением коммента на стэковерфлоу заставит его хлопнуть по лбу «ах да, я же встречался с этим» и приступить к решению задачи. Думаю 20 секунд рабочего времени для начальника этого разработчика не такая уж большая цена за незнание?
        Так ли сурово можно продолжать считать такого разработчика непригодным к работе сеньор сварщика кода?


        1. qrKot
          27.09.2018 11:07
          +2

          Ну, мне вот кажется, что с virtual вы немного лукавите.

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


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

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


          1. olsamurai
            27.09.2018 12:59

            Вот вы тут поучаете, а что такое «виртуальное наследование»? В С++ это особое наследование, со своей семантикой. И гуглить нужно в направлениие «Multiple inheritance» & «diamond of death»


            1. 0xd34df00d
              27.09.2018 17:04
              +1

              Если в вашей компании в коде много виртуального наследования, то, велика вероятность, что всем будет лучше, если соискатель туда не устроится (и особенно соискателю).


              1. olsamurai
                28.09.2018 12:10

                В своей жизни сталкивался всего несколько раз: один раз это было в году 96-98, тогда писали на Borland С++ и там была заморочка с наследованием от TObject, еще раз относительно недавно, когда делал code review для проекта, и это было меньшее из зол при уходе от void* на все что можно. Было еще пару раз, но уже и не вспомню. А вообще я не фанат виртуального наследования.


            1. qrKot
              28.09.2018 06:47

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

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


              1. olsamurai
                28.09.2018 12:25

                Может я не совсем понял о чем речь… Для меня определение — это то что написано в «книжке». А вот если человек претендует на сеньера С++ и не знает таких вещей (хотя бы своими словами), то это не очень хорошо. Может мне по жизни везло, но мне не очень часто приходилось отвечать на вопросы: что такое класс. Или чем класс отличается от объекта. Восновном, если и был разговор по языку, то какие-то редко используемые вещи, ну или что-то не совсем очевидное. Если бы меня спросили такие вопросы, то я бы ответил, но в такой фирме работать не стал…


        1. mayorovp
          27.09.2018 11:16

          Для того чтобы за 20 секунд понять что означает ключевое слово virtual, надо знать как работает динамический полиморфизм. Понимать чем отличается статический тип переменной и класс объекта на который она ссылается.

          И да, существуют программисты которые этого не знают и не понимают.


          1. int03e
            27.09.2018 17:26

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


            1. mayorovp
              27.09.2018 17:29

              Ну так при собеседовании на рубиста вас, скорее всего, и не будут об этом спрашивать…


    1. bromzh
      26.09.2018 20:39
      +16

      А когда на senior-позицию приходят полные нули, что делать? Знакомый фронтендер периодически собеседует людей на позицию senior-ов. Люди говорят/пишут, что у них 3-5-10 лет опыта, но они не знают концепции замыканий.
      ИМХО, это очень хороший вопрос, чтобы быстро отсеять всяких неадекватов, при условии, что он задаётся не HR, и не ради самоутверждения.
      К тому же, это ещё и хороший вопрос для отсеивания неадекватных работодателей: если после моего ответа начинают просить что-то там реализовать на бумажке, то начинаю задумываться, а надо ли мне тут работать.


      1. Neikist
        26.09.2018 20:48

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


        1. bromzh
          26.09.2018 21:07
          +1

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


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


          1. SemaIVVV
            26.09.2018 23:05
            -10

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

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

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

            Сидел он значит, изучал фронтенд (новое для себя дело) и встал в ступор — а почему нельзя в js через те же медиаторы и обертки событий, как было в классах на c++, обойти синхронность языка? Давай-ка я напишу это, чтобы и здесь реализовать мнимо-неблокируемый интерфейс, и назову всё это дело промисом!

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


            1. ookami_kb
              26.09.2018 23:12
              +5

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

              Т.е. в Вашем проекте на js нельзя писать на js? В нем же все функции образуют замыкания.


              1. b00taNik
                27.09.2018 12:24

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


                1. SemaIVVV
                  27.09.2018 14:50
                  -3

                  В прошлом? В ПРОШЛОМ? ааа, жесть! Вы вообще хотя бы слегка представляете себе, как работает стек вызова всего вашего «будущего»? Какие системные функции затрагиваются при вызове ваших технологий? Какие проверки и со стороны каких процессов идут во фронтэнде? Всё это ваше «будущее», это устаревшая технология бэкэнда (80-ые по-моему годы, ну может девяностые – 5-я, или 6-я студия короче от майкрософта). Именно тогда бэкэнд языки были еще такими ущербными и там также приходилось применять обертки событий (EventLoop как тут кто-то в комментах писал, думая, что это круто — товарищ, это не круто, это смерть твоему проекту в продакте, если ты нагрузишь стек событиями и будешь ждать их окончания, не контролируя саму среду в которой выполняется твой код [браузер в данном случае]).

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

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

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

                  Тоже самое тут про virtual dom кто-то писал в комментах, ну и у самого автора поста это как раз-таки вызвало бурю негатива — и да, я полностью его поддерживаю в этом. Бла-бла-бла Senior… — не знаешь вирутал? не, не сениор. А вот собеседующий сам в курсе, что даже не junior, а первый месяц изучающий любой язык джуниор, уже знает и всегда использует только виртуал дом? 10-20 лет назад, любой, кто начинал попытку использования в своем бэкэнде web интерфейса (подгрузив объект webbrowser, или создав из своей программы экземпляры штатного веббраузера системы) тут же, при первом опыте внедрения большого потока данных в реальный дом, сталкивается с тем, что без виртуал, его код не будет работать. Ибо, подвесив свой ПК таким обращением в реальный дом, он начинает анализировать, что же произошло и находит причину, что работа с прямым дом, контролируемым всеми и вся, так нагружает и тормозит пк — что работа с ним просто не реальна.

                  И он тут же изобретает свой виртуал дом и обрабатывает его штатными регэкспами в памяти, выгружая в файлы готовые куски кода, если их слишком много для работы из памяти напрямую, а затем уже использует эти куски в своем веб интерфейсе. О чудо, спустя 20 лет, кто-то изобрел то же самое и назвал это virtual dom — и это да, это важно, это только для senior-ов технология, только они в курсе, как это и для чего :( аааа, жесть просто, не хватает уже эмоций на таких вот чудо-профи — куда катится мир программирования? Что, никто больше не хочет думать? Все читают каких-то ущербных чудо-разрабов, чтобы самим стать такими же ущербными и писать всякую чушь к месту и нет? Кто-то читает вообще спецификации самих языков? Спецификации ОС и аппаратной части ПК? Чтобы понимать, как работает тот, или иной метод в реальности?

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

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


                  1. mayorovp
                    27.09.2018 14:57

                    Вот вам код:


                    fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed")
                    .then(x => x.json())
                    .then(x => console.log(x.hello))

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


                    1. Drag13
                      27.09.2018 15:54

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


                      1. mayorovp
                        27.09.2018 16:01

                        А цикл-то откуда возьмется? :-)


                        1. Drag13
                          27.09.2018 16:16

                          Зависит от кривизны. Можно и while(true), можно и setInterval, можно даже на requestAnimationFrame повеситься :) Но вообще согласен, все равное он будет в event loop проверяться.


                          1. SemaIVVV
                            27.09.2018 18:46
                            -1

                            Да что ты будешь делать. Вот что вы читаете? Какой цикл вы где видите? Вы спецификацию xmlhttprequest читали вообще?

                            Весь fetch этого чудо-автора ниже джуниора, это регистрация промиса, резервирование состояний, объявление функций response и reject, запуск таймера опроса промиса для получения состояния исполнения, и, только затем, исполнение ТОГО ЖЕ КОДА ОТ xmlhttprequest:

                            function eH001(){
                            	if (this.status == 200)(x => x.json());
                            	(x => console.log(x.hello));
                            }
                            var XH001 = new XMLHttpRequest();
                            XH001.onload = eH001;
                            XH001.open('GET', 'https://www.mocky.io/v2/5185415ba171ea3a00704eed');
                            XH001.send();
                            


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

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

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


                            1. mayorovp
                              27.09.2018 18:50

                              запуск таймера опроса промиса для получения состояния исполнения

                              Ваши сообщения — это какой-то сборник анекдотов. Откуда вы взяли, что существует какой-то таймер опроса?


                              Кстати, приведенный вами код не работает.


                              1. b00taNik
                                27.09.2018 19:17
                                +5

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

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


                              1. SemaIVVV
                                27.09.2018 19:47
                                -3

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

                                На счет не работает — откуда мне знать, что вы там вызываете своими объектами.
                                Запишите обработчик для проверки так, чтобы узнать в консоли работает или нет:
                                function eH001(){
                                if (this.status == 200){console.log('OK!')}else{console.log('NO!');}
                                }


                                >@b00taNik Кроме того, что он не работает так еще и замыкания использует,

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


                                1. mayorovp
                                  27.09.2018 20:05

                                  И это пишет якобы сеньор :-) Вроде бы стандартное API, доступное во всех современных браузерах — но нет, "откуда мне знать, что вы там вызываете своими объектами".


                                1. b00taNik
                                  27.09.2018 21:57

                                  Явное объявление функции, либо вызов в анонимном варианте [со скобками] внутри другой функции — вот что является замыканием


                                  А вот википедия, например, считает что замыкание — это функция первого порядка (т.е. функция-объект, как, eH001), и которая использует внешние переменные, не являющиеся ее параметрами (как this.status, например).

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

                                  PS: код не работает, потому что он синтаксически некорректно составлен, да и x не определен, если бы вы хоть немного понимали в JS, до вас бы это дошло.


                                  1. vintage
                                    28.09.2018 12:29

                                    this не замкнут, это неявный параметр функции. А вот console — вполне себе.


                            1. Drag13
                              27.09.2018 22:08

                              Простите, а что такое х?


                      1. elvenharp
                        27.09.2018 19:53

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


                        1. Drag13
                          27.09.2018 22:07

                          Абсолютно правы. Поэтому и написал «от кривизны».


                    1. SemaIVVV
                      27.09.2018 15:56
                      -1

                      Не выставляйте себя клоуном — и не пишите больше сюда. Вы просто новичок и ниже джуниора.
                      fetch всего лишь обертка для XMLHTTPRequest, чтобы такие неумехи, как вы писали меньше букв, не понимая технологии запроса данных. Если вы не понимаете, как написать XMLHTTPRequest запрос с if else (и при необходимости, заюзать catch), как в вашем fetch-е — просто идите на курсы базовые по программированию что-ли.


                      1. mayorovp
                        27.09.2018 16:01
                        +1

                        То есть кода не будет? Почему-то я это знал…


                      1. fatronix
                        27.09.2018 17:26
                        +1

                        fetch всего лишь обертка для XMLHTTPRequest
                        Это неправда ни в контексте стандарта, ни в контексте существующих имплементаций.


                      1. b00taNik
                        27.09.2018 18:45
                        +1

                        Я слышу бекендеров вой
                        Я слышу фронтендеров плачь
                        Там где ты пишешь fetch
                        Я реализую через if и catch.


                    1. Druu
                      28.09.2018 03:31

                      если условный фетч, который принимает колбек:


                      function helloLog(x) {
                       console.log(x.json().hello);
                      }
                      
                      fetch("https://www.mocky.io/v2/5185415ba171ea3a00704eed", helloLog);

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



              1. SemaIVVV
                27.09.2018 13:39

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


            1. Synoptic
              26.09.2018 23:17
              +6

              Очень интересно посмотреть на код ваших проектов без замыканий и промисов.


            1. Free_ze
              26.09.2018 23:31

              Инкапсуляция состояния без замыканий?


              1. mayorovp
                27.09.2018 11:21

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

                А в современном JS уже есть символы и хотят ввести приватные поля.


                1. Free_ze
                  27.09.2018 11:42

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

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

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


                  1. mayorovp
                    27.09.2018 12:18

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


                    1. Free_ze
                      27.09.2018 12:43

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


                1. 0xd34df00d
                  27.09.2018 17:07

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

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


                  Ну и в плюсах тоже для кода вроде


                  class Foo
                  {
                      int x, y;
                  public:
                      int getX() { return x; }
                      int getY() { return y; }
                  };


                  1. Free_ze
                    27.09.2018 17:14

                    Вангую аргументы про reinterpret_cast<int*>(Foo*). «Это же держится на соглашениях для С++-программистов!»


                    1. 0xd34df00d
                      27.09.2018 17:19
                      +1

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


                      Это UB, а UB в программе на С++ не бывает, значит, это не программа на С++.


                      1. mayorovp
                        27.09.2018 17:31

                        Нет, это не UB. Ведь по указанному адресу и правда находится int.


                        1. CodeRush
                          27.09.2018 17:35
                          +1

                          Все равно UB, потому что нет в стандарте никаких гарантий на расположение полей, и завтра в этот класс компилятор вдруг напихает каких-нибудь внутренних структур байт на 20, и все развалится. Даже если оно у вас сейчас работает — это волшебство, а не C++.


                          1. mayorovp
                            27.09.2018 17:38

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


                            1. CodeRush
                              27.09.2018 17:49
                              +1

                              Ну таковая передача на C++ невозможна по стандарту даже без разных языков. У языка не определен binary interface, и потому передавать приходится либо структуры из C (у которых таковой интерфейс есть), либо использовать сериализацию в промежуточные форматы вроде protobuf.
                              Если же использовать особенности конкретных реализаций, то это вновь волшебство, а не C++, потому что даже минорное обновление любого компонента компилятора может вам разломать все в самых неожиданных местах, и про котел в аду там выше не зря написано.


                              1. mayorovp
                                27.09.2018 17:58

                                Чем "структура из Си" отличается от класса без виртуальных функций? Насколько я знаю, extern "C" влияет только не функции и переменные, но не на структуры.


                                Да и с теми же виртуальными функциями все не так сложно. Да, смещение первого поля будет implementation-spicific, но подразумеваемое поведение компилятора можно проверить тестами, по типу таких: assert(reinterpret_cast<intptr_t>(&Foo::x) == sizeof(void*));


                                PS про котел в аду в целом согласен — вот только, в моем понимании, нарушителей соглашения по именованию приватных полей в javascript ждет соседний котел :-)


                                1. 0xd34df00d
                                  27.09.2018 18:13
                                  +2

                                  Чем «структура из Си» отличается от класса без виртуальных функций?

                                  Компилируется она, возможно, в тот же код (на самом деле нет, на результат влияют вещи куда более малозначимые, дарю как вопрос на собеседование мой любимый пример), но отличается, вообще говоря, много чем. POD, standard layout, trivially constructible/copyable/etc. Дело в семантике.


                                  std::launder вон вроде бы тоже ничего не делает, а он есть.


                                1. CodeRush
                                  27.09.2018 18:16
                                  +1

                                  Отличается тем, что у нее размещение определено, выравнивание определено, и делать его по другому без явного на то указания компилятор не имеет права, и потому макросы вроде OFFSET_OF() и CR() до сих пор отлично работают. У класса (хоть с виртуальными функциями, хоть без) размещение не определено, точнее определяется реализацией, т.е. никто не мешает начать, к примеру, все поля тегировать (т.е. перед каждым полем вставить еще по полю с тегом), сам класс тегировать (вставить ему GUID вначале, чтобы за размещением экземпляров в памяти потом следить), и все это останется в рамках C++ (т.е. код на C++ работать не перестанет), а у вас либо reinterpret_cast вернет непонятно что, либо все завалится еще на ассертах.

                                  Разница в том, где именно происходит проверка на то, что правила доступа не нарушаются, и в C++ она не происходит, потому что вы об этом просите явно очень заметной конструкцией (в Rust таковые еще заметнее), а в JS у вас и соглашение в голове, и проверка его там же, и найти таковые нарушения grep'ом просто так не получится.


                        1. 0xd34df00d
                          27.09.2018 18:05
                          +1

                          Это, возможно, не UB для доступа к первому полю (но я ещё не проверил все возможные источники UB, но ковыряться в семантике сравнения и преобразования указателей — так себе удовольствие, и я не очень понимаю, это не UB вообще или только для standard-layout-структур). Как насчёт остальных полей?


                          1. CodeRush
                            27.09.2018 18:19
                            +1

                            Тоже UB и для первого поля, потому что никто не мешает включить sanitizer и memory mapper, который вместо первого поля во все классы воткнет свою структуру, и все полетит к черту.


            1. bromzh
              27.09.2018 00:15
              +5

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


            1. TheShock
              27.09.2018 02:40
              +1

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

              Вы понимаете, что, наверное, невозможно написать JS-код не создавая замыканий? Если вы умеете — научите меня, пожалуйста. Мне очень интересно


              1. franzose
                27.09.2018 06:46

                Может имелось в виду короткое замыкание...


                1. tyomitch
                  27.09.2018 11:45
                  +2

                  Приходит новый русский в автосервис:
                  – Ну, что там, в натуре, с моим мерсом?
                  – Короткое замыкание.
                  – Нет базара, удлиняй!


            1. vgsnv
              27.09.2018 08:31
              -1

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


              1. vgsnv
                28.09.2018 08:29
                -1

                Ну вот заминусовали, и не объяснили почему, не спортивно.


            1. punkkk
              27.09.2018 11:38
              +1

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

              И то в новой nodejs уже ввели нативную подержку мультипоточности. Вам бы самому новую работу найти не помешало. :)


            1. fukkit
              27.09.2018 17:15

              Так толсто, что даже тонко


      1. stul5tul
        28.09.2018 01:19

        А когда на senior-позицию приходят полные нули, что делать? Знакомый фронтендер периодически собеседует людей на позицию senior-ов. Люди говорят/пишут, что у них 3-5-10 лет опыта, но они не знают концепции замыканий.


        Программирую еще с прошлого века.
        Смотрю все пишут про какие-то умные замыкания. Не знаю этого термина.
        Думаю, ну наверное некая умная концепция, может, буду использовать, пригодится. Надо почитать что это.
        Читаю.
        Ага. Использую, не зная как оно называется, уже лет 20 или поболее даже, оказывается.
        Почему? Нас учили разным математическим моделям, а вовсе не тому как что называется в синтаксисе языка.

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


    1. SergioShpadi
      26.09.2018 20:41
      +3

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


    1. Synoptic
      26.09.2018 22:02

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


    1. Wesha
      26.09.2018 22:07
      +1

      Охренел (25 лет за баранкой этого пылесоса, а не слышал). Почитал. Охренел второй раз — концепция понятна, но мне а) за те самые 25 лет мне не требовалась ни разу, б) можно гораздо понятнее объяснить в терминах низкого уровня (как известно, C — это по большому счёту надстройка над ассемблером/машинными кодами, на которых я с детства работал).


      1. rkosolapov
        27.09.2018 07:41
        -2

        Программист не может не знать, что такое замыкание.

        Есть отличная фраза — «Иногда 10 лет опыта — это один год, повторенный 10 раз».
        В твоём случае это было 25 раз, только и всего.


        1. Wesha
          27.09.2018 08:04
          +1

          В твоём случае

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


          Повторяю: концепция мне знакома, но никогда не возникало необходимости её с кему-то обуждать, соответственно узнать её "официальное" название — тоже; фразы "вон та вот х… рень" вполне хватало.


        1. DocJester
          27.09.2018 08:22
          +1

          А где-то есть список «Чего не может не знать программист»?
          Было бы любопытно ознакомиться.


          1. Druu
            27.09.2018 08:56

            https://sharpc.livejournal.com/67583.html


            наслаждайтесь :)


            1. TheIseAse
              27.09.2018 15:18

              Теперь любое собеседование на сеньора пройду!


            1. 0xd34df00d
              27.09.2018 17:08

              Осталось ещё программу Вербицкого по математике, и тогда вообще хорошо будет.


              1. Druu
                28.09.2018 03:34

                Мне кстати кажется, что она проще :)


        1. DelphiCowboy
          27.09.2018 09:15

          Программист не может не знать, что такое замыкание.

          То есть, по-вашему какой-нибудь крутой знаток ассемблера — «не программист», потому что он такое не использует и потому не знает?!


          1. Druu
            27.09.2018 09:38

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


            1. Murat1992
              27.09.2018 11:10

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


              1. Druu
                27.09.2018 11:26
                +1

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


                1. Murat1992
                  27.09.2018 11:40

                  Вы считаете, что знаток ассемблера обязан знать «замыкание», ибо это обязательно для написания трансляторов для JS?

                  Может он чем то другим занимается?

                  P.S. при упоминании ассемблера мы, несколько, отошли от JS.


                  1. Druu
                    27.09.2018 11:42
                    +1

                    > ибо это обязательно для написания трансляторов для JS?

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


                    1. Murat1992
                      27.09.2018 12:04

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


                      1. CodeRush
                        27.09.2018 15:34

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


                        1. old_bear
                          27.09.2018 16:45

                          разного рода хитрую математику с SSE 4.2

                          Нижайше прошу пардону, но таки уже с AVX 512…


                          1. CodeRush
                            27.09.2018 16:53

                            И с ним тоже, главное не забыть у CPUID спросить поддержку, а то можно вместо хитрой математики словить #UD.


                            1. old_bear
                              27.09.2018 17:07

                              Таки да. Причём это верно и для SSE 4.


      1. shiru8bit
        27.09.2018 07:53

        Полностью аналогичная ситуация.


      1. bromzh
        27.09.2018 10:25

        за те самые 25 лет мне не требовалась ни разу

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


        1. Massacre
          27.09.2018 14:51

          Я тоже… Недавно узнал, что это теперь используется в новом PHP, когда пришлось немного адаптировать старый вики-движок. Ну, точнее, это там называется «анонимные функции».


          1. TheShock
            27.09.2018 14:55

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


            1. mayorovp
              27.09.2018 15:07

              А откуда они там берутся, в этом use? Уж не из родительского ли скоупа?


              1. TheShock
                27.09.2018 15:13

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


                1. mayorovp
                  27.09.2018 15:22

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

                  Кстати, в языке c++ реализованы оба механизма.


                  1. TheShock
                    27.09.2018 15:29

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

                    for ($i = 0; $i < 10; $i++) {
                      $button->onclick = function () use ($i) {
                        echo $i;
                      };
                    }

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

                    То есть доступа в родительский скоуп (сообстно замыкания) во время работы функции нету, просто в локальной области видимости есть дополнительные переменные


                    1. mayorovp
                      27.09.2018 15:37

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


                      1. TheShock
                        27.09.2018 16:16

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


                        1. mayorovp
                          27.09.2018 16:17

                          А что такое, по-вашему, «замыкание на скоуп» и чем оно отличается от замыкания, захватившего переменные этого скоупа?


                          1. TheShock
                            27.09.2018 16:22

                            Ну я представляю приблизительно так.
                            В JS и C# есть доступ к скоупу вне функций.
                            А в php клонируется или переменная, или ссылка на область памяти с ней.


                            1. mayorovp
                              27.09.2018 16:30

                              Все еще не вижу отличий.


                              1. TheShock
                                27.09.2018 16:32

                                for ($i = 0; $i < 10; $i++) {
                                  anotherFunction( &$i );
                                }


                                Тут ведь нет замыкания? Вот тот пример ближе к этому.


                                1. mayorovp
                                  27.09.2018 16:34

                                  Нету. Потому что переменная передана параметром, а не захвачена. А в вашем примере c use она именно что была захвачена.


                                  1. TheShock
                                    27.09.2018 16:35

                                    Вот я считаю, что с use ближе к передаче параметром, чем к захвату.


                                    1. mayorovp
                                      27.09.2018 16:46

                                      Каким образом оно «ближе»? Параметры передаются при вызове, а переменные захватываются при создании замыкания.


                                1. Ogra
                                  27.09.2018 16:36

                                  В PHP замыкания есть, о чем сказано и в мануале: php.net/manual/en/functions.anonymous.php


                                  1. TheShock
                                    27.09.2018 16:41

                                    Там вообще написано, что Анонимная функция и Замыкание — это синонимы. Ну да ладно, это не принципиально. Не хочу спорить


                                    1. Ogra
                                      27.09.2018 16:44

                                      Всякое замыкание — анонимная функция, но не всякая анонимная функция — замыкание ;)


            1. MaximChistov
              27.09.2018 16:12

              В PHP можно просто объявить статичную перменную внутри функции, доступную только в ней stackoverflow.com/questions/6188994/static-keyword-inside-function

              function doStuff() {
                static $cache = null;
              
                if ($cache === null) {
                   $cache = '%heavy database stuff or something%';
                }
              
                // code using $cache
              }


              1. tyomitch
                27.09.2018 18:40

                А замыкания здесь при чём?


                1. MaximChistov
                  28.09.2018 10:56

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


      1. mayorovp
        27.09.2018 11:26
        +1

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


        1. Free_ze
          27.09.2018 11:55
          +1

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

          Строго говоря, не каждая лябда — замыкание.


        1. BHYCHIK
          27.09.2018 21:45

          GCC давно позволяет делать замыкания


    1. Staltec
      27.09.2018 00:08
      +1

      Я часто спрашиваю на собеседованиях чем по сути является метод .bind(). Это и есть мой скрытый вопрос про замыкание.


      1. Druu
        27.09.2018 11:27
        +1

        Я часто спрашиваю на собеседованиях чем по сути является метод .bind(). Это и есть мой скрытый вопрос про замыкание.

        Но ведь бинд в js как раз не замыкание возвращает, лол. Т.к. в "просто замыканиях" this связывается динамически.


        1. Staltec
          28.09.2018 08:55

          Полифил метода Function.prototype.bind() не возвращает замыкание. Он возвращает функцию, которая исполняется в контексте для которого применяется замыкание.

          Суть реализации полифила метода bind() — замыкание контекста исполнения передаваемой ему функции.


    1. lynch513
      27.09.2018 01:29

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

      Пусть автор не сдается, собеседование это всего лишь этап.


      1. rkosolapov
        27.09.2018 07:42

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


    1. rkosolapov
      27.09.2018 07:27

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

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

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


      1. TheIseAse
        27.09.2018 15:38

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


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


        1. bay73
          28.09.2018 10:51
          +1

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


    1. punkkk
      27.09.2018 11:31

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

      От вопросов —

      var a = b = 3
      трясет дико, вообще против таких присваиваний и использую standard стиль кода, но зачем-то должен знать, хотя в вакансии явно указано ES6.


      1. Druu
        27.09.2018 11:33

        От вопросов —

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


    1. VladimirKadnikov
      27.09.2018 11:40

      Не в тему программирования, но тоже по ИТ. У нас было пару случаев по собеседованию на сис.админа:
      1. Человек много всего красивого написал в резюме, в том числе установка CISCO. Угадайте как он их устанавливал? Правильно, брал руками и заталкивал в серверный шкаф.
      2. Человек превосходно описал всё чем занимался, какие проекты сделал, свои достижения и прочая. Всё было замечательно до того момента, пока случайно из области бреда не стали спрашивать элементарных вещей про IP адрес, маску, маршрутизацию и прочая.

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

      Особенно умиляют вопросы синьоров по Java — «а зачем нам знать как работает Garbage Collector?». А потом бегут с криками — нам надо еще 32 Гб ОЗУ — нам не хватает!


      1. Druu
        27.09.2018 11:43
        +1

        Особенно умиляют вопросы синьоров по Java — «а зачем нам знать как работает Garbage Collector?». А потом бегут с криками — нам надо еще 32 Гб ОЗУ — нам не хватает!

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


        1. Neikist
          27.09.2018 12:13

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


          1. Druu
            27.09.2018 13:03

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


        1. SadOcean
          27.09.2018 14:16

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


          1. Druu
            27.09.2018 14:27

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


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

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


    1. Splo1ter
      27.09.2018 13:08
      -1

      Мне было забавно, когда дали задание на позиции .NET разработчика — Что выведет консоль и правильно ли работает код —


      for(var i = 0; i < 10; i++) {
          setTimeout(function() {
            console.log(i)
          }, 100);
      }

      Серьезно?
      Я такое каждый день пишу))) (сарказм)


      А оказалось что это всего лишь вопрос на знание API JS — Должно быть так —


      for(var i = 0; i < 10; i++) {
          setTimeout(function(i) {
            console.log(i)
          }, 100, i);
      }

      Еще и пытались что то вытянуть по поводу IEnumerable, что правда не ясно.
      Ожидали Lazy, LazyRef....

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


      Вот так вот и бывает)


      1. TheShock
        27.09.2018 13:38
        +1

        А оказалось что это всего лишь вопрос на знание API JS — Должно быть так —

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

        for (var i = 0; i < buttons.Count; i++) {
          buttons[i].onClick.AddListener(delegate {
            Console.WriteLine(i);
          });
        }


        1. DimonSmart
          27.09.2018 14:16

          Вроде это известный прикол. 5. И ещё от версии зависит.


          1. mayorovp
            27.09.2018 14:27

            Так в том-то и дело, что он общеизвестный для программистов на любом языке, где есть замыкания и изменяемые переменные. И нет, версии зависит цикл foreach, а цикл for работает одинаково во всех версиях языка.


          1. TheShock
            27.09.2018 14:36

            Вроде это известный прикол

            Именно! А в JS оно еще и встречается в десятки раз чаще. А теперь представьте, что Senior C# Developer понятия не имеет об этой особенности


            1. nikolayv81
              27.09.2018 21:00

              А у меня вопрос, а зачем такое писать на c#?
              И ещё, знатокам на засыпку, а если (про версии, и особенности реализации) представим ситуацию когда ядро исполняющие поток цикла после третьей итерации остановится(перегрев) а в этот момент придёт событие на третью кнопку, то есть гарантия что в будущей версии виртуальной машины результат будет 5?


              1. mayorovp
                28.09.2018 08:43

                Да, такая гарантия есть (если код как ему и положено исполняется в UI-потоке). Событие на кнопку приходит всегда в UI-потоке, а он как раз занят циклом. Пока цикл не закончится — все события будут ждать в очереди.


      1. mayorovp
        27.09.2018 14:07

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


        1. Splo1ter
          27.09.2018 14:36

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


      1. Yngvie
        27.09.2018 16:17

        Не по .NET, а про JS, но я помню у нас был баг связанный как раз с этой особенностью.


    1. paratagas
      27.09.2018 15:20

      У меня было такое, что на позицию js разраба (фронтенд) спрашивали что такое интерфейсы и абстрактные классы с просьбой привести примеры из других языков. Я ответил, но задал встречный вопрос: «А зачем вы задаете такие вопросы js-разработчику?» На что мне ответили в духе «а вдруг мы захотим вас усадить писать бэкенд на Java, а вы не знаете этих терминов». После моей ремарки, что я на Java не писал, писать не планирую, и вообще претендую на роль js-фронтендера, как-то быстро свернули интервью.


    1. rayz_razko
      27.09.2018 18:42

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


  1. SUA
    26.09.2018 17:10
    +2

    против скайп-интервью есть хороший чит
    называется браузер на 2м экране


    1. saag
      26.09.2018 17:19

      ну видно же будет как у собеседуемого глаза разъезжаются:-)


      1. SUA
        26.09.2018 17:34

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


        1. argamidon
          26.09.2018 19:03
          +2

          это всё видно будет — глаза ездить будут влево-вправо :)


      1. HavenDV
        26.09.2018 20:41
        +1

        Темные очки как вариант) Пусть думают, что вы rockstar


        1. dyadyastepa
          27.09.2018 11:21

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


      1. OneType
        27.09.2018 10:11

        Можно скайп в виртуалке запустить и свернуть ее.


    1. snp
      26.09.2018 19:22
      +1

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


      Гугл ему всё равно не помог, т.к. на «открытых» вопросах валятся.


      1. roodz
        26.09.2018 23:03
        +7

        Это был Full Stack Overflow Developer


        1. Paskin
          26.09.2018 23:35
          +6

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


          1. snp
            27.09.2018 00:20

            Он не совсем правильные ответы находил :) Поэтому зарубили.


      1. Synoptic
        27.09.2018 00:01

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

        Но он переспрашивал вопрос, отвечал с лагом где-то в минуту, причем сначала была тишина, а затем строчил правильный ответ как из пулемета. Минут 10 уговаривали включить камеру: то не получалось зайти с ноута, то зашлось, но камера не работает.
        В итоге включили. Сеньор-помидор оказался индийской девушкой лет 25. У девушки, видимо, есть гринкарта, но нет мозга. Зато у ее индийских товарищей есть мозг, но нет гринкарты. Вот они и договорились — она идет на собес, проговаривает все вопросы вслух, а они ей побыстрому ответы напишут в чат. А голос программой на компьютере поменяем.

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


        1. mike114
          27.09.2018 04:22

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


          1. TheShock
            27.09.2018 04:40

            Сильно. Это одна из лучших историй о собеседованиях, которые я слышал


      1. algotrader2013
        27.09.2018 00:03
        -1

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


        1. softaria
          27.09.2018 11:19
          +1

          Ммм. А работать потом как?


          1. Druu
            27.09.2018 11:29

            А работать потом можно и со стуком :)


            1. softaria
              27.09.2018 11:40

              Так выгонят же


              1. Druu
                27.09.2018 11:44
                +1

                Почему выгонят? Вы не гуглите во время работы?


                1. punkkk
                  27.09.2018 11:48

                  Я вон только в библиотеку бегаю за энциклопедиями по программированию!


                1. softaria
                  27.09.2018 12:20

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

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

                  Поэтому не вижу смысла в подобном подходе вообще.


                  1. punkkk
                    27.09.2018 12:50

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


                    1. Ogra
                      27.09.2018 13:01

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


                      1. Druu
                        27.09.2018 13:07

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


                      1. punkkk
                        27.09.2018 15:26

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

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


                  1. Druu
                    27.09.2018 13:05

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

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


                    1. softaria
                      27.09.2018 19:10

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

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

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


          1. algotrader2013
            27.09.2018 12:38

            Вообще, я писал с сарказмом. Но если уж восприняли по-серьезному, то на моей памяти реальных случаев, когда программиста выгоняли с работы за незнание вещей, которые спрашивают на собесе, не было вообще. Был 1 случай, когда выгнали за неспособность нормально работать в команде (человек старался увильнуть от работы, и всячески заставить работать других за него, решать проблемы за него, находить причины багов за него — оверхед лида при работе с ним был запредельный). Был 1 случай, когда поменялись ПМ и лид, и выгнали человека, который был реально странным (были проблемы с пониманием коллег, и что от него хотят). И я видел десятки случаев, когда людей отсеивали на этапе телефонного собеседования за неправильный ответ на 1-2 вопроса на знание. Это все объяснимо математически. Отсеять на этапе телефонного собеса == потерять 15 минут своего времени, уже потраченного на собес (по крайней мере, так считает большинство собеседующих), отсеять на этапе испытательного срока == признать свою некомпетентность, как интервьювера (у людей все еще есть предрассудок, что хороший интервьювер не может ошибиться) && потерять дни или недели, потраченные на его обучение && объяснить заказчику, почему вдруг сдвинулись сроки. Поэтому, терпят, дотягивают до нужного уровня, помогают. Если человек, который хитростью прошел собес реально толковый (а чтобы обмануть интервьювера, и при этом не попалится, мозги надо иметь), то, как правило, он все равно достигает необзходимого уровня, и проблема рассасывается сама собой.


      1. mnv
        27.09.2018 13:44

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


        В ответ на очередной вопрос он долго стучал по клавиатуре, видимо, не мог найти подходящий ответ, и ответил в итоге вот так:


        image


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


      1. tommyangelo27
        28.09.2018 10:47

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


  1. OYTIS
    26.09.2018 17:15
    +3

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


    1. SkylineIT
      26.09.2018 17:33
      +2

      Способность к программированию — не субъективно ли это?
      В последнее время заметил, что большинство проходящих дядь собеседование не умеют писать код на бумажке, при том являются отличными специалистами. Это всякие Яндексы навязывают тенденцию того, что человек, который умеет хорошо программировать, то он должен без труда решать простецкие житейские задачи на листке.
      Зато если этому дяде сказать, что надо по-быстрому написать Backend на коленке с простым Rest-методом, который будет общаться через ORM с БД и брать оттуда первую строчку, позволив ему пользоваться Гуглом, он накидает Backend за 15 минут и еще сверху расскажет, какие проблемы есть, например, в Hibernate с пагинацией и как её поправить.
      Тут всё сугубо индивидуально и риск найти самозванца есть всегда. Нужно задавать правильные вопросы и смотреть по ситуации.

      P.S. Задания типа reverse() или кастомный стек — это походу классика уже наверное) Я не против заданий, но это не всегда является прямым показателем знаний.


      1. OYTIS
        26.09.2018 17:49

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


        1. Neikist
          26.09.2018 17:57

          Я реверс конечно ни разу не писал, но все таки вы так часто работаете со строками?
          Строки в большинстве случаев у нас иммутабельные — это уже заставляет нас какой то промежуточный объект вводить (библиотечный или свой) который бы содержал строку в массиве. А если вспомнить что далеко не все (да что уж там, как мне кажется мало кто) разбирается во внутреннем устройстве кодировок… Из за чего если работать просто с массивом байт, и, возможно, даже с массивом символов, можно словить проблем…


          1. OYTIS
            26.09.2018 18:19

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


            1. Neikist
              26.09.2018 18:23
              +1

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


              1. OYTIS
                26.09.2018 18:36

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


                1. 0xd34df00d
                  26.09.2018 18:43
                  +1

                  А, ASCII. А если кандидат про это не спрашивает? ;)


                  1. martin_wanderer
                    26.09.2018 19:54

                    Так если не спрашивает — это самым конкретным образом характеризует кандидата


                    1. AllexIn
                      26.09.2018 20:08
                      +1

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


                      1. Neikist
                        26.09.2018 20:13

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


                        1. AllexIn
                          26.09.2018 20:17
                          +4

                          Хитры кодировки c O(N) — это UTF8 чтоли?
                          Задача «Перевернуть UTF-8 строку сохраненную в массиве оптимальным способом» звучит совсем не так как «Перевернуть строку». Не находите?
                          «Перевернуть строку» по умолчанию предполагает абстрактную строку, допущения бессмысленны. Если уточнений нет, значит они не критичны.


                          1. Neikist
                            26.09.2018 20:35
                            +1

                            Исходя из моей практики — я предпочту на всякий случай поуточнять задачу. А то потом у клиента или консультанта который описывал задачу будут вопросы в духе: а этого почему нет? Это же очевидно. А тут не так должно работать. И вообще конкретно этот функционал только в мобильном клиенте должен быть. Зачем вы его в десктопном сделали?


                      1. martin_wanderer
                        26.09.2018 20:24

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


                        1. AllexIn
                          26.09.2018 20:47

                          В нашщей с вами работе мы знаем над чем работаем.
                          Если у нас условный UTF-8 и ОЧЕНЬ МНОГО обращений по индексу — у нас будет класс, для работы с UTF-8, в котором под каждый символу будет выделен отдельный буффер и доступ к чару будет по O(1) но зато с потерей оперативки и чуть более долгой загрузкой строки в память.
                          В реальности в отличии от собеседования задачи существуют в контексте и часто уточнения не нужны, потому что понятно что за задача, откуда она взялась и как должна работать.
                          Собеседование же максимлаьно абстрактное, не задавать вопросов предполагая некоторое дефолтное поведение — вполне норм. Если собеседующему не понравятся ваши допущения, он уточнит.
                          Таким образом чаще всего уточнения не нужны ни в реальной работе ни на собеседовании.


                          1. PashaNedved
                            26.09.2018 23:48
                            +1

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

                            Скорее он спросит, почему вы сделали эти допущения.


                          1. cooltonbek
                            27.09.2018 00:41
                            -2

                            +1


                      1. 0xd34df00d
                        26.09.2018 23:52
                        +1

                        Символы, глифы, суррогатные пары…


                  1. sith
                    26.09.2018 22:10

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


                1. Neikist
                  26.09.2018 20:12

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


                  1. beeruser
                    27.09.2018 02:24

                    Уж слишком просто все на первый взгляд.

                    Множество «программистов» не может fizzbuzz написать.
                    Какие уж тут строки и массивы(OMG!)


                    1. RiseOfDeath
                      27.09.2018 12:22
                      -1

                      Наверное я плохой программист — мне пришлось гуглить что такое fizzbuzz.


                      1. mayorovp
                        27.09.2018 12:25

                        Так ведь знать что это такое и не требуется…


                        1. RiseOfDeath
                          27.09.2018 12:37

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


                          1. beeruser
                            27.09.2018 12:55

                            Соответственно на собеседовании я бы думал именно в таком ключе.

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


                    1. punkkk
                      27.09.2018 12:51

                      Писал тут про эту задачу, не помнил как называется, написал fuz buz… Эх)


            1. 0xd34df00d
              26.09.2018 18:42
              +1

              И цикл по строке до середины строки, обменивающий i-й с начала и i-й с конца строки элементы, вы, естественно, отвергаете как неверное решение?


              1. OYTIS
                26.09.2018 18:47

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


                1. 0xd34df00d
                  26.09.2018 18:55

                  Потому что без дополнительных уточнений этот код неявно предполагает ASCII'шность (вернее, однобайтовость кодировки) строки, чего в ТЗ не было.

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


                  1. OYTIS
                    26.09.2018 19:01

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


                    1. 0xd34df00d
                      26.09.2018 19:04
                      +1

                      *для некоторого определения «правильно».


                      Если меня собеседуют как С++иста, то такое требование в реальной задаче (ну раз мы там по эджайлу и это всё) означает, что std::reverse не подходит. Учитывая, что reverse делает ровно то же (просто через итераторы), это значит только то, что относиться к строке как к однобайтовой нельзя.


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


                      1. catharsis
                        26.09.2018 19:43

                        На питоне правильный ответ на такой вопрос: s[::-1], и это называется знать свои инструменты. Не стоит отвергать очевидное решение потому что оно очевидно.
                        Правда я не Software engineer и там может быть свой мир, но отбрасывать очевидные решения по причине простоты думаю что все равно не стоит.
                        В материалах по подготовке к собеседованиям это часто упоминается.


                        1. Keyten
                          26.09.2018 20:34
                          +1

                          На JS это выглядит как-то так: str.split('').reverse().join('').


                          1. FreeNickname
                            26.09.2018 21:56
                            +1

                            Вот, кстати, интересно мнение сообщества по поводу такого ответа. Мне напрашивается вопрос: «А вы бы применили такое решение в production?». И вот в зависимости от ответа на этот вопрос уже решать, хороший это вариант ответа или нет.
                            Поправьте, если я не прав, я в JS не очень разбираюсь, но оно ведь создаёт кучу временных объектов безо всякой нужды, а потом собирает их в другой временный объект (+ ещё reverse массива этих временных объектов).
                            На это можно возразить, что преждевременная оптимизация – корень всех зол и всё в таком духе, но это тоже вопрос довольно спорный, т.к. в плане выбора подходящих алгоритмов и структур данных, обычно проще сразу делать «нормально».
                            Соответственно, если человек отдаёт себе отчёт в побочных эффектах такого кода, и написал просто потому что это удобный однострочник, то всё хорошо. А вот если нет – то это пойдёт в минус, а не в плюс.
                            Если в JS это хороший способ (например, более эффективный вариант является слишком громоздким или эта конструкция как-то оптимизируется или что-нибудь в таком духе) – мой комментарий можно игнорировать. Как я уже сказал, я с JS не очень дружу)


                            1. bogolt
                              27.09.2018 00:29
                              +1

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


                            1. TheShock
                              27.09.2018 02:45

                              «А вы бы применили такое решение в production?».

                              Именно такое решение и применяю.

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

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


                          1. Tsimur_S
                            27.09.2018 00:33

                            [...str].reverse().join('') — выглядит короче, работает с сурогатными парами, но не с комбинированными символами.


                          1. srhbdv
                            27.09.2018 06:56

                            Мы вам перезвоним. image


                          1. pwm73
                            27.09.2018 08:23

                            или так

                            console.log([..."123456789"].reduce((a,c)=>c+a));


                            1. mayorovp
                              27.09.2018 11:39
                              +1

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


                              1. pwm73
                                27.09.2018 11:59

                                Почему квадратичным? Один проход редьюсером по массиву. Сложность O(N). Плюс нет промежуточного реверсированного массива — экономия памяти.


                                1. Ogra
                                  27.09.2018 12:15
                                  +1

                                  Потому что на каждом шаге выполняется c+a, и на каждом шаге может быть создана новая строка, в которую копируется старая+один символ. В среднем n/2 байт копируется на каждом шаге, которых n.
                                  Итого — квадратичная сложность.


                      1. AllexIn
                        26.09.2018 20:10
                        +3

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


                        1. Artyomcool
                          26.09.2018 23:07

                          Не все строки эффективно отдают символ по индексу.


                          1. tyomitch
                            27.09.2018 12:25

                            В задаче ничего и не говорилось про эффективность.


                      1. ApeCoder
                        26.09.2018 23:54

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

                        По-моему, в таком случае правильно задавать дополнительные вопросы и характр этих вопросов очень хорошо показывает на каком уровне человек решает задачу


                        1. 0xd34df00d
                          27.09.2018 00:00
                          +1

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


                          1. tyomitch
                            27.09.2018 12:34
                            +2

                            В одном из моих недавних собеседований:

                            — Как бы ты реализовал вот такую систему? (описание требуемой функциональности)
                            — (описываю возможную реализацию)
                            — Хорошо, а как бы ты её реализовал на кластере?
                            — А зачем её реализовывать на кластере? Чего мы пытаемся этим достичь?
                            — Эээ… Не важно, просто поступило требование реализовать её на кластере.
                            — Окей, пусть одна нода выполняет вышеописанную реализацию, остальные пусть простаивают.
                            — Эээ… Ну окей.


                            1. tvr
                              27.09.2018 13:02
                              +1

                              — Окей, пусть одна нода выполняет вышеописанную реализацию, остальные пусть простаивают.
                              — Эээ… Ну окей.


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


                    1. dyadyastepa
                      27.09.2018 11:56

                      Ну как вам сказать… Мне не раз приходил FSD по которому я делал свою реализацию, а потом прибегал аналитик и кричал на меня, что все не так. Хотя все сделано по FSD и работает так как написано в FSD (по секрету скажу, что оказывалось что аналитик просто сделал copy/paste). Потом начинались наезды, что мол если я что-то не понял, то я обязан был задавать вопросы, а не тупо писать код. Т.е. оказывалось, что я должен быть еще и телепатом или уметь читать между строк. Потом наезды начинались и со стороны PM. Который требовал от меня овладеть навыками телепатии.
                      В других проектах было и так, что притаскивали криво написанный FSD, я начинал задавать вопросы что бы понять что на самом деле стоит за его весьма туманными формулировками. Мне отвечали на «от*бись»: типа делай как хочешь, но чтобы было по FSD и работало, а потом начинались наезды из серии, что раз я задаю так много вопросов, то я плохой разработчик. Ну и конечно прибавлялись снова требования стать телепатом. Потому что моя реализация естественно расходилась с задумкой аналитика.
                      Короче каким бы хорошим ты не был, а все равно тебя сделают крайним. Вывод: самый главный скил разработчика — умение прикрыть свой зад. Вот на это и нужно проверять человека на собеседовании ;-)


                      1. DelphiCowboy
                        27.09.2018 12:49

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

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


                        1. dyadyastepa
                          27.09.2018 13:51

                          PM свой зад прикрывает. Вот у меня был случай когда работали над проектом где объем работ предполагал наличие как минимум 4-х разработчиков причем не Junior, а работали фактически мы на пару с team lead'ом. Нет, приходили конечно люди, но увидев как все сложно сливались максимум через месяц. Про это не раз говорилось на совещаниях. Но курс был на экономию. В итоге, сроки мы просрали. Крайним сделали team lead'а, вынудив его уволится чтобы сохранить лицо перед заказчиком, а PM пошел на повышение.


                  1. firedragon
                    26.09.2018 21:15

                    Возможно человек англосакс или индус?


              1. arandomic
                26.09.2018 18:49

                Это будет два цикла.
                Первый должен будет найти собственно конец строки.


                1. Varim
                  26.09.2018 18:56

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


                  1. 0xd34df00d
                    26.09.2018 19:01

                    Если стек считать за память, то не думаю.


                  1. Barafu_Albino_Cheetah
                    26.09.2018 19:45

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


                    1. bolk
                      26.09.2018 21:15
                      +1

                      Это разве не использование доп. памяти?


              1. vlk77
                26.09.2018 20:44
                +1

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

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

                Переворот таким циклом, как вы написали — совершенно нормальное решение.
                Но — справляются с задачей 25-30% собеседуемых.
                Сумма составляется так: примерно 10% пишут правильный код, 10-15% почти правильный или правильный после наводящих вопросов. 5% не понимают, что такое «используя минимум памяти», но строчку переворачивают.

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

                Тем, кто справляется, даем табличку с кодировками символов UTF-8 и просим теперь на тех же условиях перевернуть строчку, состоящую из символов UTF-8. На самом деле, это простая получается задачка. Если человек затрудняется, просим решить дома и написать нам. Из всех собеседований только 1 или 2 человека предложили решение.


                1. ianzag
                  26.09.2018 22:37

                  > А половина испытуемых даже не могут написать функцию C на бумажке, любую.

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


                  1. vlk77
                    26.09.2018 22:56
                    +1

                    Не проблема, если попросите ноутбук — вам его дадут. Но там 10 строк, стоит ли?


                    1. Artyomcool
                      26.09.2018 23:10
                      +1

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


                    1. lightman
                      27.09.2018 08:22

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


                1. burrdarr
                  26.09.2018 22:37

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

                  Сразу скажу, что я так делал, и мои «простые и понятные задачки» (естественно, простые, если ты в теме… ну или если знаешь решение) ставили собеседующего в тупик. Неловко, не правда ли? Примерно так же, как получить простую задачку, собеседуясь на сеньора.

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


                  1. vlk77
                    26.09.2018 22:54
                    +6

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


                    1. dyadyastepa
                      27.09.2018 12:10

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


                      1. tyomitch
                        27.09.2018 12:42

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


                  1. ApeCoder
                    27.09.2018 00:01
                    -1

                    Сразу скажу, что я так делал, и мои «простые и понятные задачки» (естественно, простые, если ты в теме… ну или если знаешь решение) ставили собеседующего в тупик. Неловко, не правда ли? Примерно так же, как получить простую задачку, собеседуясь на сеньора.

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


                  1. TheShock
                    27.09.2018 02:52
                    +1

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

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

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

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


                1. 0xd34df00d
                  26.09.2018 23:59

                  А рекурсией решает кто-нибудь? Ну, чисто поржать.

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


                  1. vlk77
                    27.09.2018 07:16
                    +1

                    Мсье знает толк в извращениях! Нет, такого не было. Но вот раз человек использовал alloca для экономии памяти, считая, что эта функция не использует память (в понимаемом им смысле). А ещё раз, на другом тестовом задании, видел использование setjmp/longjmp — вот это было круче всякой рекурсии. Фамилия кандидата была не Ричи, если что.


                1. boblenin
                  27.09.2018 06:25

                  А насколько часто вам приходится проводить код ревью для реализации функции, которая переворачивает строку с оптимизацией по памяти?

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


                  1. vlk77
                    27.09.2018 07:10

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


                    1. boblenin
                      27.09.2018 07:26

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


                      1. vlk77
                        27.09.2018 08:42

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


                        1. boblenin
                          27.09.2018 14:58

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


            1. wataru
              27.09.2018 15:57

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

              FizzBuzz же: выведите n строк — k-ая строка должна начинаться с числа k. Потом содержать Fizz, если k делится на 2 и/или Buzz, если k делится на 3:


              1
              2 Fizz
              3 Buzz
              4 Fizz
              5
              6 Fizz Buzz
              ...```


              1. OYTIS
                27.09.2018 16:20
                -1

                Это уже следующий уровень сложности. Тут надо понимать, что такое «делится на 2», «делится на 3» и «делится на 6» и как эти множества друг с другом соотносятся. А если человек забыл, что такое делимость? Или в реальных проектах работает исключительно с float? Или настолько продвинутый алгебраист, что не может решить, в каком кольце ему эту задачу решать? В общем, со строками как-то спокойнее.


                1. FreeNickname
                  27.09.2018 19:10

                  Ой, да ладно вам… Если совсем забыл – пусть требует с собеседующего 1000 примеров и обучает нейросеть ?\_(?)_/?


          1. Wesha
            26.09.2018 22:13
            +1

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

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


            1. TheShock
              27.09.2018 02:59

              Я б на все такие вопросы отвечал: «как вам удобнее».

              А еще лучше, уже на вопросе

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

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

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

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

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


            1. ApeCoder
              27.09.2018 10:21

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


        1. SkylineIT
          26.09.2018 18:12
          +1

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


          1. OYTIS
            26.09.2018 18:30

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


          1. balexa
            26.09.2018 18:36
            +3

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

            Да, он себя считает сеньором. Потому что он уже 3+ года работает «тыжпрограммистом».


            1. scg
              26.09.2018 18:58
              +2

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


              1. OYTIS
                26.09.2018 19:03
                +1

                Мы добрые, правда =) Это все задачи не для того, чтобы подловить, а чтобы отсеять тех, кто тупо не знает, что такое «переменная», «цикл» и как ими пользоваться.


              1. balexa
                26.09.2018 19:18
                +2

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


              1. catharsis
                26.09.2018 19:48
                +3

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


                1. scg
                  26.09.2018 21:01
                  +2

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


                  1. Areso
                    26.09.2018 21:23
                    +1

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


                    1. balexa
                      28.09.2018 09:21

                      человек за ночь делает то, что я делал в среднем за неделю,

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


                  1. catharsis
                    26.09.2018 22:23
                    +3

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


                    1. scg
                      26.09.2018 22:46
                      +1

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


                      1. YemSalat
                        27.09.2018 11:03

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


                  1. daiver19
                    27.09.2018 00:59
                    +1

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


                    1. scg
                      27.09.2018 07:43

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


                      1. daiver19
                        27.09.2018 08:46

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


                        1. scg
                          27.09.2018 10:28

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

                          Это не так. На собеседования в крупную компанию нужно готовиться: Как подготовиться к собеседованию в Google и не пройти его. Дважды

                          Чуть ранее:
                          или же что вы тратили много времени на концептуально неправильное решение

                          Сейчас:
                          идеального решения никто не требует

                          Так требуют или не требуют? Вы определитесь, а то по второму кругу спорить начнем.
                          Может быть на самом деле эту задачу без проблем решает на достаточном уровне 70 процентов кандидатов?

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


                          1. daiver19
                            27.09.2018 19:03
                            +1

                            Это не так. На собеседования в крупную компанию нужно готовиться

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

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

                            Т.е. для вас существует только концептуально неправильное решение и идеальное решение.

                            Вот видите, вы продолжаете настаивать на моей некомпетентности основываясь на часовом тесте

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

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

                            Так откуда мне знать, может вы эти 20 лет на 1С программировали? Вы же не пытаетесь со своими 20 годами опыта непонятно в какой области устроиться, например, адвокатом или хирургом?


                            1. scg
                              27.09.2018 20:50

                              Т.е. для вас существует только концептуально неправильное решение и идеальное решение.

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

                              Я не пытаюсь ничего сказать об эффективности интервью в оценке ваших компетенций.

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


                              1. balexa
                                28.09.2018 09:27

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

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

                                вас же единственный аргумент против этого — я вру.

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


                                1. scg
                                  28.09.2018 10:31

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

                                  То есть, все таки требуют?

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

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

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


                                  1. balexa
                                    28.09.2018 11:02

                                    То есть, все таки требуют?

                                    Вы понимаете что есть градация между идеальным решением, и влобным перебором, да еще написанным с ошибками? У вас все черно белое что ли, не понимаю?

                                    А если я утверждаю, что за 20 лет я как-то научился отличать работающую программу от неработающей — это д'Артаньянство?

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

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


                                    1. stul5tul
                                      28.09.2018 11:23
                                      +1

                                      Вы утверждаете что навык «писать код быстро без ошибок» — нужен только на собеседовании.


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

                                      Индустрия не молода, так что статистики полным-полно.

                                      Например:
                                      1) On average, a developer creates 70 bugs per 1000 lines of code (!)

                                      2) 15 bugs per 1,000 lines of code find their way to the customers

                                      3) Fixing a bug takes 30 times longer than writing a line of code

                                      4) 75% of a developer’s time is spent on debugging (1500 hours a year!)

                                      5) In the US alone, $113B is spent annually on identifying & fixing product defects


                                      coralogix.com/log-analytics-blog/this-is-what-your-developers-are-doing-75-of-the-time-and-this-is-the-cost-you-pay


                                1. stul5tul
                                  28.09.2018 10:58
                                  +1

                                  Зарабатываю на программировании уже 20 лет.
                                  В 99% случаев тормоза не имеют отношения к моей программе — в реальных проектах тормоза в СУБД, сети и пр. внешних факторах.

                                  Просто «в вакууме» оптимизация алгоритма (логарифм/квадратичный и т.п.) сама по себе толку дает мало.

                                  Оптимизировать нужно в связке в реальной среде. Куда больше реальной пользы приносит правильно написанный запрос к СУБД, чем правильно развернутый цикл.


                                  1. balexa
                                    28.09.2018 11:08

                                    Зарабатываю на программировании уже 20 лет.
                                    В 99% случаев тормоза не имеют отношения к моей программе

                                    Почему вы решили, что ваш случай и статистика верны для всех?

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

                                    Тут все верно. Но далеко не все пишут CRUD приложения.


                                    1. stul5tul
                                      28.09.2018 11:16
                                      +1

                                      Почему вы решили, что ваш случай и статистика верны для всех?


                                      А почему вы решили, что статистика иная?

                                      Тут все верно. Но далеко не все пишут CRUD приложения.


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

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

                                      А что писали лично вы за последние 10 лет? Учебные/студенческие работы/курсовые/дипломные если не считать.


                                  1. ApeCoder
                                    28.09.2018 11:32

                                    Оптимизировать нужно в связке в реальной среде. Куда больше реальной пользы приносит правильно написанный запрос к СУБД, чем правильно развернутый цикл.

                                    В субд те же индексы (хеши и двоичные деревья) и hash и merge joins и nested loops — т.е. надо понимать как все работает и сообразить какая o(f(n)) там будет.


                                    1. stul5tul
                                      28.09.2018 11:54
                                      +1

                                      сообразить какая o(f(n)) там будет.


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

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

                                      Гораздо полезнее предоставить СУБД правильные индексы — а дальше она сама разберется.

                                      Ну а как влияют merge joins, nested loops — вы будете прекрасно понимать безо всяких o() на уровне интуиции уже после пары месяцев интенсивного написания/оптимизации запросов.

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

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


                      1. WinPooh73
                        27.09.2018 10:13
                        +1

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


                  1. pehat
                    27.09.2018 01:40

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


                    1. scg
                      27.09.2018 07:33

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


                      1. pehat
                        27.09.2018 12:12

                        >опыт программирования больше 25 лет
                        Насыщает не время проведенное в столовой, а количество съеденных беляшей.


                        1. scg
                          27.09.2018 13:35
                          +1

                          Все с вами понятно. Смотрите не объешьтесь беляшами.


                  1. bay73
                    28.09.2018 11:27

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

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


                    1. scg
                      28.09.2018 11:52

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


                    1. stul5tul
                      28.09.2018 12:08

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

                      А при чем тут он?

                      Вы что, сами не видите какого огромное количество сырых продуктов выпускают на рынок? Ко всем им лично он имеет отношение?

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

                      То да, как правило, да, программы содержат кучи ошибок.

                      Заказчику/работодателю важнее снижение дорогущей себестоимости разработки, даже если возрастает риск ошибки.

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

                      Более того, даже не всегда в деньгах дело.
                      Чаще более важный фактор — время разработки.


                1. Lexicon
                  26.09.2018 21:52
                  +1

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


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


                  1. pehat
                    27.09.2018 01:43

                    Что, простите? Типы задач при собеседовании в гугл/фейсбук/майкрософт/яндекс — секрет Полишинеля. Ещё скажите, что книгу Cracking the coding interview не читали.


                  1. wataru
                    27.09.2018 16:05

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

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


            1. Kroid
              27.09.2018 08:48

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


              1. balexa
                27.09.2018 10:15

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

                А «завари иван-чай» — это два слова

                Допустим. И что?

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


                1. scg
                  27.09.2018 10:33

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


                  1. balexa
                    27.09.2018 10:53

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

                    Я попробую донести еще раз свою позицию, а то меня обвинили по одному предложению о том что я делаю на отвали, не понимаю сложности и т.д.

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

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

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


                  1. Avitale
                    27.09.2018 14:20

                    Зачем такие сложности на собеседовании? Достаточно проговорить, что да — могут быть такие-то подводные камни, и решить первым попавшимся в голову вариантом/вариантами. Важно ведь мышление. Первое, что пришло мне в голову — посчитать по количеству пробелов. Или сделать .Split(' ').Count(). Это 100% не самые идеальные варианты решения, но идеальные в общем-то и не нужны, хотя может в Яндексе иначе думают.


              1. iPilot
                27.09.2018 14:25

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


                1. mayorovp
                  27.09.2018 14:29

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


                  1. Druu
                    27.09.2018 14:31

                    дефис может быть как частью слова, так и разделителем слов

                    Это где дефис является разделителем?


                    1. mayorovp
                      27.09.2018 14:51

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


                      1. Kroid
                        27.09.2018 15:44

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


                        1. mayorovp
                          27.09.2018 15:47

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


                          1. Kroid
                            27.09.2018 16:47

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


                            1. mayorovp
                              27.09.2018 16:50

                              Говорю же: когда дефис ставится между определяемым словом и приложением.

                              Вот прямо из Википедии: ковёр-самолёт, монах-аскет, Волга-матушка, Москва-река, Иван-дурак, Соловей-разбойник, сторож-старик…

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


                              1. Kroid
                                27.09.2018 18:18
                                +2

                                Да, действительно.

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

                                В.Б. Касевич «Элементы общей лингвистики»


                        1. ApeCoder
                          27.09.2018 19:51

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

                          А почему чушь? Семантически же это разные случаи?


                          1. Kroid
                            27.09.2018 20:03

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

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


                            1. ApeCoder
                              28.09.2018 09:40

                              Опять же, хоть кто-то, кроме профессиональных типографов/верстальщиков, набирая текст, пользуется тремя различными символами?

                              Насчет минуса не знаю, а дефис и длинное тире автоматически вставляется многим софтом. Например в том самом сообщении, на которое я отвечаю ;)


                        1. DelphiCowboy
                          28.09.2018 05:56

                          А в каких случаях нужно ставить именно m-dash(длинное тире), а в каких n-dash(короткое тире)?


            1. ABy
              27.09.2018 10:53

              а по факту человек не может написать простую считалку слов

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

              Что-то мне кажется тут без сильного ИИ и бигдата не обойтись:)


        1. aunoor
          26.09.2018 19:51
          +4

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


          1. OYTIS
            26.09.2018 20:11
            +1

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


            1. scg
              26.09.2018 21:09
              +1

              У кандидата всегда есть некий бэкграунд, помимо его текущего состояния. У меня, например есть: 1) бывшие коллеги, которые сейчас работают в конторе, где я прохожу собеседование, 2) пару OpenSource проектов, 3) пара статей на Хабре. Все это указано в резюме. Можно поговорить с людьми, которые со мной работали, посмотреть код, почитать статьи. Но ведь никто этого не делает. Резюме, как правило, читают уже во время собеседования. А обо мне узнают из абстрактных задач в стрессовых условиях, да из глупых вопросов.


              1. OYTIS
                26.09.2018 22:37
                +3

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

                а) Тех, у кого нет знакомых среди сотрудников
                б) Тех, кто не работал в OpenSource
                в) Тех, кто не писал статей

                А у нас совершенно нет причин этих людей отсеивать.


                1. scg
                  26.09.2018 22:40
                  +3

                  Конечно, лучше отсеивать тех, кто волнуется на собеседовании.


                  1. OYTIS
                    26.09.2018 22:54
                    +1

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


                    1. tamapw
                      27.09.2018 12:13

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

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

                      Однако у этого подхода есть один минус — время.
                      Помимо времени на собеседование ещё нужно уделить определённое время на чтение и изучение кандидата. Это может занять 5-20 минут в оптимальном случае. А в случае, если из 10 кандидатов 3 оказались с таким «бекграундом», то времени нужно затратить 5-20 минут на КАЖДОГО из них, что в случае большой текучки и кандидатов может оказаться расточительно.
                      А в случае одной вакансии и тех же 10 кандидатов, как по-мне, можно уделить этому время. Если не на проекты, на изучение которых может уйти достаточно много времени, то хотя бы на чтение статей, которые написал и указал кандидат.
                      Но… зачем? Зачем тратить своё драгоценное время на каких-то кандидатов, верно? ;)

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


        1. firedragon
          26.09.2018 21:04
          +1

          А какие ограничения? память, скорость, кривой ЯП?
          1. если в лоб то выделяется буфер и вставляются значения перебором с конца
          2. если экономим память, то читаем хвост и голову и меняем их в цикле
          3. string.Buffer.Reverse


        1. Namynnuz
          27.09.2018 06:19

          public static string ReverseString( this string input ) {
              var temp = new List<string>();
              var e = StringInfo.GetTextElementEnumerator( input );
              while ( e.MoveNext() )
                  temp.Insert( 0, e.GetTextElement() );
              return string.Concat( temp.ToArray() );
          }

          Ну как, я прошёл испытание?


          1. Free_ze
            27.09.2018 12:14

            string.Concat( "Hello World".Reverse() )


            1. ApeCoder
              27.09.2018 13:39

              1. Free_ze
                27.09.2018 13:45

                Оценил разницу, спасибо


        1. AndreyGaskov
          27.09.2018 06:28

          s[::-1] подойдёт?


      1. avost
        26.09.2018 18:45
        +6

        Способность к программированию — не субъективно ли это?

        А чего тут субъективного? Есть способность писать код — напиши. Не смог — нет способности писать код.


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

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


        позволив ему пользоваться Гуглом, он накидает Backend за 15 минут

        Да, таких cut-n-paste "дяденек" пол-Индии. Если вам нужны "индусы", то нет проблем — набирайте таких. Очевидно, автору обсуждаемого комментария нужны более другие разработчики.


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

        А ни кто и не рассматривает это прямым показателем знаний. Это фильтр. И это ОЧЕНЬ эффективный фильтр.


        1. shiru8bit
          27.09.2018 08:15

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


          1. avost
            27.09.2018 18:46
            +1

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


            1. shiru8bit
              27.09.2018 19:18

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


      1. frostspb
        26.09.2018 18:55

        Вот прям с языка сняли


      1. cooltonbek
        27.09.2018 00:38
        -2

        +1


      1. rkosolapov
        27.09.2018 07:45

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

        Проблема собеседующих в том, что нередко они хотят найти человека сильно круче, чем им реально надо.

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


    1. suharik
      26.09.2018 17:42
      +15

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

      ???и? ? иv?wи ?о??d? о?-о?? ?q? иvи '??? ?о? о?є ??оd?? q??нd???d?u


      1. tvr
        26.09.2018 18:33

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


      1. Varim
        26.09.2018 18:39
        +2

        Как он это сделал? Есть unicode символы такие? Oo


        1. arandomic
          26.09.2018 18:54
          +1

          Это символы, похожие на перевернутые русские буквы, надерганные из разных наборов unicode.
          Есть онлайн и не-онлайн генераторы, которые переворачивают атоматически
          ? — например этот символ latin small letter closed open e (U+029A)
          ? — очевидно, лямбда
          итп


          1. Strepetarh
            26.09.2018 20:32

            разрешите докопаться, лямбда пишется в другую сторону — вот так ?. А вот эта ? в юникоде описывается как Latin Small Letter Turned Y. Что наводит на мысли, что можно не надёргивать буквы из разных алфавитов, а использовать имеющиеся в юникоде готовые перевёрнутые символы (ну, очевидно это для латиницы, некоторые кириллические символы таки придётся поискать).


        1. Stalker_RED
          26.09.2018 21:43
          +9

          Ребята, не стоит вскрывать эту тему. Вы молодые, шутливые, вам все легко. Это не то. Это не Чикатило и даже не а?????р???х?????и????в??ы? ?? спецслужб. Сюда лучше не лезть. Серьезно, любой из вас будет жалеть. Лучше закройте тему и забудьте, что тут писалось. Я??? ???????в???????п????????о?л???н?е????? ?????п????????о?????н??????и?м???????а???????ю,?? ??????ч????т??о???????? ???д????а?н?н??ым? ?с???оо???????б???????щ?е?????н????и??ем?? ??в??????ы????з????о??????в??у?????? ??д????о???п???????о???л????н?????и???т???????ел?ь??????н???????ы????????й?? ???и????н????????т??????е???р??????е??????с???????,?? ??????н?о?? ?х????о??????ч?у???????? ???????с??р??а?????з???у?? ?????п??????р????е??д???????о????с?т????е????????р???е??????ч???ь?????? ?????п??????ы?т??????ли????в??????ы???х???????? ?????-????? ??с?????т?????о????????п????.????? ??О????ст???????а???????л????????ь??н?????ы????е??????? ???п?р?????о???????с???т??????о???? ???н????????е????? ?????н?????а????й?????д???????у??????т??????.?? О?????????????н?????????????????????????и????????????????????????? ???????????????????????????и????????????????????????????????????????д???????????????у????????????????т??????????????????????????????!????????????????????????? ????????????????????????Z???????????????????????????????????????A????????????????????????????L?????????????????????????????????G????????????????O?????????????????!??????????????????????????


          1. rekod
            27.09.2018 22:03

            о, круто. теперь реально можно «ср*ть в комментах» :-D


          1. rekod
            27.09.2018 22:06

            д???????у??????т??????.?? О?????????????н?????????????????????????и????????????????????????? ???????????????????????????и????????????????????????????????????????д???????????????у????????????????т??????????????????????????????!????????????????????????? ????????????????????????Z???????????????????????????????????????A????????????????????????????L?????????????????????????????????G????????????????O?????????????????!??????????????????????????

            о, норм так… щас поисследуем…

            выглядит вот так без «хитрой кодировки»:
            д??????? у?????? т??????.?? О????????????? н????????????????????????? и????????????????????????? ??????????????????????????? и???????????????????????????????????????? д??????????????? у???????????????? т??????????????????????????????!????????????????????????? ????????????????????????Z???????????????????????????????????????A????????????????????????????L?????????????????????????????????G????????????????O?????????????????!??????????????????????????


        1. MacIn
          26.09.2018 21:46

          zalgo text generator


        1. boblenin
          27.09.2018 06:28

          Если программист сильный, то он может это сделать путем переворачивания собеседующего :)


    1. kalyukdo
      26.09.2018 21:56

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

      str.split('').reverse().join('')

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

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


      1. YemSalat
        27.09.2018 18:34

        За десять лет вам точно придется ни раз столкнуться с использованием split/join/reverse.
        Тут задача — сложить их вместе для достижения результата. Задача может и «бональная» но не смочь это сделать — довольно хороший детектор.


        1. kalyukdo
          27.09.2018 22:28

          reverse — я реально использовал первый раз, в комментарии выше


    1. Wesha
      26.09.2018 22:10

      1. Free_ze
        26.09.2018 22:16
        +1

        Если «скосить глаза», то можно разглядеть в этом зайчатки TDD-подхода (=


        1. OlegAxenow
          26.09.2018 23:29
          +2

          > Если «скосить глаза», то можно разглядеть в этом зайчатки TDD-подхода (=

          Да, эти TDDшники такие зайки… :)


      1. ookami_kb
        26.09.2018 22:32

        В "Pragmatic Programmer" для этого есть прекрасный термин – Programming by coincidence.


      1. 0xd34df00d
        27.09.2018 00:01

        Ну, кстати, с небольшими модификациями вполне себе метод. Пишешь сигнатуры, пишешь типы все, потом выключаешь мозг и чё-то там делаешь, чтобы тайпчекалось. Или obvious proof search.


        1. Wesha
          27.09.2018 00:12
          +1

          Угу, а потом в продакшне приходит ситуация, на которую не было написано теста (случается сплошь и рядом — Вы не представляете, КАКИЕ входные данные умудряются подсовывать!) — и Ваша «программа» падает со словами «ой, всё!».

          Как говорится, «в противостоянии искусственного интеллекта и естественного идиота побеждает последний».


          1. 0xd34df00d
            27.09.2018 00:24
            +1

            Типы пишешь, не тесты.

            TDD, да, но там другое T.


      1. OYTIS
        27.09.2018 12:36

        На самом деле интересная идея для реализации AI, пишущего программы. А если еще и через тесты прогонять…


  1. ServPonomarev
    26.09.2018 17:17
    +10

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


  1. dedotmoroz
    26.09.2018 17:20

    Если вы только начали свой путь в собеседованиях, то вам предстоит еще много открытий. Как правило, первое общение происходит с HR, у которых все вопросы записаны на бумажке. Это первый фильтр вашего резюме. Общаться с ними на профессиональные темы бесполезно, нужно просто правильно ответить. По этому, допустим для JS, нужно как стихи знать определения: Функциональное программирование, Rest API, замыкание, наследование.


    1. newpy
      27.09.2018 11:12

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

      что быстрее Python или PHP

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


  1. SkylineIT
    26.09.2018 17:22
    +7

    Навсегда запомнил собеседование от HR (!!!) отдела в команду разработки по Skype.
    — Расскажите мне о контракте между hashCode() и equals().
    — (Начинаю рассказывать чего, да как).
    — Нет, вы не поняли. Расскажите как это написано в JLS.
    — То что вам рассказываю это разве не то?
    — Нет. В JLS описано не так.
    (проехали пару вопросов)

    — Расскажите про уровни изолированности в JDBC.
    — (Рассказываю, провожу аналогии с MS SQL и ORACLE).
    — Я что-то вас не поняла. Вы там что, гуглите?

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

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


    1. avraam_linkoln
      26.09.2018 17:36

      По поводу «задоминировать респондента» — есть хорошая статья на известном всем сайте) Часто встречаю уловки, описанные в ней )


      1. ThisMan
        26.09.2018 18:11
        +2

        А можно ссылочку, стало интересно)



    1. AllexIn
      26.09.2018 20:12
      +2

      «Да, гуглю. Кстати, если ваши вопросы гуглятся в течении 10 секунд, не пойти ли вам нахрен с такими вопросами?»


    1. Maksclub
      26.09.2018 22:17

      Я что-то вас не поняла. Вы там что, гуглите?

      ААААА! Меня аж встряхнуло от этих строк — когда на собеседовании по скайпу накидывал по Liskov Principe (soLid) и мне сказали «Вы там читаете в Гугле?» и даже речь заплетаться стала у меня :)


  1. hzs
    26.09.2018 17:26

    Ещё со времён технаря я не запоминаю конструкции языка программирования, мне это совсем не нужно. Я просто пишу на естественном языке всю логику, а потом могу её реализовать на любом языке программирования просто гугля нужные мне конструкции выбранного языка.
    Мой друг хорошо помнил практически все операнды и функции того же C++, но при этом у него было всё печально с логикой.
    Вопрос такой: кто из нас двоих лучше как разработчик?
    Да, в те далёкие времена мы с другом писали то, что не могли написать больше никто из нашей группы.
    Я и сейчас не факт что без ошибок с первого раза напишу простейший цикл, но это и не нужно, я ведь знаю, что мне нужно написать, а как это написать знают поисковые системы.


    1. fareloz
      26.09.2018 17:46
      +2

      ответ: ни тот, ни другой


      1. hzs
        26.09.2018 19:11
        +1

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


        1. alexdevyatov
          27.09.2018 10:18

          ему нужен и швец, и жнец, и на дуде игрец


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


    1. SkylineIT
      26.09.2018 17:51

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

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

      Какого мнения придерживаюсь я?
      Гугл — это инструмент, которое может тебе дать неправильное решение. Почему? А потому что ты загуглил проблему, открыл первую же ссылку на StackOverflow и скопировал решение. Добавило ли это тебе экспертизы? Нет, а это плохо. Надо стараться разбирать те типовые проблемы, с которыми ты сталкиваешься и хотя бы поверхностно изучать внутренности языка, чтобы совсем уж лохом не казаться, когда будешь собеседоваться.


    1. Mirn
      26.09.2018 17:55
      +1

      Я тоже вообще не знаю конструкции даже того языка на котором у меня 90% всего за 20 лет написано. И по этому я вообще в принципе не могу пройти тех собеседование где плювать хотели на мои проекты (как единственное доказательство того что я умею), а им важнее знать что означает «const volatile переменная», а потом метод, а потом ещё чего позаковыристее.
      Если компания «зазвездилась» до топов это доходит до маразма: начало 2015 года, одной сами знаете какой компании надо сделать тензорный процессор не хуже гугла для поиска по картинкам, ищут FPGA разработчика-схемотехника, меня забраковали потому что я знаю только C++11 а вот C++14 уже нет т.к. не смог ответить на их «очень простой технический вопрос». Естественно по самой простой конструкции уровня сложности не сеньёра а code-monkey. Кое как до них с городского дозвонился, в итоге сказали:«Вы вообще не разработчик, пожалуйста не звоните, ваш мобильный внесён в блек лист». Естественно каких либо верилогов и языков описания таймингов они в требования не внесли и не проверяли на тех собеседовании.
      Приезжаешь в другую страну и встречаешь такие же портянки технологий, но появляется одна «мелочь» которая гласит «любое из» (????). И работа находится сразу же, и проекты поинтереснее, и никто не ожидает что один человек за пол года тензорный процессор на десятки петафлопов свояет, и зарплата (в пересчёте на местные расходы) повыше «зазвездившихся» даже в предприятиях типа «болото». И даже есть и время и оплаченная возможность отдохнуть и погонять на ардуинке нейросети в реалтайме.


      1. anfield343
        26.09.2018 17:57

        начало 2015 года, одной сами знаете какой компании надо сделать тензорный процессор не хуже гугла

        сорри не в курсе, что за компания?)


        1. Mirn
          26.09.2018 18:03
          +2

          Яндекс,
          им очень не понравилось то что я не очень хорошо питон знаю, а то что я не смог ответить по новому ключевому слову из С++14 вообще просто повесили трубку без объяснения причин, вот и начал вызванивать «что это было? и почему тех собеседование и 5 минут не продлилось?».


          1. djinninia
            26.09.2018 18:26

            и почему тех собеседование и 5 минут не продлилось?

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


            1. Mirn
              26.09.2018 18:34

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


            1. adel-s
              26.09.2018 19:24
              -1

              Вообще-то есть. Называется пометка NO HIRE в карточке кандидата.


              1. ReklatsMasters
                26.09.2018 19:55

                А за что такие раздают?


              1. xcore78
                26.09.2018 20:00
                +1

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


          1. xcore78
            26.09.2018 19:58
            +1

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


          1. FoxCanFly
            26.09.2018 20:19
            +1

            В C++14 новых ключевых слов не появлялось. en.cppreference.com/w/cpp/keyword
            Может, вы не поняли, о чем вас вообще спрашивали, и проблема в этом?


      1. djinninia
        26.09.2018 18:24

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


        1. Mirn
          26.09.2018 18:37
          +1

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


          1. balexa
            26.09.2018 18:49
            +3

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

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


            1. Mirn
              26.09.2018 18:55
              +1

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


              1. Hardcoin
                26.09.2018 19:45

                Это просто ложно отрицательное срабатывание. Вряд ли с этим можно что-то сделать на самом деле. Если у компании будет 50% ложно отрицательных, она загнётся. А 5% вполне может себе позволить.


            1. shai_hulud
              26.09.2018 18:57

              > фильтр блума
              Спасибо тебе хабравчанин. Давно читал статью про распределенные БД и там было описание функции повзоляющей быстро определить относится ли число к множеству. Я не запомнил название, но теперь то я ее добавлю во вкладки.


            1. i86com
              27.09.2018 10:11

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


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

              То есть, как бы, корреляция-то есть, но не совсем работающая.


              1. balexa
                27.09.2018 11:20

                Аналогии всегда немного фальшивы, как котенок с дверцей.

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


      1. dag_tech
        26.09.2018 19:18

        :) очень понравилось слово «свОяет» (вместо свАяет) — возьму на вААружение — буду спрашивать коллег — а вот как же ты, боевой товарищ, вот такое вот свОял?


      1. tangro
        26.09.2018 22:59

        Не, ну про «const volatile переменная» — это нормальный вопрос, если там системного программиста или эмбедщика искали. Сразу раскрывает опыт (либо горизонт фантазии) соискателя.


        1. CodeRush
          27.09.2018 06:01

          А давайте обсудим.
          const — не даст (без кастов) писать в переменную из кода, до которого компилятор дотягивается, а volatile не даст сработать агрессивным оптимизациям, которую эту переменную могли бы выкинуть вообще, или заменить на константу.
          Итого получается что-то вроде «зарезервируй мне, компилятор, кусок памяти где-нибудь здесь, но писать в него обычным образом не давай».
          Подойдет указателям на RO-регистры, доступные через MMIO.


          1. mayorovp
            27.09.2018 11:58

            Или, как вариант, это может быть extern const volatile-переменная. Писать в нее можно, но не в этом модуле.


            1. CodeRush
              27.09.2018 15:48

              А volatile ей тогда зачем? В голову приходит только какой-то глобальный объект в многопоточной программе, который можно читать из разных мест, а писать только в одном (либо только хитрым способом). Borrow checker для бедных.


              1. Ogra
                27.09.2018 16:15

                volatile не даст компилятору заоптимизировать эту переменную (например, положив её в регистр). borrow checker тут ни при чем.


                1. CodeRush
                  27.09.2018 16:44

                  У вас переменная уже extern const, оптимизировать ее компилятор уже не будет, потому что она в другом translation unit, и положить ее в регистр если и получится, то только при LTO.
                  Borrow checker тут при том, что он гарантирует инвариант «доступ к переменной может быть либо из многих мест на чтение, либо из строго одного места на чтение и запись», а конструкция extern const volatile — это как раз про доступ к временной из разных мест на чтение, а для бедных он потому, что хоть и гарантирует, что значение при доступе действительно будет прочитано из переменной каждый раз, но не обеспечивает ни отсутсвие гонки по данным (т.е. чтение во время изменения), ни проверок во время компиляции.


                  1. tyomitch
                    27.09.2018 18:06

                    У вас переменная уже extern const, оптимизировать ее компилятор уже не будет, потому что она в другом translation unit, и положить ее в регистр если и получится, то только при LTO.

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


                    1. CodeRush
                      27.09.2018 18:25
                      +1

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


                      1. tyomitch
                        27.09.2018 18:47

                        Дык выше вы сами написали зачем: «Подойдет указателям на RO-регистры, доступные через MMIO.»


                        1. CodeRush
                          27.09.2018 19:25

                          Я про вот этот случай конкретно:

                          Или, как вариант, это может быть extern const volatile-переменная. Писать в нее можно, но не в этом модуле.

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


                          1. tyomitch
                            27.09.2018 19:33

                            Если однопоточная, но состоит из нескольких compilation units, которые работают с одними и теми же MMIO-регистрами?


                            1. CodeRush
                              27.09.2018 19:51

                              К таким вопросов нет.


      1. dr_begemot
        27.09.2018 11:11

        Если не секрет, в какую страну переехали?)


    1. 0xd34df00d
      26.09.2018 18:58

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


    1. dag_tech
      26.09.2018 20:25

      Да вот тоже периодически мучаюсь вопросом — где золотая середина между бессмысленной детализацией сверхмелких знаний и ватной высокоуровневой абстракцией «не грузите меня мелочевкой»…
      Про железо: по молодости был у меня товарищ, который наизусть знал все параметры разных BIOS'ов, чипсетов, сигналы IDE и скорости вентиляторов видюх — что, по его мнению, предполагало очевидную предсказуемость успеха сборки компов на заказ… однако после третьего сожженного (частично) комплекта недешевых компонентов как-то стал обращаться ко мне, после 3-4 успешно собранных системников что-то заскучал и бросил это дело;
      Про разработку софта: в конце 80-х трое коллег подрядились за разработку узкоспециализированной статистической программки, все трое по книжкам на память знали весь синтаксис PL-1 (в 2-3 диалектах, с различиями в запятых и слэшах), пописывали программки по 10-40 строк — само собой, при доступе к ЕС- (или СМ?) ЭВМ с печатающим устройством, возможностями разделения задач и т.п. выбрали этот инструмент. Меня и ближайшего начальника странноватый энтузиазм слегка насторожил и я начал в остающееся от основных задач время писать на одном из вариантов BASIC на Спектруме, само собой, ни этот ни какой-либо другой диалект я особо и не знал — справочник лежит под рукой и достаточно. Через пару недель «устойчивая» BASIC-версия была готова что было весьма кстати, т.к. «конкуренты» застряли на простом расчете коэффициента корреляции (формирование массивов, извлечение очередных элементов, собственно расчет). Оправдание перед более высоким начальством — PL-1 не позволяет реализовать такие сложные расчеты…
      Про собеседование: попросили меня помочь оценить квалификацию специалистов на вакансию, куда могли подойти в том числе и специалисты техподдержки ИТ-инфраструктуры (если уж не совсем интроверты). Из таковых пришло человек 8. 4 — бойкая (что не плохо) молодЕжь вот такого типа www.anekdot.ru/an/an0710/o071025.html#10 (СПЕЦИАЛИСТ ПО ХАБАМ И СВИЧАМ), но особо запомнился титулованный товарищ среднего возраста, который работал в техподдержке 3-го уровня в российском представительстве крупного вендора. 1-ый уровень — это обученные специалисты заказчиков (типа решают проблемы стандартные), 2-ой уровень — сертифицированные специалисты партнеров, ну а 3-й уровень — это уже просто «зубры». Чтобы разговорить товарища и понять чем занимается, 10 минут я упрашивал его рассказать о примерах инцидентов с которым он работает (и документирует решения), потом 20 минут с отчаяния начал набрасывать примеры — оборудование вышло из строя на аппаратном уровне...., неправильная обработка протоколов маршрутизации, падение производительности — ответы — нет, это все не к нам… а что же к вам? нет ответа, нет вообще. так и разошлись.


      1. hzs
        26.09.2018 21:45

        Не получилось придумать достойную этого мегазубра сложную задачу? :0))


      1. dyadyastepa
        27.09.2018 13:32

        А мне кажется что вы не совсем верно понимаете разделение на уровни поддержки.
        Первый уровень — оперативная поддержка. Это обеспечение бесперебойной работы систем и решение проблем только по инструкции. Есть инструкция как решить проблему, значит она решается. Если инструкции нет, то передается дальше. Как правило, первый уровень реализует поддержку по принципу 365/7/24.
        Второй уровень решает несложные нетривиальные проблемы, не требующие серьезного анализа и разработки. Например на этом уровне может сделаться несложный data fix или может быть сделан какой-то быстрый workaround. Здесь уже как правило не идет речь о поддержке 365/7/24. Как только стукает 18 или 19 часов все разбегаются по домам. Но если задача важная, то могут и решать сверхурочно.
        А вот третий уровень, это непосредственно разработка и решение проблем, требующих серьезного анализа. Почти все о чем вы написали действительно не его профиль. Потому что все перечисленные проблемы решает первая и вторая линия поддержки. А он занимается другим: разработкой новых фитч по запросу пользователей, баги в софте ковыряет (если это вендор ПО или интегратор) и пр.


    1. Keyten
      26.09.2018 20:36
      +4

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


      1. hzs
        26.09.2018 22:02
        -1

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


  1. fshchudlo
    26.09.2018 17:30
    +3

    Я закрываю скайп и, конечно, тут же вспоминаю, что за virtual.

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


    1. bask
      26.09.2018 19:26

      У этого явления даже название есть — эффект лестницы ru.wikipedia.org/wiki/%D0%9B%D0%B5%D1%81%D1%82%D0%BD%D0%B8%D1%87%D0%BD%D1%8B%D0%B9_%D1%83%D0%BC


  1. u010602
    26.09.2018 17:36
    +2

    Я сам разработчик, но проводил собеседование в команду в том месяце. Если коротко обобщить мой опыт — «берем первого не самозванца». Дело не в знании virtual, дело в том что можешь написать «синьор», «бест оф зе бест» и так далее — совершенно не важно. Все равно тебе пришлют резюме, и на все твои требования скажут — «знаю поверхностно если что разберусь», так банально делают все. И будут убеждать — я то что вам нужно, у меня огромный опыт, я фокусируюсь на практике и решении бизнес проблем. Потом начинаешь тех интервью, оказывается что человек не знает что такое Диспоуз, и зачем он нужен. Не знает зачем метод SuspendLayout хотя заявляет, что у него опыт 5-10 лет с ВинФормами.
    И нет я не заканчивал интервью после первого не верного ответа — ну бывает, человек забыл. Но как можно забыть то, без чего невозможно работать с конкретной технологией, которая указана в резюме?

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

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

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

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

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

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


    1. fillpackart Автор
      26.09.2018 17:49
      +1

      Тестовое задание?


      1. u010602
        26.09.2018 17:56
        +2

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

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


        1. fillpackart Автор
          26.09.2018 17:59
          +1

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


          1. u010602
            26.09.2018 18:20

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


          1. sentyaev
            26.09.2018 18:33

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

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


            1. usego
              26.09.2018 19:14

              Бывает и так, что все хотят сениора, а дают ему потом таски типа вёрстки. Что бы сохранить сениора, такую рутину приходится скидывать на джунов.


              1. sentyaev
                26.09.2018 19:42
                +3

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

                Что бы сохранить сениора, такую рутину приходится скидывать на джунов.

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


                1. usego
                  26.09.2018 21:23
                  -1

                  Если заказчик в итоге доволен, то win-win.


                1. u010602
                  26.09.2018 21:53

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


      1. arcman
        27.09.2018 11:34

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


        1. punkkk
          27.09.2018 11:47

          А по-моему это отличный шанс показать как хорошо можешь сделать. Хотя никто не мешает сделать не самому.


          1. 0serg
            27.09.2018 18:36

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


            1. cooltonbek
              27.09.2018 19:40

              Точно такое у меня было месяца полтора назад.
              Дали тестовые задания, дали сутки.
              Задания нормальные такие.
              Не всё успел, конечно.
              Но самому понравилось, как хорошо сделал то, что успел.
              В ответ, если вы пройдёте, мы вам позвоним. И тишина.
              Обидно. Ну хоть опыт наработал в прохождении квеста.


    1. panteleymonov
      27.09.2018 22:12

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


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

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

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


  1. sentyaev
    26.09.2018 17:39
    +2

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

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

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

    Зазубривание кейвордов, механик, принципов и паттернов — опциональный скилл. Думать и предвидеть — вот хороший скилл.

    Сеньору это не нужно зазубривать, он и так все знает, т.к. пользуется, а если не пользуется, то возникает вопрос — почему?

    С другой стороны, очень хорошо, что бомбит, возможно это одна из тех компаний — «свидетелей Рихтера» и «последователей SOLID». Где принимают на работу строго по оглавлению CLRviaC#. А код у них похож на FizzBuzzEnterprise и они очень горды этим.


    1. usego
      26.09.2018 21:34
      +3

      >Сеньору это не нужно зазубривать, он и так все знает, т.к. пользуется, а если не пользуется, то возникает вопрос — почему?

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


      1. 0serg
        27.09.2018 18:40

        Эти «специалисты» потом оказываются заточены на крайне узкий класс задач.
        Шаг вправо шаг влево — и нихрена они уже не понимают. Смутно вспоминают чего-то, но реализовать уже не могут. Здорово конечно когда находится такой спец вот конкретно на ту задачу которая есть у тебя. Но для 99% задач такой спец не годится а под оставшиеся 1% часто проще нанять кого-то попроще но кого не понадобится 3 года искать потому что таких спецов всего двое на всю Москву.
        Толковый же джун он может сейчас чего-то и не знать, но он всему научится. Беспроигрышный вариант в среднесрочной перспективе


    1. AllexIn
      26.09.2018 21:44
      +2

      Потому что дохрена задач решают разных?
      Работю с Unreal Engine.
      У меня тут статья есть про то как делать анимации через Sequencer. Так я её на днях использовал, чтобы вспоминить ка кделать анимации в Unreal Engine.
      Или вот настройка анимаций персонажей, год назад был проект в котором делали очень сложные анимации и я досканально с ним поработал.
      А тут открыл редактор и даже вспомнить не мог как что делается, пришлось в доки лезть.
      Причина проста — я не аниматор и работаю с анимациями далеко не каждый день.
      Но если я иду на сеньора — такие вещи я должен знать. И я их знаю… но не помню.


      1. usego
        26.09.2018 21:53
        +2

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


      1. sentyaev
        26.09.2018 23:28

        Мы начинали с базовых вещей, как пример приведенный автором статьи — виртуальный метод, а вы говорите про знание фреймворка, это разные вещи.
        Для фреймворков тоже есть базовые вещи и если нужен специалист именно со знанием фреймворка, то спрашивают. Вот как пример, во времена ASP.NET WebForms, если вы шли на сеньора, то всегда спрашивали про Page Lifecycle, и если сеньор его не знает, то обычно он шел лесом.


  1. anfield343
    26.09.2018 17:41

    Недавно чисто ради интереса проходил собес на сеньера в компанию, которую долго присматривал. Написала HR, типа привет ты такой клевый все дела, гоу к нам на собес, ну я и пошел проверить что мне предложат, перед этим сказала, что меня встретит, проводит и все расскажет про компанию, проект etc.
    В итоге прихожу к назначенному времени, встречает непойми кто, в прямом смысле, даже не представилась, отвела в какую-то комнату, где сидела какая-то бабища, сказала что-то типа привет, предложив присесть, и ожидает еще одного собеседующего, как выяснилось напыщенного чмыря с ноутом.
    Подождали пару минут его и началось, ни слова о том спасибо что пришли, вот наша компания, мы такие крутые, у нас здорово, началась сразу тех часть, сразу базовые вопросы, что такое замыкание(ответил), this(ответил), чем отличается var, let, const(ответил), промисы(ответил), вопросы по es6(стрелки, spread, etc.)(ответил), потом спрашивает, какие фреймворки и библи юзал, ну и говорю, vue, react и что больше нравится vue. Бабища говорит, что будем отталкиваться от react и подсовывает листик и говорит пиши компоненту, где рендерится count и по нажатию кнопочки идет увеличение на 1. У меня принцип не писать ничего на листике, тем более когда с компом чувак пришел. Они посмотрели на меня как на дерьмо и с ухмылкой дали ноут, спросив какую IDE мне открыть, я им говорю хоть блокнот, мне все равно.
    В итоге написал я компоненту, подходят и спрашивают, а почему я юзал react(WAT????), типа нужно было на нативе писать все это, короч я не выдержал, встал и ушел, потому что это невозможно!!!
    Если я не прав, напишите плиз в ответ к этому комменту, почему?


    1. balexa
      26.09.2018 18:55
      +9

      >бабища
      > напыщенного чмыря
      > дерьмо и с ухмылкой дали ноут

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


      1. anfield343
        26.09.2018 19:06
        +6

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


        1. tangro
          26.09.2018 23:11

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


    1. xcore78
      26.09.2018 20:07
      +3

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


    1. JekaMas
      27.09.2018 14:56

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


  1. Ascar
    26.09.2018 17:49
    +1

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


  1. fivehouse
    26.09.2018 17:52

    Убей не помню. Смотрю — топище расплывается от гордости, светится. Высокомерие так и льется из экрана. Рад, что съел очередного болвана, который не знает “базовых” вещей. Самоутвердился, можно искать следующего. Интервью, естественно, кончается.
    Тяжелый лайф хак: как только понимаешь, что какую лажу выкидывают собеседеры заявляешь, что предлагаешь прекратить собеседование прямо сейчас чтобы не терять своего времени (или ты понял что компания находится в стадии хаоса, или мало понимает свои цели, или еще что-нибудь такое веселое на твой взгляд). Гордость, свечение и высокомерие собеседера быстро испаряются. Я так делал всего один раз, когда мне заявили, что переработка будет учитываться (не оплачиваться!) только если я буду работать до часу ночи. Собеседера от моей оценки и предложения немножко трусило.


  1. Emigrate
    26.09.2018 17:52

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


  1. shai_hulud
    26.09.2018 18:35
    +13

    То, что сеньер не знает что такое virtual никого не смутило? Серьезно?


    1. Ascar
      26.09.2018 18:39
      +2

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


    1. slonopotamus
      26.09.2018 18:41
      +9

      Вот я тоже не понял. На мой взгляд интервьюер всё правильно сделал.


    1. shai_hulud
      26.09.2018 18:44
      +7

      Сугубо мое личное мнение:
      Джун — должен рассказать о virtual и о переопределении при наследовании
      Мидл — должен к этому всему добавить хорошие use cases, и вспомнить о abstract/sealed.
      Сеньер — должен рассказать о виртуальных вызовах на интерфейсах/структурах. И в плюсы ему пойдет знания о том как работает VMT и во что компилируются подобные вызовы, как можно «убрать» боксинг/виртуальный вызов через дженерики.


      1. Varim
        26.09.2018 18:51
        +1

        Странно, а что джун этого не может знать?
        abstract/sealed — да уж, джун не потянет…

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

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


        1. shai_hulud
          26.09.2018 19:08
          +2

          Странно, а что джун этого не может знать?
          abstract/sealed — да уж, джун не потянет…

          Конечно может, но это от него не требуется.

          Знания того как работают виртуальные вызовы это и есть «опыт работы с инструментами». Рантайм это инструмент.


          1. Varim
            26.09.2018 19:16
            +1

            Конечно может, но это от него не требуется.
            Джун читает книгу о языке, и в той книге всё написано, как он может не знать?

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


            1. Free_ze
              26.09.2018 19:20
              +2

              А если бы я не знал этого, то я не синьер?

              Очень-очень сомнительный сеньор.

              В работе мне эти знания ни разу не пригодились.

              Значит такая работа была.


              1. Varim
                26.09.2018 19:29

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


                1. Free_ze
                  26.09.2018 19:37
                  +4

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


                  1. Varim
                    26.09.2018 19:39
                    +1

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


                    1. Free_ze
                      26.09.2018 20:55
                      +1

                      О каких циклах речь?


                    1. FoxCanFly
                      26.09.2018 21:16

                      Тест за 5 минут
                      #include <iostream>
                      #include <cstring>
                      
                      class IVirtualOp
                      {
                      public:
                      	virtual void add() =0;
                      	virtual long get() const =0;
                      	~IVirtualOp() = default;
                      };
                      
                      class VirtualAdd : public IVirtualOp
                      {
                      public:
                      	void add() override
                      	{
                      		acc++;
                      	}
                      
                      	long get() const override
                      	{
                      		return acc;
                      	}
                      
                      private:
                      	long acc = 0;
                      };
                      
                      
                      class VirtualSub : public IVirtualOp
                      {
                      public:
                      	void add() override
                      	{
                      		acc--;
                      	}
                      
                      	long get() const override
                      	{
                      		return acc;
                      	}
                      private:
                          long acc = 0;
                      };
                      
                      void testNonVirtual(bool sub, long count)
                      {
                      	long res;
                      	if(sub)
                      	{
                      		VirtualSub o;
                      		for(long i = 0; i < count; ++i)
                      		{
                      			o.add();
                      		}
                      		res = o.get();
                      	}
                      	else
                      	{
                      		VirtualAdd o;
                      		for(long i = 0; i < count; ++i)
                      		{
                      			o.add();
                      		}
                      		res = o.get();
                      	}
                      	std::cout << res;
                      }
                      
                      void testVirtual(bool sub, long count)
                      {
                      	IVirtualOp* o = (sub) ? static_cast<IVirtualOp*>(new VirtualSub())
                      	: static_cast<IVirtualOp*>(new VirtualAdd());
                      
                      	for(long i = 0; i < count; ++i)
                      	{
                      		o->add();
                      	}
                      	std::cout << o->get();
                      }
                      
                      int main(int argc, char* argv[])
                      {
                      	if(argc != 4)
                      		return 0;
                      	long count = atol(argv[3]);
                      	bool useSub = strcmp(argv[2], "sub") == 0;
                      	if(strcmp(argv[1], "n") == 0)
                      		testNonVirtual(useSub, count);
                      	else if(strcmp(argv[1], "v") == 0)
                      		testVirtual(useSub, count);
                      	
                      	return 0;
                      }
                      


                      $ time ./tst n sub 1000000000
                      -1000000000
                      real	0m0,001s
                      user	0m0,000s
                      sys	0m0,001s
                      $ time ./tst v sub 1000000000
                      -1000000000
                      real	0m1,580s
                      user	0m1,577s
                      sys	0m0,003s
                      
                      



                      1. ianzag
                        26.09.2018 21:36

                        $ g++ --version
                        g++ (Debian 6.3.0-18+deb9u1) 6.3.0 20170516
                        Copyright (C) 2016 Free Software Foundation, Inc.
                        This is free software; see the source for copying conditions. There is NO
                        warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

                        $ time ./tst n sub 1000000000
                        -1000000000
                        real 0m2.859s
                        user 0m2.856s
                        sys 0m0.000s

                        $ time ./tst v sub 1000000000
                        -1000000000
                        real 0m2.916s
                        user 0m2.912s
                        sys 0m0.000s

                        От незадача! Как так?! :(


                        1. FoxCanFly
                          26.09.2018 21:40

                          -O0?


                          1. ianzag
                            26.09.2018 21:50

                            Если бы только -O0. Конечно, сначала это было именно оно. Но достаточно убрать инлайн реализацию чтобы свести все к 1:1.


                            1. FoxCanFly
                              26.09.2018 21:57

                              А часто в реальных проектах релизные сборки собираются с отключенными оптимизациями и запрещенным инлайном?


                              1. ianzag
                                26.09.2018 22:14

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

                                В вашем тесте сравнивается не виртуальность/невиртуальность но инлайн/неинлайн. Это уже немного о другом.


                        1. QtRoS
                          26.09.2018 22:49

                          В очень хорошей статье про кост виртуальных вызовов написано:
                          http://ithare.com/c-performance-common-wisdoms-and-common-wisdoms/
                          Он есть. Но не он решает.


                      1. marsermd
                        26.09.2018 22:24

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


                        Если бы вы скомпилировали без оптимизаций, я бы сказал что это нечестный бенчмарк, т.к. в продакшене всегда включают -O2.


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


                  1. ianzag
                    26.09.2018 20:41

                    Интересно было бы послушать ваше объяснение на эту тему. Желательно в цифрах с описанием методологии измерения. Применительно к C++. Я не навязываюсь. Но уж если вы затронули эту тему и она проста и тривиальна как три рубля… Не затруднит ли вас?


                    1. Free_ze
                      26.09.2018 21:16

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


                      1. ianzag
                        26.09.2018 21:25

                        Я правильно понимаю, что аналогичным образом вы будете аргументировать свои за/против использования виртуальных методов в C++ потенциальному кандидату на собеседовании если его точка зрения разойдется с вашей?


                        1. Free_ze
                          26.09.2018 21:53
                          -1

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


                          1. ianzag
                            26.09.2018 22:08

                            Нет уж, паровоз, давай таки по рельсам…

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

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

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

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


                            1. Free_ze
                              26.09.2018 22:30
                              -1

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

                              Напротив, это совсем не повод замыкаться в своем невежестве. Нужно читать умные книжки про оптимизацию, не стесняться лезть «под капот», развиваться шаг за шагом. Это показатель опыта, а не: «Я 15 лет хреначу CRUD'ы интернет-магазинов и делаю это быстрее всех, поэтому сеньор».


                            1. shai_hulud
                              26.09.2018 22:37
                              +1

                              Это у вас в С++ всё инлайнится и «затирается» и на вкус и цвет почти как обычный вызов.

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


                              1. mayorovp
                                27.09.2018 12:06

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


                                1. shai_hulud
                                  27.09.2018 16:04

                                  Интерфейсы, виртуальные методы Object, ValueType, Enum.


                        1. Free_ze
                          26.09.2018 22:04
                          -1

                          А вы что-то доказать хотите или предложить?


            1. shai_hulud
              26.09.2018 19:45
              +1

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

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

              Есть классификации программистов, которая мне лично нравится:
              Джун — тот кто решает простые проблемы сложным путем.
              Мидл — тот кто решает простые проблемы простым путем, сложные сложным.
              Сеньер — тот кто решает сложные проблемы простым путем.


            1. 0xd34df00d
              27.09.2018 00:10
              +1

              Знание VMT неплохо коррелирует с интересом к тому, как вещи работают под капотом, а это неплохо коррелирует с успехом в дебаге, написании эффективных приложений и так далее.


              1. Varim
                27.09.2018 01:47

                Есть у меня сам по себе интерес к подобному, но денег это не приносит.
                Вот я и интересуюсь что это за работы. Какой спрос, какая плата. Я ни разу не дебажил ничего связанного с VMT.
                Если не писать квадратичные алгоритмы и использовать кэши, то в типичных бизнес приложениях, которых 99% на рынке, и не надо никаких других оптимизаций.
                Конечно игры и 3D могут требовать иной подход, но спрос на подобное, в процентах ИМХО ничтожен.


                1. Free_ze
                  27.09.2018 12:22

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

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


      1. Wesha
        26.09.2018 22:25
        +3

        Вы как будто анекдот не помните...


        В институте на разных курсах задают вопрос: сколько будет 2 умножить на 2?
        Первокурсник: (бодро) 4!
        Второкурсник: (достаёт таблицу умножения, смотрит) 4!
        Третьекурсник: (достаёт таблицу логарифмов, смотрит, считает) 4!
        Четверокурсник: (достаёт логарифмическую линейку, щёлкает пару секунд) с удвлетворительной точностью — 4!
        Пятикурсник: Да что я вам, слон — все константы наизусть помнить?!


        1. KvanTTT
          27.09.2018 02:02

          Ответы везде неверные, ведь 4! = 24 :D


      1. stul5tul
        28.09.2018 13:06

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

        Знал как устроена VMT еще в школьные годы. То есть это до джуна.
        Затем забыл за ненадобностью.
        Сеньор даже на уровне паттернов работает уже на уровне уровне автоматизма, а вы про какие-то байтики спрашивайте.
        Если этот сеньор будет разрабатывать компилятор — то знание VMT будет ему крайне нужно.
        Иначе — зачем?
        Приведите конкретный кейс, пожалуйста.


    1. fillpackart Автор
      26.09.2018 18:57
      +1

      Я забыл слово. Не поведение, которое оно даёт.


      1. Free_ze
        26.09.2018 19:16
        +2

        Что такое virtual?
        Бам!

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


        1. fillpackart Автор
          26.09.2018 19:20
          +2

          И мгновенно превратился в самозванца, да.


          1. Free_ze
            26.09.2018 19:30
            +4

            Ну это действительно странно выглядит.

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


            1. fillpackart Автор
              26.09.2018 19:39

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


              1. xcore78
                26.09.2018 20:10
                +1

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


                1. fillpackart Автор
                  26.09.2018 20:32
                  +1

                  Тем не менее, я всё ещё нахожусь в мире, где я «забыл связь virtual с его значением». И мне здесь холодно.


                  1. aunoor
                    26.09.2018 20:40
                    +1

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


                  1. xcore78
                    26.09.2018 21:51
                    +1

                    Я как-то какую-то базовую вещь про OSPF забыл на собеседовании. И еще много других базовых вещей на других собеседованиях. Все забывают. А для похлопывания по плечу удобнее сходить в бар.


              1. MacIn
                26.09.2018 21:29

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

                Каким образом это является проблемой?


              1. Free_ze
                26.09.2018 21:29

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


                1. xcore78
                  26.09.2018 21:53
                  -1

                  И оба пути неверные.
                  Есть третий: разобраться, почему работа мозга является вероятностным процессом, и перестать волноваться в принципе.


      1. Nomad1
        26.09.2018 22:52
        +2

        Ну так тут два варианта: либо у вас был ступор, либо вы — fraud. Многие почему-то принимают первое за второе. У меня когда-то спросили можно ли написать

        class object : object
        { }

        Мои шестеренки сразу заклинило, я с трудом выдавил «нет» и на вопрос «а как сделать, чтобы можно было?» я не ответил, потому что не мог понять, что от меня вообще хотят и зачем это надо. А собеседующий всего лишь хотел услышать, что я знаю как работать с префиксом @:
        class @object : object
        { }


      1. boblenin
        27.09.2018 04:32

        Не быть вам филологом.


  1. DocJester
    26.09.2018 18:53

    Судя по всему, да.
    Если не ошибаюсь, есть специальный веб-сервис для таких «переворотов»


  1. Stas911
    26.09.2018 19:11
    +3

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


    1. Varim
      26.09.2018 19:21
      -1

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


      1. flx0
        26.09.2018 19:29
        +6

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


        1. Varim
          26.09.2018 19:34
          +1

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


        1. Gemorroj
          26.09.2018 21:00

          новое — не всегда интересное. область моих интересов в it, например, как правило работодателю не нужна. а нужны реакты, редуксы и прочии нахайпованные go


      1. Stas911
        26.09.2018 22:55

        Разумеется, это право соискателя — отказаться от задания. Но пока не отказывались.


    1. anz
      26.09.2018 19:51
      +2

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


    1. fatronix
      27.09.2018 14:25

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

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


  1. x893
    26.09.2018 19:22

    Я последнее время прошу прислать часть проблемного/работающего кода и смотрю перед тем как на письмо отвечать. Сразу показывает многое про уровень. В одной конторе транзакционность сделали по дате, а при вопросе — почему не уровне полей (удобнее для людей), даже не поняли о чём речь. Хотя надувались на virtual/object/var и прочую ерунду (это видимо в какой то методичке написали, а потом все copy/paste в мозг переносят).


    1. Stas911
      27.09.2018 02:53

      Это кто кандидатам будет продакшин код высылать? Ни разу про такое не слышал


      1. x893
        27.09.2018 09:17

        Про улучшение качества мультфильмов при помощи компьютера тоже никто не слышал 10 лет назад. Я и не требую весь production код.


      1. x893
        27.09.2018 17:46

        Но везде люди работают — значит и ошибаются.
        github.com/aeroflotsrc/webapp


  1. nvgordeev
    26.09.2018 19:27

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


    1. Stas911
      27.09.2018 02:54

      Мне кажется очень многие чувствуют себя самозванцами на каждой новой работе


  1. snp
    26.09.2018 19:30

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


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


    1. i360u
      26.09.2018 19:32
      +2

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


      1. KoCMoHaBT61
        26.09.2018 23:02

        О, это отдельные крутые парни.


    1. pesh1983
      26.09.2018 22:46
      +1

      Наверное потому, что подрядчика легче сменить, чем наёмного работника по ТК)


      1. snp
        27.09.2018 00:18

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


    1. aknew
      26.09.2018 23:59

      От работодателя зависит, некоторые (может мне везло, но не меньше трети) таки проводят собеседования для подрядчиков, причем если сравнивать 3 собеседования как сотрудника подрядчика и 6 как просто соискателя за последний год, именно как сотрудника подрядчика меня гоняли гораздо больше и собеседования были сложнее (я бы даже сказал что там другая проблема была — у меня возник вопрос «нафига было меня собеседовать больше двух часов чтобы в итоге посадить на ЭТО» что во многом подтолкнуло ко второй 6-ке собеседований :) )


    1. Stas911
      27.09.2018 02:56

      О, это я скоро буду наблюдать вживую! У нас новый менеджмент уволил целый отдел удаленщиков и собирается отдать код на аутсорс в США (а те в Индию, как водится — дураки что ли в США код писать?).


  1. i360u
    26.09.2018 19:31
    +5

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


    1. snp
      26.09.2018 19:39

      По-моему, у боевых разработчиков часто нет времени на проведение интервью :)


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


      1. i360u
        26.09.2018 19:52
        +2

        По-моему, у боевых разработчиков часто нет времени на проведение интервью :)

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


    1. MrEsp
      27.09.2018 01:29
      -1

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


      1. i360u
        27.09.2018 09:04

        Проблема в том, что бумажка вам не скажет о уровне разработчика ВООБЩЕ НИЧЕГО. Только реальный код реальных проектов и общая инженерная философия человека. По моему опыту, люди блестяще проходившие бумажные тесты часто оказывались полнейшими мудаками в работе, и напротив, люди сомневающиеся и робкие показывали себя как офигительные и весьма ценные специалисты, ко мнению которых стоит прислушиваться всегда.


    1. gohan
      27.09.2018 02:27
      +1

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

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


      1. i360u
        27.09.2018 09:09

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


  1. anz
    26.09.2018 19:40

    Честно сказать, не рассказать на собеседовании про virtual — это плохой показатель, но не фатальный, конечно. Учитывая волнение.

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

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

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

    Третий этап. Общение с начальством, HR о условиях, деньгах и все такое.


    1. Kwisatz
      28.09.2018 00:15

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

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


  1. rrust
    26.09.2018 19:45
    +1

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


  1. Areso
    26.09.2018 19:56

    И да — теперь, пока за мной не будет стоять мой код, на собес я не пойду.

    Можете раскрыть мысль?


    1. fillpackart Автор
      26.09.2018 21:06
      +1

      Тестовое. Я написал код, я могу доказать, что он мой, я точно не самозванец. Если код им показался плохим — собеса и не будет. Зато меня никто не унизит.


      1. u010602
        26.09.2018 23:01
        +1

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

        Опять-же, вы согласитесь писать тестовое бесплатно в течении недели? И как вы докажите что код, ваш?

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


  1. stul5tul
    26.09.2018 19:56
    +1

    Бизнес почему-то безумно боится самозванцев

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


    1. xcore78
      26.09.2018 20:16

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

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


    1. shai_hulud
      26.09.2018 20:22

      Я как-то по молодости убил БД, копию не сделал.

      Девопса/сис.админа на предприятии не было? Туда им и дорога.


      1. stul5tul
        27.09.2018 15:01

        Девопса/сис.админа на предприятии не было? Туда им и дорога

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


        1. shai_hulud
          27.09.2018 16:14

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

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


    1. Areso
      26.09.2018 20:23

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


    1. prs123
      27.09.2018 09:53

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


  1. amaksr
    26.09.2018 20:11
    +1

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


    1. Varim
      26.09.2018 20:17
      -2

      Для чего virtual? Для того что бы базовые классы вели себя как наследующие классы. Как будто бы класс один, а объекты ведут себя по разному, потому что разные реализации наследования/переопределения виртуальных методов.


      1. amaksr
        26.09.2018 20:39
        +1

        А, почитал и вспомнил, в C# оно пришло с тем же значеним из С++, на котором я когда-то кодил. Расспрашивая по синтаксису конкретного языка сеньера можно только отпугнуть.


        1. aknew
          27.09.2018 00:14

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


      1. MacIn
        26.09.2018 21:21
        -2

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


  1. Mox
    26.09.2018 20:28
    +4

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

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


  1. Max2UP
    26.09.2018 20:33
    +2

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

    «Бизнес почему-то безумно боится самозванцев. Но снижая риск найма самозванцев, компании снижают шанс найма хороших разработчиков.» — риск найма самозванца гораздо хуже, чем риск не найма хорошего разработчика. Дороже обходится. Намного дороже.


    1. propell-ant
      26.09.2018 21:09

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


  1. win0err
    26.09.2018 20:34
    +3

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

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

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


  1. OlegZH
    26.09.2018 20:36

    Ужас! Вот, я. Думаю, что мне делать. Просто так читать книги, да мануалы? Пополнять ряды ничего не умеющих «самозванцев»?… Их (тем, вопросов, сред разработки, библиотек, языков программирования) много. А я один.

    Может быть подкинете мне мне какую-нибудь «домашку». Хочу сделать что-нибудь реальное. Работающее. Нужное. Заодно, изучу новое для себя. Испытаю свои силы. Стану лучше соображать.

    А? Пожалуйста!


    1. dmitry_dvm
      26.09.2018 22:19

      Блог с авторизацией по oidc, постами, тегами, авторами.


  1. sani009
    26.09.2018 20:36

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

    p.s. а ещё все очень сильно удивляются, что на моём текущем месте работы очень редки форс-мажоры. всё исправно и стабильно работает, и нет ацких «юзверей». и хер им докажешь, что грамотно отстроенные системы и регулярный контроль решают, и что людей можно выдрессировать не «сувать в принтер скрепки»…
    только у меня не бомбит как у тс, у меня депрессия =)


  1. andvgal
    26.09.2018 20:46
    +2

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


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


    Мне реально хватало 15 минут чтобы понять — брать человека или нет. Набирали конвейером. Ни разу не пожалел.


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


    P.S. Один раз мне отказали в интервью, т.к. в списке скиллов не было Ajax, но был JS и React.


  1. SiliconValleyHobo
    26.09.2018 20:59
    +4

    А в чем, собственно, проблема?
    Мне тоже доводится частенько собеседовать самых разных людей на позиции SE. Я вижу, чем люди занимались. Я знаю, чем им предстоит заниматься. На основе этого я прикидываю, о чем следует поговорить с человеком, чтобы понять _как_ он работал. У моего работодателя есть возможность выбирать между кандидатами, и будь я проклят, если я ей не воспользуюсь.
    Т.е. лучше я перестрахуюсь и не возьму пять отличных инженеров, чем случайно возьму одного. Знаете, как идеология гугловых собеседований — ни в коем случае не уменьшать планку уровня уже имеющихся разработчиков, потому что в итоге это приведет к деградации УровняТМ.

    Вернемся к тому, _как_ человек работал свои 5, 10, 15 лет стажа. У собеседовающих же нету информации по результатом внутреннего эвалюэйшена по сотруднику в каждом его месте работы. Он мог выполнять несложные задачи, которые давал ему лид, а мог драться и спорить по поводу целесообразности и того, как делать каждую задачу. Мог шлепать по одному и тому же принципу однотипные сайты/сервисы/приложения/etc. А мог постоянно изучать новые техники и подходы к проектированию, анализу и разработке. Мог использовать остальные компоненты системы (ОС, компилятор, соседние сервисы, либы) как блекбоксы, а мог ковыряться в кишках, понимать внутреннее устройство и под каким соусом эти компоненты лучше всего готовить.

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


    1. ganqqwerty
      26.09.2018 21:15
      +1

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


      1. SiliconValleyHobo
        26.09.2018 21:28
        +2

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

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

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


        1. catharsis
          26.09.2018 22:30

          Если не сошлись его вопросы и ваши ответы — значит вы друг другу не подходите, очень просто.

          Как-то дочитал "Как сдвинуть гору Фудзи" до задачи «как бы вы спроектировали интерфейс видеомагнитофона» — чуть-чуть понял, почему продукты Microsoft немного особенные.


  1. Dywar
    26.09.2018 21:01
    +1

    По статье +, но есть вопрос.

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


    Почему так?


    1. Dimezis
      26.09.2018 23:00
      +1

      Потому что как правило, это более гибко и лучше масштабируется.
      Об этом часто пишут в книгах, например Design Patterns


      1. Gemorroj
        26.09.2018 23:20
        +2

        Я уже наблюдаю другую крайность, когда некоторые "гении" полностью отказываются от наследования. Полностью! И кидают в тебя кучу интерфейсов, которые нужно реализовать.
        Как говорится, заставь дурака Богу молиться, он и лоб расшибет.


      1. Dywar
        27.09.2018 19:45

        Я в книгах наоборот это редко встречаю («ООАиП» Гради Буч, «ООАиП» Крег Ларман, «Принц. пат. и мет. г.р.» Роберт Мартин, «Чистая архитектура» Роберт Мартин). Выбор между наследованием, ассоциацией, композицей и агрегацией не всегда прост, если в предметной области не сильно разбираешься.

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

        Но в целом да, более гибко, по обстоятельствам короче.


      1. FYR
        27.09.2018 22:42
        +1

        Ой все эти "гибко и масштабируется" настолько сферический конь в вакууме. У меня на практике выходило так что хорошо спроектированный и написанный код никто масштабировать и гнуть не собирается. а когда таки придет время то там будет проще переписать. А почему? А потому что в хорошем коде уже все продумано и реализованно с учетом возможных изменений требований на ближайшую перспективу. и два там так напроектированно что только сеньеров туда пускать. а то первый джун превратит всю стройную архитектуру в кусок очень сложного навоза.
        И какая разница что пишут в книжках про паттерны проектирования. Мы тут сейчас комментируем претендента на должность сеньера. который забыл про virtual… Ну не верю я в это. можно забыть про что то редкое или необязательное. но виртуал я не зная языка скажу что это про наследование, динамический полиморфизм и позднее связывание речь идёт.


  1. artiom_n
    26.09.2018 21:08
    +1

    Мне кинули предложение — Senior full-stack .NET Developer, удаленно, крутой проект, куча денег. В списке требований хренова гора не связанных между собой вещей из мира .net и js/ts. Выглядит так, будто просто свалили в кучу все, что нагуглили за 10 минут — причем мало понимая, что именно.
    Тревожно, но ничего.

    Конец немного предсказуем:


    Ну привет. Я только что с собеса, и у меня бомбит. Сколько не пишут на Хабре, как правильно собеседовать — лучше не становится.

    Странно было ожидать чего-то другого...


  1. ganqqwerty
    26.09.2018 21:10
    +4

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

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


  1. MacIn
    26.09.2018 21:15
    +2

    Подход «при необходимости я найду это в справочнике» вполне допустим, но на практике есть какая-то грань разумности такого… нигилизма что ли. Не ответить про virtual — это за этой гранью кмк. Чисто субъективно, разумеется.


  1. nero_pro
    26.09.2018 21:30
    +2

    Хах…
    В этом месяце меня в Билайн собеседовали. Тоже была куча вопросов по синтаксису и ни одного программисткого вопроса. Я бы не смог оценить человека по таким вопросам-ответам за 10 минут. В Билайне смогли и отказали. Видимо из-за недостаточной квалификации :D

    PS 10+ лет опыта на тяжёлых проектах в основном зарубежом.


    1. Free_ze
      26.09.2018 21:35
      +1

      Может это был первичный собес?) Тот же яндекс любит устраивать по 2-3 технических интервью.


      1. Ipeacocks
        26.09.2018 22:15

        2-3 это вполне сносно. В некоторых компаниях по 5-6.


      1. nero_pro
        27.09.2018 06:52

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


        1. Free_ze
          27.09.2018 12:28

          Но зачем такое собеседование… — оно ведь не показательно.

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

          знает 'все' конструкции языка

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


          1. DelphiCowboy
            27.09.2018 14:00

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

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


            1. Free_ze
              27.09.2018 14:16

              Не могу ничего сказать про PL/1.

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

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


            1. ganqqwerty
              27.09.2018 14:24
              -1

              Дык по С++ то же самое, вряд ли сам Страуструп все конструкции помнит. Это я на момент 2010 года пишу, с тех пор, я слышал, еще больше всего появилось.


          1. Kirill_Dan
            27.09.2018 14:06

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


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

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


            1. Free_ze
              27.09.2018 14:24

              Спустя 10-15-20 лет у вас уже нет места в сосуде и чтобы туда залить что-то еще, оттуда должно вытечь что-то другое.

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

              Поэтому юные программисты умеют писать красивый код

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


              1. Kirill_Dan
                27.09.2018 14:41
                -1

                Спорим, что я угадаю ваш возраст? ))) Не многим более 20 лет. Угадал?

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

                Нет, дело не в нашем опыте, знаниях и уникальности. Все дело в цене!

                А у вас не возникал вопрос, кто же все таки все те люди, которые придумывают для крутого софта алгоритмы/подходы/идеи/паттерны и т.д.? И почему они все только на Западе. А еще очень интересно сколько лет этим людям? Вы учились по книгам и лекциям 18 летних парней или все же взрослых уже людей?

                Так в какой же момент вашего времени произошел перекос, когда вы можете утверждать, что знаете ЯП лучше, чем его создатель? Маркером будет какой показатель? То что вы помните какие-то конструкции, а он уже нет?

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


                1. Free_ze
                  27.09.2018 15:21
                  -1

                  Нет, вы ошиблись.

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

                  При чем здесь Запад и топ-менеджмент вообще? R&D-отделов крупных вендоров и в СНГ хватает, например.

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

                  Взрослых и умных, разумеется. Ценные знания формошлёпа с 15+ стажем я могу почитать только в заминусованном посте на хабре.

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

                  Дядьки эти, как правило, код не пишут, а руководят проектами и теми, кто пишет (теми самыми сеньорами-миддлами-джуниорами простопрограммистами).


                  1. Kirill_Dan
                    27.09.2018 15:42

                    Взрослых и умных, разумеется. Ценные знания формошлёпа с 15+ стажем я могу почитать только в заминусованном посте на хабре.


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


                    1. Free_ze
                      27.09.2018 15:53

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

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


                      1. Kirill_Dan
                        27.09.2018 16:28

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

                        Конечно может быть, как и инженер, как и архитектор, также как и врач и т.д.

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

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

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

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

                        И теперь вернемся к нашему времени. Молодые и талантливые дарования, которые считают, что образование/университеты/опыт взрослых людей все это полная шляпа и отстой, быстро изучают по «супер курсам» и роликам из Ютюб какой-то ЯП высокого уровня. Выпендриваются друг перед другом знанием классов/методов и т.д. тем самым пытаясь поднять свое ЧСВ. А как работает комп, что такое шина данных/управления и т.д. знать вообще никому на фиг не нужно. Не царское это дело. Можно взять какой-нибудь фреймворк/CMS и просто шлепать типовые задачи — УРА, профит!

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

                        Именно по этому толковый преподаватель в ВУЗе натянет на экзамене любое юное дарование, которое все знает и умеет.

                        И такая ситуация не только в ИТ. Она везде.

                        Именно по этому многие компании (часто Зарубежные) ищут разработчиков за 30-50 лет. Так как золотая молодежь, которая все знает и умеет, и которой насрать на бизнес заказчика, реально уже многих зае… ала.

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

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

                        Надеюсь, я смог развернуто ответить на ваш вопрос?


                        1. stul5tul
                          27.09.2018 16:36

                          20-30 лет назад программирование только зарождалось, и те кто в него приходили, делали это не из-за денег или престижа.

                          Да ты че?
                          Лет 25 назад мой преподаватель рассказывала о том, как именно программирование уже вовсю применялось на примере огромного завода, на котором она работала в 1970-х. То есть почти 50 лет назад. А один из старейших ныне еще применяемых языков программирования для бизнес-приложений, а вовсе не для научных целей — Cobol — был создан в 1959 году. Применяется до сих пор по той причине, что еще тогда были написаны горы программного кода.


                          1. Kirill_Dan
                            27.09.2018 16:41

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

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


                            1. stul5tul
                              27.09.2018 16:47

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


                              АвтоВАЗ

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


                              А что, в наше время, абсолютно все должно делаться в Виртуалии?
                              Очевидно, что такие предприятия ведут свою деятельность в реальном, а не виртуальном мире, что не может не радовать. Едим-то мы вполне материальные вещи.


                              1. Kirill_Dan
                                27.09.2018 16:49
                                +1

                                Мне уже плохо. Честное слово, при одном упоминание все поплыло перед глазами.


                                1. stul5tul
                                  27.09.2018 17:09

                                  Мне уже плохо. Честное слово, при одном упоминание все поплыло перед глазами


                                  Это сейчас. Все же полвека минуло.
                                  А на момент основания в 1966 году — АвтоВАЗ был вполне себе технологически совершенным, в том числе и по меркам всего мира. И ВЦ на АвтоВАЗе был весьма и весьма хорош.


                                  1. MacIn
                                    28.09.2018 01:19

                                    ВАЗ, не АвтоВАЗ. Хотя и АвтоВАЗ тоже, но по контексту, кмк имеется в виду именно завод, не ПО.
                                    А так да — например, некоторые мои преподаватели по ряду предметов в ВУЗе принимали непосредственное участие в роботизации ВАЗа, приводили конкретные примеры.
                                    Мой отец разрабатывал АИС для сервисных центров АвтоВАЗа в 80е.


                              1. Kirill_Dan
                                27.09.2018 17:09

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


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

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

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

                                В итоге, при последнем заказе при цементировании скважины, подаваемый в скважину цемент схватился раньше, чем успели произвести технологический процесс. Финансовая потеря составила 2 млн. долларов! Они этот косяк называю «словить козла». Начали искать виновного, чей это косяк, лаборатории, которая неправильный состав рассчитала, отдела инженеров, которые нарушили тех. процесс, производителя (у них свой завод по производству спец. цемента), который нарушил рецептуру. Кто виноват, так и не нашли. И в чем была проблема, тоже не выяснили. Просто попали на капусту.

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


                        1. Free_ze
                          27.09.2018 17:21

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


                          1. stul5tul
                            27.09.2018 17:40

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


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


                            1. Free_ze
                              27.09.2018 17:47

                              Сюрприз — люди работают ради денег.

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

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

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


                              1. stul5tul
                                28.09.2018 01:45

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


                                Это верно только с точки зрения индивидуума. Это не верно с точки зрения индустрии.

                                1) Чтобы думать о высоком нужны высокие доходы.

                                2) Если в индустрии высокие доходы туда ломится куча народа, которому нужны только деньги, а не высокое.


                                1. Free_ze
                                  28.09.2018 11:55

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


                        1. stul5tul
                          27.09.2018 18:22

                          20-30 лет назад программирование только зарождалось, и те кто в него приходили, делали это не из-за денег или престижа.


                          habr.com/company/ua-hosting/blog/413733
                          Из истории советских ПК

                          Уже не секрет, что в 1950 -70 годах СССР был одним из мировых лидеров в гонке под названием «разработка и производство компьютерной техники». Первые ЭВМ — МЭСМ, М-1, позднее известная БЭСМ-6 с быстродействием более 1 млн. операций с плавающей запятой в секунду, компактные ЭВМ серии МИР, и многие другие достижения великих умов в «компьютерной» сфере советских времен.
                          Технологии развивались очень быстро, а потому такие комментарии как «А я и не знал/а, что в Советском Союзе были компьютеры» или «Оказывается, советские компьютеры не были отстоем по сравнению с зарубежными» вызваны лишь банальным незнанием истории развития различных «компьютерных» технологий и вычислительных устройств в СССР. Многим известна истории создания ПК таких мировых зарубежных гигантов как Apple, IBM и т.д., так как информация о них на протяжении не одного десятилетия освещалась и была на слуху. Исторически сложилось мнение, что в СССР кроме того, что не было «секса», так еще и персональные компьютеры появились позже на лет 10 чем в той же Америке. Как и первое так и второе заявление — не более чем миф.

                          Первые советские интегральные микросхемы с несколькими десятками транзисторов, увидели свет уже в середине 1960 годов, а к середине 1970-х выпускались микропроцессоры, сложные микросхемы, количество транзисторов в них уже измерялось в тысячах. В 1974 году были разработаны первые микро-ЭВМ на основе универсальных микропроцессоров. Секционные процессоры серий К532 и К536 (появившиеся в том же году) позволяли выпускать машины с разрядностью до 16–32 бит. Так появились 16-разрядные микро-ЭВМ. В 1977 году был выпущен аналог Intel 8080 — 8-разрядный процессор К580ИК80. Он то и стал основой для создания целого ряда моделей ПК и микро-ЭВМ. Через два года был разработан первый в мире 16-разрядный однокристальный микро-ЭВМ — К1801ВЕ1. На базе К1801ВЕ1 в 1981 создан К1801ВМ (однокристальный 16-разрядный микропроцессор), система команд которого была похожа на систему команд мини-ЭВМ PDP-11.


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

                          И если СССР в 50-70 годы прошлого века изготавливал компьютеры, то еще лет 60 назад программисты уже были?


                          1. Kirill_Dan
                            27.09.2018 18:42

                            Конечно были! Мало того, они уже в 50-ые сидели на хабре и друг в друга кидали помидорами, у кого комп больше или код длиннее )))


                            1. stul5tul
                              27.09.2018 18:47

                              Конечно были! Мало того, они уже в 50-ые сидели на хабре и друг в друга кидали помидорами, у кого комп больше или код длиннее )))

                              Ну положим, в 50-е они все больше лично друг с другом общались.
                              Потом да, перешло на удаленку — еще до эпохи интернета, срачи уже были — были и BBS и Фидо.


                              1. Kirill_Dan
                                27.09.2018 18:49

                                Фидо помню, на юс роботикс 33600. Эх, золотые времена
                                )) Счета за телефон приходили безбожные.


                1. u010602
                  27.09.2018 15:37

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


              1. stul5tul
                27.09.2018 16:28

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

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


                1. Free_ze
                  27.09.2018 17:24

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


                  1. stul5tul
                    27.09.2018 17:45

                    Еще раз:
                    я этого и не знал никогда. Могу догадаться из контекста вопроса или посмотреть в Гугле.

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


                    1. Free_ze
                      27.09.2018 17:52

                      Ничуть не мешает программировать и на качество кода не влияет

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

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

                      Если вы не из именитого мирового вуза, то вообще не удивили)
                      Не потому, что вы, а потому что мотивация людей идти в вузы.


                      1. stul5tul
                        27.09.2018 18:08

                        Чтение литературы… происходит легче, когда есть некоторый общий свод терминов-профессионализмов.

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

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

                        Гораздо больше терминов из конкретной предметной области.
                        А вышеупомянутый singleton, ага… прямо представляю как на meeting мы обсуждаем проблему на уровне singleton да замыканий… ну да, конечно.
                        даже при общении с джунами это не используется.
                        только что при написании статей об основах программирования или при code review начинающего trainee этот термин и будет использован.


                        1. Free_ze
                          27.09.2018 18:15

                          сеньор может уже забыть

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

                          мы обсуждаем проблему на уровне singleton да замыканий…

                          Паттерны — это архитектура, вы ее не обсуждаете?
                          Потом вам дадут джуниора и… пойдет язык узкоспециализированных «хреновинок» и «фиговинок» (=


                          1. stul5tul
                            27.09.2018 18:42

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


                            В мире, в том числе и в ИТ, есть много интересного помимо этого.

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

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

                            Паттерны — это архитектура, вы ее не обсуждаете? Потом вам дадут джуниора и… пойдет язык узкоспециализированных «хреновинок» и «фиговинок» (=


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

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


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


                            1. Free_ze
                              27.09.2018 18:54

                              Повторять азбуку — смысла не вижу.

                              Если буквы забываются, то вряд ли будет лишним.

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

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

                              В понятиях низкого уровня типа синглтонов???

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


                              1. stul5tul
                                27.09.2018 19:14

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


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

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

                                Последний раз про конкретную технологию (даже не про паттерн, а про тип СУБД, знаком я или нет с ней) меня спрашивали на собеседовании лет 20 назад.

                                С тех пор на собеседованиях у меня интересовались только тем, могу ли я решить ту или иную конечную задачу, создать определенный конечный продукт, как я предполагаю это сделать (архитектура). А вовсе не то, что называется словом virtual, словом static или словом singleton.

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


                                Повторяю еще и еще раз:

                                Понятие — да.
                                Название — нет.

                                Я не буду давать джуну задание «напиши синглтон».
                                Задание будет звучать примерно так (возможны вариации, в зависимости от контекста задачи): «все API этой фичи нужно реализовать в одном классе»


                                1. Free_ze
                                  27.09.2018 19:34

                                  Если собеседуясь «на сеньора» вы получаете такие вот вопросы

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

                                  Последний раз про конкретную технологию… меня спрашивали ...

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

                                  Понятие — да.
                                  Название — нет.

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

                                  Я не буду давать джуну задание «напиши синглтон».

                                  Вы вполне могли бы сказать на планнинге: «Когда будешь лезть в тот модуль, там поднимается сервис-синглтон XXX, это фасад к жесткому легаси YYY, нужно добавить в него поддержку ZZZ». На треш-языке «понятий» этот текст раздулся бы в несколько раз, как минимум.


                                  1. stul5tul
                                    27.09.2018 20:14

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


                                    1) Экономия моего и его времени.

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

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

                                    Работающий после ВУЗа 10 лет в МакДаки — собьётся на мелких деталях «якобы реализованных им проектов» в течение 1-2 минут.

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


                                    То есть «этого не может быть просто потому что этого не может быть»?

                                    В Twitter`e несколько лет назад был каминг-аут опытных разработчиков (там отметились и разработчики из Гугля, автор Rails (тот, что для Ruby) и пр. ребята с опытом), которые признавались, что не смогут пройти собеседование, если их будут спрашивать о простейших вещах (там есть конкретные примеры что именно). Была целая статья на Хабре, может, кто вспомнит и даст ссылку.

                                    Речь об общении с другими программистами. Знание понятий вас не освобождает от необходимости обмениваться своими концепциями с другими людьми.


                                    Я уже ответил на это и привел пример как можно простыми словами донести суть.

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

                                    Вы вполне могли бы сказать на планнинге: «Когда будешь лезть в тот модуль, там поднимается сервис-синглтон XXX, это фасад к жесткому легаси YYY, нужно добавить в него поддержку ZZZ». На треш-языке «понятий» этот текст раздулся бы в несколько раз, как минимум.


                                    Не забывайте про цели.

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

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


                                    1. Free_ze
                                      27.09.2018 21:20

                                      1) Экономия моего и его времени.

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

                                      спец он может быть и хороший, но уже забыть как называются базовые понятия

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

                                      В Twitter`e несколько лет назад был каминг-аут опытных разработчиков (там отметились и разработчики из Гугля, автор Rails (тот, что для Ruby) и пр. ребята с опытом)

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

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

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

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

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


                                      1. stul5tul
                                        28.09.2018 00:27

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

                                        Назвали???

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

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

                                        Да я свои пароли только тактильно помню — могу набрать их на клавиатуре вслепую, но не могу ни записать на бумаге ни произнести вслух.


                                        1. Free_ze
                                          28.09.2018 10:45

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

                                          Ассоциации рушатся и память стремительно деградирует?

                                          Это как в начале изучения иностранного языка

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

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

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


                                          1. stul5tul
                                            28.09.2018 11:11

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


                                            Простота языка программирования по сравнению с естественными языками позволяет автоматизму использования выработаться еще быстрее.

                                            Зачем мне знать, что замыкание называется именно замыканием? Я его использовал еще за 20 лет до того, как узнал как оно называется.


                                            1. ApeCoder
                                              28.09.2018 11:33

                                              Зачем мне знать, что замыкание называется именно замыканием?

                                              Чтобы эффективно общаться с другими.


                                              1. stul5tul
                                                28.09.2018 12:17
                                                +1

                                                Зачем мне знать, что замыкание называется именно замыканием?

                                                Чтобы эффективно общаться с другими.


                                                Пописывать статейки или преподавать — да. В реальной работе — нет.

                                                Не представляю чтобы на meeting мы обсуждали проект на уровне — «тут нужно замыкание».


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

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


                                                1. Free_ze
                                                  28.09.2018 12:29

                                                  Оно даже миддла уже никак не характеризует.

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


                                                  1. stul5tul
                                                    28.09.2018 13:11

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


                                                    Бухгалтеру или кассиру вообще запрещено считать в уме. Обязательным является использование калькулятора.

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


                                      1. stul5tul
                                        28.09.2018 01:03
                                        +1

                                        1) Экономия моего и его времени.

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

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

                                        Серьезно, я даже джунов на собеседовании никогда не гонял на базовые знаний по virtual, static и singleton.

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

                                        Джунам давал задачу спроектировать в РСУБД модель.

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

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

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

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

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

                                        А вот то как человек понимает, к примеру, потенциальные узкие места в программе — что тормозит чаще всего именно ввод-вывод и т.п… — это реально полезные знания «софтверного инженера».


                                        1. Neikist
                                          28.09.2018 07:53

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


                                        1. Free_ze
                                          28.09.2018 10:58

                                          Труда не составит, но незачем.

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


                                          1. stul5tul
                                            28.09.2018 11:37

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


                                            Не может.
                                            Я выше расписал свою методу собеседования:

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

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

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

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


                                            1. Free_ze
                                              28.09.2018 12:01

                                              Я выше расписал свою методу собеседования: Беседа о реальных проектах.

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

                                              Ведь мы тут читали мнение только одной стороны, в реальности все может быть немного иначе…


                                              1. stul5tul
                                                28.09.2018 12:29

                                                А если это хитрый засранец, то вы его минут 20 будете выводить на чистую воду

                                                Возможно вы правы, возможно первые подозрения у меня возникнут аж через целых 2 минуты.

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

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


                                      1. michael_vostrikov
                                        28.09.2018 07:18

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

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


                                        1. Free_ze
                                          28.09.2018 11:00
                                          +2

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


                                          1. stul5tul
                                            28.09.2018 11:42
                                            -2

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


                                            Это показывает, что человек не преподаватель только и всего.

                                            Скорее как раз, что терминология «от зубов отскакивает» и есть необходимое (не достаточное) условие хорошего чистого теоретика.

                                            Архитекторы программных систем, не являющиеся программистами? Это фантастика. Такие вообще существуют? Сколько таких видели?


                                            1. Free_ze
                                              28.09.2018 12:08

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

                                              Архитекторы программных систем, не являющиеся программистами? Это фантастика. Такие вообще существуют? Сколько таких видели?

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


                                              1. stul5tul
                                                28.09.2018 12:34

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


                                                Кто то говорит про «забыть значение»?
                                                Перечитайте статью, перечитайте комментарии — везде написано про «забыть термин, забыть название».

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

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

                                                Но так не бывает — отобрать хорошего кандидата, это большой труд. Это именно что собеседование. От слова «беседа».


                                                1. Free_ze
                                                  28.09.2018 12:38

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

                                                  Перечитал статью. ТСу назвали термин, он не смог рассказать о его значении.


                                              1. stul5tul
                                                28.09.2018 12:40

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


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

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

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

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


                                                1. Free_ze
                                                  28.09.2018 12:54

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


                                          1. michael_vostrikov
                                            28.09.2018 13:10

                                            Вы в курсе, что человек мыслит образами, а не словами? Именно поэтому чтобы читать документацию на английском не надо заново учиться программированию. Выражения "цикл for" или "for loop" связаны с одним образом. У человека есть понятие N, которое по-разному называется на разных языках.


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


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


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


                            1. fatronix
                              27.09.2018 19:03

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


                              1. stul5tul
                                27.09.2018 19:24

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


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

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

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


                                1. Free_ze
                                  27.09.2018 19:35

                                  У вас нет системного архитектора в конторе?


                                  1. stul5tul
                                    27.09.2018 20:20

                                    У вас нет системного архитектора в конторе?

                                    Я и есть.

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


                                    1. Free_ze
                                      27.09.2018 21:21

                                      Но вы не пишите код, верно?


                                      1. stul5tul
                                        28.09.2018 00:37

                                        Но вы не пишите код, верно?


                                        Пишу. Мне это нравится.

                                        Даже основывал 4 фирмы (2 с партнерами, 2 сам). Но когда доходит до того, что нужно менеджером быть, а не разработчиком — завязывал. Не нравится мне это — не писать код лично.

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

                                        Нет, это не так.

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

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

                                        У меня на придумки по архитектуре уходит процентов 10-40 рабочего времени в неделю.


                                        1. Free_ze
                                          28.09.2018 11:29

                                          Мне просто интересно, у кого как устроено, без намеков) Спасибо


                    1. fatronix
                      27.09.2018 18:02

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


                  1. 0xd34df00d
                    27.09.2018 18:16

                    А я уже давно мечтаю в ответ рассказать про это. Но мне такой вопрос не задают :(


                1. MacIn
                  28.09.2018 01:25

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


  1. pankraty
    26.09.2018 21:46
    +1

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


    1. 0xd34df00d
      27.09.2018 00:24
      +1

      Structural и nominal typing.

      Structural — это когда тип определяется исключительно содержимым. `{x:Int, y:Int}` — это и есть тип. `{x:Int, y:Int, z:Int}` — его субтип всегда, в любых условиях. Из недостатков — сложности с рантайм-проверками типов, более тормозной тайпчекинг, ну и отношения сабтайпинга задаёте не вы, поэтому могут случайно оказаться связанными два семантически несвязанных типа.

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


      1. pankraty
        27.09.2018 07:10

        Спасибо! Знаю теперь, какой вопрос на следующем собеседовании задать Не был знаком с такой терминологией.

        Недавно у меня был характерный случай, когда Nominal typing проявил свои отрицательные качества. Суть: есть два класса, определенные во внешней библиотеке, имеющие одинаковую семантику, одинаковые поля (по крайней мере, в той части, которая меня интересовала), даже называются одинаково, но находятся в разных пространствах имен. И мне нужно конвертировать сущности любого их этих классов в мой собственный класс и обратно, по возможности с минимумом дублирования кода. Интерфейса общего нет, предка общего нет, копипасту плодить очень не хочется… Выручил как раз подход в стиле Structural typing — метод принимает dynamic и обращается к нужным свойствам, выполняет конвертацию. Чтобы не выстрелить себе в ногу, методы с dynamic-ами сделал приватными, а публичными сделал обертки со строгой типизацией.


      1. Druu
        27.09.2018 08:38

        {x:Int, y:Int}— это и есть тип.{x:Int, y:Int, z:Int}` — его субтип всегда, в любых условиях. Из недостатков — сложности с рантайм-проверками типов, более тормозной тайпчекинг, ну и отношения сабтайпинга задаёте не вы, поэтому могут случайно оказаться связанными два семантически несвязанных типа.

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


        Nominal

        Я из контекста понял, что под "мнемонической" подразумевалось nominal, но это правда где-то есть такой перевод?


        1. ApeCoder
          27.09.2018 10:34

          Гугл не находит «мнемоническая типизация» наверное автор описался


        1. 0xd34df00d
          27.09.2018 17:18

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

          Ну, это и в номинал тайпинге есть.


          А вот что я точно забыл — гемор с созданием рекурсивных типов.


          Я из контекста понял, что под «мнемонической» подразумевалось nominal, но это правда где-то есть такой перевод?

          Не, я тоже вывел.


          1. Druu
            28.09.2018 03:44

            Ну, это и в номинал тайпинге есть.

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


      1. ApeCoder
        27.09.2018 10:38

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


  1. WondeRu
    26.09.2018 21:59
    +3

    Ну, у всех такие собеседования были, и у меня. Не расстраивайтесь. У меня был период, когда нужно было каждую неделю нанимать. Пришлось сделать опросник по темам c#, sql, english, ООП и др. Когда человек запинался на первом блоке вопросов, то переходили сразу на другой. Из-за огромного потока людей, видимо, часть собеседуемых воспринимало наши вопросы как академические. Ну, не всегда есть возможность «поговорить по душам».


    1. boblenin
      27.09.2018 04:31

      А вот как вы думаете верно ли то, что решение брать или не брать принимается в первые 10-15 минут, а дальше идет обдумывание как бы это обосновать?


      1. San_tit
        27.09.2018 11:30

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


  1. jahr
    26.09.2018 22:33
    +6

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

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

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

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


    1. jaman
      28.09.2018 00:50

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

      В точку!


    1. ApeCoder
      28.09.2018 09:04

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

      Дам ему проверить. Почему надо на это оскорбляться?


    1. alexdevyatov
      28.09.2018 10:24

      Особенность не культурная, а экономическая. На западе и близко нет такого хайпа по IT, как в СНГ (потому что «там платят кучубабла») — отсюда и самозванцев меньше.


    1. balexa
      28.09.2018 10:32

      проверить, не карманник ли Вы, на том основании, что его недавно обокрали?

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

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

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

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

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

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

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


  1. Atreides07
    26.09.2018 22:49
    +3

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


  1. degs
    26.09.2018 22:52

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


  1. tangro
    26.09.2018 23:15
    -1

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


    1. balexa
      27.09.2018 10:21

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


      1. tangro
        27.09.2018 13:33

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


  1. BalinTomsk
    26.09.2018 23:52
    +1

    ---Убей не помню.

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

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

    По крайней мере в Bloomberg меня об этом спрашивали и я знаю зачем это нужно.


    1. Nomad1
      27.09.2018 00:51
      +2

      Я тоже так сразу и подумал, но судя по стилю текста, общим описаниям и т.д. автор вполне адекватен, значит дело в чем-то другом, включая банальный ступор или интерференцию синтаксиса языков. Нормально, если человек не знает синтаксис fixed или unchecked, но не знать virtual он не может, скорее просто забыл в мандраже слово или не понял вопрос. И вполне он может знать и про работу vtbl, просто надо сбавить обороты и разобраться, что происходит. В этом и посыл статьи. Гораздо легче сразу завернуть кандидата, чем подумать.


      1. cooltonbek
        27.09.2018 00:57

        Поддерживаю ваш посыл.


  1. Methos
    27.09.2018 00:30
    +2

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


    Всё написано вами правильно, и мысли в точности как мои, написанные 2 года назад =)


  1. Kirill_Dan
    27.09.2018 00:37
    +2

    Знакомая до боли ситуация. У меня есть статья в которой я описывал быстрый рост компании изнутри: cleverman.org/post/problemy-pri-roste-it-kompanii Из нее станет понятно, что в таких «Динамично развивающихся молодых компаниях» очень часто тимлидами или руководителями проекта являются джуны с новыми лычками. Которые, естественно, на собеседовании спрашивают то, что сами только вчера вычитали в справочнике. Это ведь классика.


    1. boblenin
      27.09.2018 04:26

      Ум и опыт не одно и то же. Отсутствие опыта иногда можно компенсировать умом, отсутствие ума опытом — никак.


  1. archi_sova
    27.09.2018 00:39
    -1

    Один мой очень хороший знакомый и отчасти мой наставник сказал мне такую вещь: — К разработчикам уже давно относятся как к ремесленникам!
    Я так не считаю, Бог не тот кто управляет. Бог то — кто пишет код.
    Я полностью согласен с автором и целиком разделяю его переживания.
    Но переживать не стоит, пока не сменится идеология подхода в разработке ПО в целом по РФ.


  1. algotrader2013
    27.09.2018 00:43
    +1

    Думать и предвидеть — вот хороший скилл.

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


    1. Kirill_Dan
      27.09.2018 01:55
      +2

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

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


      1. boblenin
        27.09.2018 04:21

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


  1. Zet_Roy
    27.09.2018 01:57
    +2

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


    1. boblenin
      27.09.2018 07:15

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


      1. Zet_Roy
        27.09.2018 12:41
        -1

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


  1. Habra_nik
    27.09.2018 02:05

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


    1. Berkof
      27.09.2018 05:23

      Кстати — прохождение собеседований это самая высокооплачиваемая работа, так что делайте её с удовольствием, она ещё принесёт вам денежку и комфорт 8)


  1. PavelAkhmetov
    27.09.2018 03:09

    До вопроса, что такое SOLID дошли? :)


  1. boblenin
    27.09.2018 04:16

    Собеседование в обе стороны идет. Подумайте хотели бы вы с этим топищем каждый день в одном офисе и на одних и тех же проектах работать?


  1. PashaNedved
    27.09.2018 04:42

    А вы удивляетесь, почему js настолько популярен? Вот он ответ — «Senior full-stack .NET Developer» забыл что такое virtual.

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

    «стараюсь избегать» следует понимать, как «не использую совсем»?


    1. boblenin
      27.09.2018 06:45

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


      1. PashaNedved
        27.09.2018 13:44

        Когда явно прослеживается связь «is-a»


        1. boblenin
          27.09.2018 15:00

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


          1. PashaNedved
            27.09.2018 17:34

            Ну в книжке я тоже прочесть мог бы

            А без книжки? :) Ну да, я загуглил по быстрому «is-a наследование», чтобы лишний раз убедиться, что ничего не путаю. Но я это знал и не забывал.
            Был у вас в реальной жизни такой пример?

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

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


            1. boblenin
              27.09.2018 18:32

              > Но я это знал и не забывал.

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

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

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

              > «а, что если?»

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


              1. PashaNedved
                27.09.2018 19:41
                -1

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

                Зубрить не обязательно, но теорию знать нужно, чтобы при решении задач не основываться на субъективном опыте. Как вы себе представляете специалиста по ai, big data и другим модным словам? 2 варианта:
                Он знает теорию, или вся его карьера строилась и продолжает строиться на методе научного тыка.
                Вот так поддаешься на умные речи «сеньоров» и периодически смотришь на проделанную им работу за 2-3 месяца — всё чистенько, красиво. Через 2 года обращаешь внимание на код приложения целиком и осознаешь, что это полная жопа (по другому выразиться нельзя): новых фич практически нет, объем кода увеличился в десятки раз, одни и те же задачи решены по нескольку раз, нижние слои абстракции уже никто не использует 100 лет. Спрашиваешь у «сеньора», что за ерунда, а в ответ «вы ничего не понимаете, иначе невозможно. И вообще я рок звезда, без меня вы ничего не сможете». Вот такие сеньоры без теории.


                1. boblenin
                  27.09.2018 19:55
                  +1

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


                  1. PashaNedved
                    27.09.2018 20:38

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


              1. PashaNedved
                27.09.2018 20:24

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

                Автоматом я называл саму слот-машину, прошу прощения — я вас запутал.
                Визуально представьте простую слот-машину. Кидаешь деньги, нажимаешь на кнопку и на экране начинают крутиться 3 колеса (их я называю барабанами). В базовой слот-машине визуально 3 барабана, в коде SlotMachine — это 1 барабан, который крутится 3 раза. Код WildCherry содержит 3 барабана, которые крутятся по 1 разу.
                Код простой (2 класса, не считая хелперы, структуры, тесты), WildCherry расширяет SlotMachine, добавляет метод bet и переопределяет метод run.


                1. boblenin
                  27.09.2018 20:34

                  И SlotMachine не является интерфейсом?


                  1. PashaNedved
                    27.09.2018 20:43

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


  1. Berkof
    27.09.2018 05:16

    Да не принимай ты это так близко к сердцу… Я вот наоборот если и столкнусь где с такой фигнёй на собесе — дико радуюсь, что эта фигня всплыла именно на собесе, а не позже, когда уже подписал НДА, записал в трудовую и т.д. и т.п.
    Сам сейчас провожу собеседования время от времени и честно теряюсь — а что у людей то спрашивать? Опять про HashMap? Так ведь половина и этого не знает, сложности алгоритмов, синхронизацию… Был бы рад толковой шпаргалке «как проводить собеседования», можно даже сайт сделать с 100500 вопросов по каждой теме, с голосовалками за вопросы «хороший/полезный или пыль»…
    Ну т.е. харе писать как вас плохо отсобесили, давайте писать «как надо собесить».


    1. boblenin
      27.09.2018 07:02

      Я когда провожу собеседования всегда иду по одному и тому же шаблону:

      1) Расскажи о последнем или о любом, на выбор кандидата, проекте. Что, зачем, для кого, какой итог (штатовская аббревиатура CAR Context Action Result)? (работал работу на работе за зарплату — не катит)

      2) Что конкретно ТЫ на нем делал? Затрудняешься — тогда расскажи про любой рабочий день вот ты пришел во сколько-то и что дальше было до конца дня? (очень много тех кого научили говорить «мы»)

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

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

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

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


    1. FYR
      27.09.2018 10:21

      Что? Какие HashMap и сложность?
      У меня на собеседовании первый вопрос: есть список std:list data любым способом удалить из него элементы с четным значением.
      С тем, кто хотя бы попытается написать цикл с итератором уже можно пробовать говорить на должность С++ разраба. Увы на это только 10% отвечают...

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


      1. boblenin
        27.09.2018 19:57

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


        1. Free_ze
          27.09.2018 21:24

          Список не может быть массивом?


        1. FYR
          27.09.2018 21:28

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


  1. AndreyGaskov
    27.09.2018 06:21

    Бывает. Не стоит расстраиваться. Но считаю, что вы сделали неправильный вывод из ситуации:

    теперь, пока за мной не будет стоять мой код, на собес я не пойду

    Такой подход очень сильно ограничивает вас.
    На мой взгляд правильный вывод должен быть другой. Да, собеседование зачастую — это дурацкая игра. Поэтому и готовиться надо как к игре. За неделю до собеседование погуглите «top c# interview questions» (или какие другие технологии вы используете). Зазубрите ответы на бессмысленные вопросы, типа, сколько поколений в сборщике мусора, список из 10 отличий структуры от класса, расшифровки аббревиатур (SOLID, например), 3 главных слова про ООП, разновидности полиморфизма и т.д. Это никак не изменит ваши реальные качества как разработчика, только в глазах собеседующего. Разве что где ещё сможете блеснуть фразой: «это же ad hoc полиморфизм/утиная типизация!».
    И ещё интересный момент на собеседованиях — это задачки. Иногда знакомые рассказывают, какие задачки они задают зачастую в весьма посредственные компании. Я в них довольно неплох, но понимаю, что с нуля за час даже в спокойной обстановке дома решение не осилю. Знакомые утверждают, что таким образом они проверяют умение мыслить. Но почему-то не понимают, что лучше всего умение мыслить продемонстрирует человек, который уже эту задачку заранее знает. Поэтому на собеседовании надо играть. Даже если вы знаете ответ и решение, сделайте вид, что усиленно думаете, задавайте больше уточняющих вопросов, спрашивайте, что лучше оптимизировать (использование памяти или сложность, а может и размер кода).
    И ещё. Не навешивайте ярлыки сразу. А в конце собеседования, если ярлык всё-таки прилип, осознайте, что с пафосными напыщенными идиотами лучше не работать. К счастью рынок труда сейчас это позволяет.


  1. sbh
    27.09.2018 07:17

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


  1. Elmot
    27.09.2018 08:22

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


  1. pesh1983
    27.09.2018 09:06

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


    1. Neikist
      27.09.2018 09:36

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


  1. ololoepepe
    27.09.2018 09:41

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


    1. Neikist
      27.09.2018 09:46

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


    1. Ogra
      27.09.2018 10:15

      Это GPU Gems нет необходимости знать. А вот паттерны проектирования и их названия для ООП-разработчика знать совершенно необходимо. Именно для указанного же вами взаимодействия с командой: чтобы один разработчик мог сказать другому "Я применил здесь ФабричныйМетод", и и все было понятно.


      1. ololoepepe
        27.09.2018 13:56

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


    1. aknew
      27.09.2018 14:40

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


  1. vitektm
    27.09.2018 10:16

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

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

    На вакансия может реально откликнуться несколько человек, и кто-то может показаться работодателю лучше, и он сделает выбор в его пользу, и то что вас не выбрали, не означает автоматом, что вас собеседовал ******(Ваше слово)! Человек идет на собеседование, как правило с целью его пройти, а не для пополнения списка числа своих собеседований.
    И тут нужно «ПОКАЗАТЬСЯ» лучше других. И зная что на собеседованиях бывают теоретические вопросы, можно эту теорию и освежись, ведь это поможет выполнению цели (цели пройти собеседование). Если что-то считаете оправданным для достижения цели, то делайте это.


  1. WinPooh73
    27.09.2018 10:19

    Код сортировки пузырьковой
    Он разобрать не смог с листа.
    Ему давали в детстве мало
    Кнута.


  1. huginn
    27.09.2018 11:28

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

    Чтобы разговоров не было — начинал разработчиком в 1991 году, начинал с pl/1 и rexx, в 97 году работал под solaris/sun os (ingres, tcl/tk) закончил разработчиком в районе 2008 года (delphi), решив, что асучник/системный администратор/ремонтник спокойнее, ликвиднее и легче.


  1. ShaltaiBoltai
    27.09.2018 11:28

    Но снижая риск найма самозванцев, компании снижают шанс найма хороших разработчиков.

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


  1. Hlaford
    27.09.2018 11:29

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

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

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


    1. baragol
      27.09.2018 11:41

      Так он и развивает


    1. DelphiCowboy
      27.09.2018 11:48

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

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


      1. Hlaford
        27.09.2018 12:18

        Другого пути нет. Ну, он есть — он описан автором статьи. И «бухать» — это не о нетворкинге. Это вы что-то путаете.


  1. g0ttfried
    27.09.2018 11:29

    По мне так всё равно странно что вы не вспомнили virtual. Это как забыть зачем нужен for.
    Но я согласен, вопросы совершенно тупые и не к месту.)


  1. Jlovenpk1
    27.09.2018 11:29

    А почему ты вопросы не задавал?
    Зачем ждал вопросы?)
    Ахахах :)


  1. modestguy
    27.09.2018 12:02

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


  1. dedotmoroz
    27.09.2018 12:04

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


    1. markmariner
      27.09.2018 12:35

      Нафига такой тимлид?


  1. achekalin
    27.09.2018 12:34

    Странно, что разговор (по рассказу) был, как игра в морской бой: "А1 — Мимо вопрос1 — ответил! — вопрос2 — ответил! -вопрос3 — не ответил — То то ж!"

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

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

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


    1. Druu
      27.09.2018 13:18

      но тогда вам надо было разговор переводить в другую плоскость:

      Надо было самому начать задавать вопросы. "У вас тут в описании вакансии написано, что требуется технология Х, но она же не входит в основной стек? откуда взялось это требование? зачем именно нужно Х? В каком контексте мне придется работать с Х? Ах, в контексте Y? Ну тогда у меня есть релевантный опыт вида Z, перейдем к следующему требованию...".
      А игра в одни ворота заведомо проигрышная, в конце концов соискателю тоже нужно узнать, с чем и как он работать будет, и с его точки зрения все эти вопросы про виртуал — трата времени.


  1. markmariner
    27.09.2018 12:34

    Приведу цитату известного физика Ричарда Фейнмана из его книги. Он записался на курс для выпускников по биологии и подготовил доклад:

    «Когда пришло время делать доклад по этому предмету, я для начала изобразил очертание кошки и принялся называть различные мускулы.
    Другие студенты в аудитории перебили меня: «Мы знаем все это!»
    — О, вы знаете? Тогда не удивительно, что я могу догнать вас так быстро после четырех лет занятий биологией. — Они тратили все свое время на запоминание ерунды вроде этой, когда это можно было бы посмотреть за 15 минут. »


  1. stranger777
    27.09.2018 13:11

    Мне вот, честно говоря, не совсем понятно, почему замыкание называется замыканием. Нет, оно понятно, что это функция и всё, что в неё замкнуто, т.е. LexicalEnvironment в случае js, но, действительно, в названии нет зацепок, чтобы быстро вспомнить, что речь идёт о функции, а не о чём-то другом. Поэтому нечаянно можно и забыть термин, прекрасно при этом помня его суть. Иное название помогло бы избежать такого.
    Но мне также не совсем понятно, как можно было забыть суть ключевого слова virtual, простейшая зацепка — виртуальная реальность, замещение реальности. То есть виртуальный метод — замещаемый. И вообще, когда говорят virtual, имеют в виду всякого рода замещение. И до этого можно догадаться, будучи знакомым с программированием только поверхностно. И из этого вспомнить суть кейворда.
    Поэтому да, на месте HR я бы подумал, стоит ли брать человека, который не то, чтобы не помнит, а не смог сообразить. Соответственно, не сообразивший человек с большой вероятностью будет гуглить там, где не надо, и с языками (естественными) у него не очень, то есть именно что — есть основания полагать, что перед HR — самозванец.
    Другая история была бы, я думаю, если бы Вы начали думать вслух и, конечно, по ходу всё-таки сообразили бы, как тот вышеупомянутый профессор. Мастерство ведь не пропьёшь, Вы умный человек, это ясно видно по тексту. И вот это был бы блеск. С точки зрения HR, как и любого другого человека.
    Вы просто растерялись. Бывает. Именно что переволновались перед собесом. Вакансия понравилась. И по этой же причине бомбануло…


  1. amarao
    27.09.2018 13:18
    +1

    JFYI, В собеседовании проверяются не только навыки. Если тимлид собеседует человека в команду, то он проверяет, сойдутся они характерами, или нет.

    Soft skills определяет результат работы иногда больше, чем навык программирования. Особенно, если это команда, и код пишут вместе.


  1. ALexhha
    27.09.2018 13:26

    Даже и не знаю, отчасти согласен с автором, а отчасти нет. Из личного опыта проведения собеседований у меня сложился другой опыт. Проводил собеседования системных администраторов/devops. Возможно у программистов совсем другое дело, тут ничего не могу сказать. И я всегда задавал базовые вопросы, для разминки что ли и для понимания кругозора кандидата.

    Например — что такое ДНС/как она (служба) работает/можете подробно описать резолвинг имени www.example.com/можете описать как происходит загрузка linux от момента нажатия кнопки питания до момента… И вы не поверите, 90% сеньоров не могли ответить. А некоторые с большим возмущением начинали говорить — а что это за вопросы и зачем мне это знать? Если что я загуглю за 5 минут.

    С одной стороны в чем то они правы, а с другой — если ты сеньор и у тебя 10+ опыта работы, как ты можешь не знать и не уметь объяснить работу ДНС? Для меня это загадка.

    Естественно я никогда не прекращал собеседования, если кандидат не знал или не мог ответить, но осадок оставался. Но если я видел, что человек просто волнуется и у него вылетело из головы, у самого тоже бывало такое, особенно когда проходил собеседования на англ-ком языке с иностранными заказчиками, то всегда задавал наводящие вопросы или небольшие подсказки. Если человек реально знал, но просто забыл, то как правило это помогало. Были конечно исключения, когда человек не знал, но благодаря подсказкам выстраивал правильные предположения, но это исключение из правил. Всего один или два человека попались таких из ~40.

    И если в итоге было два более менее равных кандидата, но первый условно смог объяснить работу ДНС, то я рекомендовал первого.


  1. AxeLWeaver
    27.09.2018 13:32

    Блин, читаю начало и аж слеза наворачивается…
    Тоже «вальнули» на virtual однажды…
    И такие собеседования 9 из 10, такое ощущение, что ты пришёл на экзамен в университете…


  1. serkoviv
    27.09.2018 13:32

    Сам провожу собеседования регулярно и прохожу тоже. Я боюсь самозванцев, когда приходит человек с лычкой Senior то я ожидаю что него есть некий теоретический бэкграунд. я не говорю что он должен знать все фреймфорки и т.д., но понимать что такое многопоточное программирование и понимать SQL он должен. а много приходило людей которые не понимают этого. и на простой вопрос зачем having они не отвечали.


  1. n0n4m3r
    27.09.2018 13:32

    Может быть я не прав, но в рамках этого интервью разве нельзя было «уточнить» у интервьюера, что такое «Virtual» и объяснить ему причины, по которым для вас этот термин не так важен, даже в рамках этого интервью?
    Никого не оправдывая, но если этот человек, пусть и раздутый, но, возможно, заинтересованный — понял бы, что вы не от того, что «самозванец» не знаете, а от того, что вы используете совершенно другой подход в решении задачи?


  1. ci4rovik
    27.09.2018 13:32

    По мне так тут следующая ситуация:
    Собеседование должно было носить формальный характер(поэтому назначили человека слабо разбирающегося в вопросе, возможно сынка боса), например висит вакансия, но руководство не совсем понимает нужна ли она им. Но на всякий случай (а вдруг попадётся суперспециалист), вакансию мониторят и собеседуют.
    А что касается программирования: Если собрать всю доступную на данный момент информацию по программированию и разным описанным подходам и приёмам то получиться большой файл. Этот файл нужно будет ежеминутно/ежечасно пополнять. Представить себе человека (не киборга) который сможет этот файл обрабатывать я не могу. Сознательная часть мозга по моему мнению, вообще не очень хорошо хранит информацию. Поэтому имеем аналог кэша как на PC, загружаем только то что нужно для работы, актуальное в «оперативке», старое потихоньку забываем. Термины могут мозгом по умолчанию считаться не очень важной информацией…


  1. soymiguel
    27.09.2018 13:33

    Тот тип собеседования, которое отсеивает неадекватного (для кандидата, как минимум) работодателя — даже не столько работодателя, сколько конкретный коллектив. Скорее, повод для радости, чем для расстройства, если учесть, что ваш визави мог стать «старшим товарищем» и «наставником», а то и начальником, на постоянной основе.


  1. yorgo
    27.09.2018 13:52

    Подобные статьи и часть комментариев напоминают мне стенания всяких боди-позитив и прочих snowflakes об их ОБВМ и о том, что их никто не любит такими, какие они есть, и которым проще ныть на форумах, чем элементарно привести себя в порядок и начать бегать по утрам.


    Все мы считаем себя сеньорами достойными Гугла, но реальность она несколько иная, мягко говоря.
    Если вы не major contributor в какой-нибудь популярный open source проект, не работали в условном Гугле, не побеждали в top coder, и вас специально не хантят, то реальность такова, что для работодателя вы — никто. И до тех пор пока у вас за поясом не будет чего-нибудь из вышеперечисленного, будьте готовы каждый раз доказывать, что вы не верблюд.


    И выручите уже, бл*ть, эти алгоритмы и структуры данных. Если сеньор за 5/10/15 лет не удосужился взять какую-нибудь Elements of Programming Interviews in Java и потратить три месяца по вечерам, чтобы не тупить при встрече с древовидной структурой, то что-то с этим сеньором не так.


    Ну и, наконец, неспособность вспомнить virtual в три часа ночи с бодуна в грозу, для сеньора таки залёт.


    1. nmrulin
      27.09.2018 14:13

      Ну три(!!!) месяца тратить на какие-то левые навыки не самое лучшее времяпровождение.


  1. ded_Sergei
    27.09.2018 13:56

    И все таки хотелось бы получить ответ: Что такое virtual? Шучу, конечно.
    Типовая ситуация, к сожалению. Изменить сторону, которая вас нанимает вы наверное вряд ли сможете. Можете лишь изменится сами. Вариантов много. Можно научится навыкам собеседования и перехватывать инициативу. Можно сделать так, чтобы за вами охотились. Я не думаю, что в 80% случаев вы сможете убедить HR менеджера дать вам тестовое задание, если это не принято. Нафиг ей/ему напрягаться.


  1. Kirill_Dan
    27.09.2018 14:00

    Некоторые специалисты задают вопрос, как нужно собеседовать, что нужно спрашивать. Могу поделится своими соображениями. Предположим, что вы нанимаете высококвалифицированного специалиста (сениора).

    1. Не спрашивайте про основы ООП и вообще синтаксис ЯП. Вы не столько проверите знание соискателя, сколько покажите свою некомпетентность. Вы спросите, а как же отсеять лгунов? Все просто, давайте предположим, что перед нами действительно честный сениор. А значит это не просто человек, который знает синтаксис ЯП — это в первую очередь специалист, который умеет самостоятельно решать задачи любого уровня сложности! И сможет решить эти задачи на любом ЯП, даже на том, которого в глаза не видел. Отсюда переходим к п.2

    2. Опытный специалист работал с разными проектами и выполнял нетривиальные задачи. Вот и начните его спрашивать, какие сложные задачи он выполнял, в чем была сложность и как он это решал. Пусть человек плавает в своих водах опыта и знаний. А не в ваших, о которых он ничего не знает. Если вы не понимаете о чем начинает рассказывать специалист, если вы впервые слышите о таких решениях и подходах, значит собеседовать таких специалистов — это не ваш уровень. Предположим, что это ваш уровень, тогда переходим к п.3

    3. Исходя из ответов п.2 вы можете задавать уточняющие вопросы: а какая была нагрузка на проект, а как вы с ней справлялись (уточнение про кэширование, шардинг, репликации, оптимизации запросов и т.д.), а как организовывали быстрый отклик при тяжелых операциях (вебсокеты, потоки, слушателиб очереди и т.д.)

    4. Если человек вас пытался дурачить, то вы это тут же поймете. Если нет, то вы узнаете что хотите и может и сами немного прокачаетесь.

    5. Если нужен реально хороший специалист, то знание ЯП вторично! Это джунам нужен ЯП, как старт в профессию. Спецы же высокого уровня должны строить алгоритмы, архитектуру, находить разные подходы к нетривиальным задачам.

    6. Если вы на позицию сениора ищите исключительно послушного кодера — то ваш бизнес уже проиграл, просто вы еще этого не знаете.


    1. Druu
      27.09.2018 14:05

      Вот и начните его спрашивать, какие сложные задачи он выполнял, в чем была сложность и как он это решал.

      Вообще странный вопрос, к слову. Сложная задача — это задача, которая далеко выходит за пределы компетенции исполнителя (то есть исполнитель не может решить задачу в приемлемые сроки с приемлемым качеством). Любую другую задачу, согласитесь, не имеет смысла считать сложной, это уже будут задачи простые. Или обычные.
      Но если такие задачи специалисту дают — это факап менеджмента, такого в норме быть не должно.


      1. Kirill_Dan
        27.09.2018 14:16

        Вообще странный вопрос, к слову. Сложная задача — это задача, которая далеко выходит за пределы компетенции исполнителя (то есть исполнитель не может решить задачу в приемлемые сроки с приемлемым качеством). Любую другую задачу, согласитесь, не имеет смысла считать сложной, это уже будут задачи простые. Или обычные.
        Но если такие задачи специалисту дают — это факап менеджмента, такого в норме быть не должно.


        ))) И тут мы приходим к понятию декомпозиции, к алгоритму поиска эффективного решения для того, чтобы вообще найти подход к тому, как начать решать эту проблему/задачу. Ведь программирование — это не просто написание кода! Это, наверняка, даже не десятая часть в разработке ПО.

        Просто произошла дикая подмена понятий! Ведь если мы взглянем на вики определение программиста, то увидим:

        Программи?ст — специалист, занимающийся непосредственной разработкой программного обеспечения для различного рода вычислительно-операционных систем.

        То есть программист должен решать ЛЮБЫЕ проблемы для достижения цели. А что происходит в реальности?! Тот кто знает синтаксис ЯП и основы ООП, уже считается программистом. А вот и нет! Это не программист, а эрудит, заучивший справочник.

        Отсюда и куча проблем, недопонимание и прочие глупости на проектах.


  1. nmrulin
    27.09.2018 14:11

    Главное проблема в том, что определение вообще ни на 1% не являются знаниями, а являются конвенцией, что люди договорились, что определение будет такое.
    Как говорил отец Фейнмана:

    "«Видишь эту птицу?» — спрашивал он сына. — Это певчая птица Спенсера. Ну так вот, по-итальянски это Чутто Лапиттида. По-португальски: Бом да Пейда. По-китайски: Чунь-лонь-та, а по-японски: Катано Текеда. Ты можешь знать название этой птицы на всех языках мира, но, когда ты закончишь перечислять эти названия, ты ничего не будешь знать о самой птице. Ты будешь знать лишь о людях, которые живут в разных местах, и о том, как они ее называют. " -вот примерно того же стоят все академические определения.


    1. ApeCoder
      27.09.2018 20:04
      +1

      Это скорее про обозначения, чем про определения. Но это часть правды. Если бы отец сказал это Фейнману по-китайски, то он бы не понял его. Потому, что Фейнман не знал бы обозначений.


  1. eugenk
    27.09.2018 14:16

    Неистово плюсую! Жаль кармы не хватает чтобы плюсануть в реале :))
    Для себя я уже давно решил следующую весчь. Если со мной начинают собеседовать, я говорю стоп чуваки. Дайте мне небольшую задачку, на день-три, желательно связанную с предстоящей работой. Поглядите как я её решу, увидите стиль моего мышления, стиль написания кода, тогда и поговорим. Если мне говорят что мол у нас такие принципы, я отвечаю что у меня свои принципы, и очевидно мы друг другу не подходим. Но очень часто соглашаются.

    По рассказанной Вами истории считаю что Вам повезло. Попали бы в проект, говна с такими манагерами хлебали бы половниками. Лучше от такого счастья держаться подальше.


  1. uazure
    27.09.2018 14:35

    Автор, порадуйся что ты так быстро понял, что тебе нечего делать именно в этой конторе. Тебя ждут нормальные проекты и нормальные коллеги, которые понимают что именно важно в разработке.


  1. Neradivy
    27.09.2018 17:03

    Ого, понакидали комментов… у меня не хватило терпения и запоминалки собственных мыслей, чтобы не прокомментировать до того, как прочёл всё, высказанное до меня, поэтому простите, если кого-то повторяю.
    Тут сошлась и животрепещущая тема, и достойный автор, которого можно поднять на щиты (не как в финале «Спартака»).
    Но подозревать разрабов в самозванстве — никак не «хватит», ведь именно для этого, в том числе, и проводятся собеседования — чтобы подозревать в тебе самозванца и дилетанта. Это для кого-то унизительно, это чревато ошибками, а у нас у разрабов отношение к ошибкам профессионально нетерпимое, но тут тот случай, когда придётся забить на баги и пройти мимо. Иначе, по административной логике, мне кажется, если к нам с вами прислушаются, станет ХУЖЕ. Перепоручат всё эйчарам, как в сеттинге вот этого рассказика: habr.com/post/417431
    Таки да, вполне возможно, крутая контора прошляпила крутого спеца.
    Ну, бывает.
    Или верно что-то из домыслов предыдущих комментаторов относительно компании, вакансии (её реального значения) или ЛПР. Или не верно ничего. А просто автор статьи действительно им не подходит. Некоторая вероятность, что он overqualified, и ещё меньшая — но, простите уж, не нулевая — что он underqualified.

    Кстати, вопросы на «память и зубрёжку» на собесе — неплохой такой звоночек.
    На самом деле, вопрос, «лучше всё помнить или лучше понимать любой вопрос? Можно ли хорошо разбираться в вопросе, если не зубрить?» — в науке, не говоря уже о программировании, ещё не решён однозначно. В экономической науке есть подход Густава Шмоллера и… этого… ученика, забыл фамилию — который «перешмоллерил самого Шмоллера», например…
    Если человек открыто бесится, что ему задали вопрос на начётническую память — не обязательно человек не умный, не понимающий, но… человек трудный.


  1. saboteur_kiev
    27.09.2018 17:04

    Просто попали на собеседование не к техническому лиду проекта, а к ПМ-у, который в молодости говнокодил, и решил что он лучше знает как проводить техническое собеседование.

    ИТ тут не причем. Девы тут не причем.
    Представьте, что на собеседование шофера начнут по ПДД гонять? будет тоже самое, люди с 30-летним опытом и водителя и механика завалятся на мелочах.

    Тоже самое.


    1. fukkit
      27.09.2018 17:29
      +1

      начнут по ПДД гонять

      — На какой сигнал светофора вы обычно проезжаете перекрёсток?
      — Оппа… язобыл.


      1. tvr
        27.09.2018 17:35
        +1

        — На какой сигнал светофора вы обычно проезжаете перекрёсток?


        -На нижний. А если светофор горизонтальный — то на правый.


      1. saboteur_kiev
        27.09.2018 23:07

        Без гугления, ответьте на парочку вопросов:

        1) Вне перекрестка, трамвайный путь пересекает полосу движения. Трамвай выезжает из депло. Должны ли вы уступить дорогу?

        2) Транспортные средства, на которых производится обучение езде, должны иметь опознвательные знаки («У»), за исключением каких транспортных средств?

        3) На каких дорогах запрещена буксировка во время гололедицы?

        4) Кстати, какая максимальная скорость разрешена при буксировке?

        Если вы думаете, что в ПДД сложно найти вопросы, которыми легко завалить опытного водителя, то просто полистайте ПДД.


  1. slrzz
    27.09.2018 17:08

    Проблема с самозванцами есть, не знаю как на российском рынке, а вот в США есть конторы, которые предлагают «обучение», например java, за полгода и за $5000. Туда идут учиться все подряд — «хочу получать зарплату как у программиста». Не знаю про качество обучения, но они кроме знаний дают будущему программисту красивое резюме со списком выполненых проектов и «настоящие» референсы по этим проектам + ещё учат проходить собесы и как правильно отвечать на вопросы по проектам из резюме. Есть пара дальних знакомых, которые таким путём получили работу разработчиков.
    А сам я недавно искал работу и удивлялся почему на каждом интервью в начале спрашивают чем отличается интерфейс от класса, рекрутер мне потом и поведал, что практически на любую вакансию разработчика есть десяток претендентов с красивыми резюме, и такими вопросами можно их отсеять и съэкономить время.


  1. fukkit
    27.09.2018 17:22

    Удивляет не бомбящий не по делу автор (не знал/забыл про virtual? а голову ты дома не забыл?! садись — двойка, синьор ты мамкин...), а половина комментариев из серии «братан, и я не знаю, чё эта».


    1. Neradivy
      27.09.2018 18:56

      ты забыл добавить:"… и отлично справляюсь с работой".
      +не «не знаю», а «не помню».


      1. Jeka178RUS
        27.09.2018 21:16
        +1

        Тут недавно был перевод и у автора бомбило с убогости софта и окружающей действительности. Может все это от сениоров которые не знают virtual и отлично справляются с работой?


        1. stul5tul
          28.09.2018 00:44

          Тут недавно был перевод и у автора бомбило с убогости софта и окружающей действительности. Может все это от сениоров которые не знают virtual и отлично справляются с работой?

          Это от требований бизнеса сделать все еще вчера и дешево, а требования бизнеса — от реалий в экономике и конкуренции.
          Если тебе нужно срочно заткнуть дыру — то не до красивых абстракций.


        1. Neradivy
          28.09.2018 12:28

          Скорее уж, это от контор, которые таких старшИх не берут принципиально. (не факт, что в статье тот случай).
          В статье по Вашей ссылке — больше про целеполагание, я так понимаю, причём, стратегическое, а не про virtual.
          Впрочем, ТС, Якiй ти в чорта лыцарь, коли голою… далее по тексту.)


  1. Neradivy
    27.09.2018 19:08

    Вообще, ответы автора статьи в ведомом им на протяжении статьи (в основном) неслучившимся диалоге с работодателем — слегка в стиле еврейской классики: «то есть Вы хотите знать, почему я не могу ответить на Ваш вопрос. Я расскажу, и Вы убедитесь сами...»
    Наверное, многие самонадеянные крутые спецы в сложных областях любят такое.
    И — нет, не буду пенять им ограниченным временем собеседования или впечатлением интеллектуального снобизма и вербальной агрессии.
    Я просто предлагаю коллегам подумать в общем, какие вопросы они бы задали, чтобы в ответ не началась притча, агада либо вообще кадиш и помимо общего приятного впечатления о человеке и его пытливости можно было бы определить, сработаетесь ли, в рамках жёстко заданных подходов. Притча ещё тем плоха, что не у всех у нас прокачаны литературные и ораторские способности. А если ещё поверх смущения (для того, чтобы видеть смущение, и понадобился видеочат) — то те способности, что есть, делите на 10 и сравнивайте с «левелом босса».


  1. Jeka178RUS
    27.09.2018 19:21
    +2

    Для меня как программиста C++ virtual настолько базовое понятие, что за его не знание не грех отсеять кандидата на позицию обычного программиста, что уж говорить про senior. Неужели в C# virtual не так распространен и важен?


    1. eugenk
      27.09.2018 20:11

      Хрен его знамо… С# я вообще никогда подробно не изучал. На плюсах стараюсь (если придется) писать как можно проще. Чел говорит совсем не о том. Говорит он о том, что действительно сильного разраба отличает не знание какого-то конкретинизма, а понимание базовых принципов. Позволяющее очень быстро получать результаты даже в совсем незнакомой области. И тут я с ним согласен на все 146%


  1. panteleymonov
    27.09.2018 20:19

    Я уже два года ищу работу натыкаясь на такие конторы. Просвета пока не вижу. А вот что таких тем по всюду раз два и обчелся это странно. Только до 10 года можно что то найти.


  1. atri24
    27.09.2018 20:19

    Автор, не парься :)
    Прохождение собеседований — это отдельный навык, и он не сильно коррелирует с твоими реальными знаниями как работать. Его также надо время от времени тренировать, проходя собеседования.


  1. no_lifer
    27.09.2018 20:19

    как можно не знать что есть virtual?
    что за «сеньйоры» пошли…


    1. Wesha
      27.09.2018 21:55
      +1

      как можно не знать что есть virtual?

      Не "не знать", а "не помнить", что очень просто, если последний раз, когда писал на сях, был в универе. Реальная жизнь требует от меня знания совсем других языков.


  1. kowap
    27.09.2018 20:19

    Тоже недавно решил походить по собесам, так, чисто проверить себя. Все тоже самое как у автора, только в живую


  1. ivkustov
    27.09.2018 20:19

    Подобный отсев по «списку вещей, которые должен знать сеньор» легко ломается количеством собеседований — а в случае активного поиска работы собеседований будет и правда не мало. На 3-4-5 собеседовании кандидату зададут все эти вопросы, он успешно после собеседования нагуглит ответы и их вызубрит. И придет к вам на 6 и все будет от зубов отлетать.


  1. aliev
    27.09.2018 21:32

    Кстати да, тенденция пошла. Вопросы на зазубривание.
    в 4 места приглашали, везде не подошел, людям даже не интересно какие проекты реализовывал, хотя бы попросили репозиторий код глянуть, или тестовую задачу закинуть.

    Демарилизует очень…


    1. Wesha
      27.09.2018 21:56

      Демарилизует очень…

      И как там дела у маралов?


      1. aliev
        27.09.2018 22:58

        Что ты хотел этим сказать? Опечатку впервые увидел?


        1. Wesha
          27.09.2018 23:00

          Что ты хотел

          А с Вами когда?


          1. aliev
            28.09.2018 00:28

            1. Wesha
              28.09.2018 00:36

              Как изысканно вежливо! То-то я думаю — почему у Вас карма отрицательная?


              1. aliev
                28.09.2018 00:39

                Общаешься как гей, а не как ИТшник


                1. Wesha
                  28.09.2018 01:19

                  Чудны дела твои, господи — в наше время признаком мужественности считалась безукоризненная вежливость в любой ситуации, а теперь — маты-перематы...


  1. rekod
    27.09.2018 22:02
    -1

    «Выстраданный» мной Совет тебе:
    _Просто_ забей на м***ков и ищи тех, кому «очень-очень надо фичи, а не вот эти ваши программистские заумства» (бизнес, ну и ЛПР в бизнесе особенно надо искать). Приходи к ним даже не с кодом, а с понятными демками по _ихней_ тематике (специально «ихней» написал, чтобы «раздаржитель» хорошо запомнился :))

    В итоге и доход твой вырастет в разы (x2 — самое малое) и уважуха тебе будет и общение на собраниях с руководством по бизнесу и «по теме» напрямую (а деньги они оттуда — из бизнеса, а не от virtual и «заумных очкариков») и слушать тебя (как проявишь себя конечно) будут ну _очень_ внимательно.

    Моя история (кому-то надеюсь добавит оптимизма):

    Как-то так вышло, что в самый неподходящий момент (мы с женой в отпуске в Таиланде, денег потрачено уйма, а осталось соответственно мало) проект «внезапно» закрылся (я вообще по email узнал) по независящим от меня бизнес-причинам (хотя я долго ходил и капал на мозги руководству, что «так не прокатит с т.з. бизнеса и даже тупо математически вот тут и вот тут экономика не сойдётся», типа что надо по другому — не послушали, ну и в результате «утёрлись» все, а не только я).

    И пошёл я по привычке пособеседоваться в пару местных контор.

    Ёмаё, я и не знал, что в мире столько задр***ов-очкариков, которым важно «пройти по строке, перевернуть там слова каждое отдельно внутри строки, но при этом использовать только 2 (два) указателя для жёсткой экономии RAM» (я в микроконтроллерах stm8 так не экономил даже!) — и всё это за 10 минут на бумажке написать. (если что это не стандартное «строку перевернуть», просто пустив указатель бежать обратно)
    Я правда потом сталкивался с этими неадекватами на одном форуме, где они предлагали «хакатон под наше железо, но вы код пишите без него, а самым успешным мы даже дадим разок прошить попробовать». Компанию называть не буду, тем более она известная и хэдофис думаю у них адекватный — это «местячковые» боссы «дуркуют» тут :)

    Ещё в одной конторе мне в качестве «тестового задания» пытались втюхать нехилый такой НИОКР на неделю не меньше (связано с ультразвуком и его распространением. в принципе при словах «Сколково» мне надо было сразу послать их лесом, а не вести диалог — сам виноват :)))

    В итоге я пошёл увольняться «в никуда», причём родные кадровички расставались со мной как-то легко и это добавляло мне грусти и печали.
    В результате я пошёл «к главному на окончательную подпись» и тут… он встретил меня (хотя я его мало знал — видел в коридорах пару раз) чуть ли не как родного: «Саш, привет! Что-то это у тебя? (взял листок, аккуратно сложил вчетверо). А ты это… серьёзно? причины?»
    Ну тут я сказал, что типа проект закрылся, мне наш главный сказал, что финансирования нет и всем надо искать работу.
    На что он округлил глаза, позвонил кадровичкам и убедительно попросил «ошибок впредь не допускать, пожалуйста, ну хотя бы человека спрашивать причины!», ну и рассказал, что оказывается намечается крупный проект и народ наоборот днём с огнём ищут, а мои скилы крайне там бы пригодились, особенно C++, QNX и т.д. В общем я «как в сказку попал», причём потом выяснилось, что да, не обманули — было и интересно и з/п норм и мир повидал ещё разок нахаляву (командировки-с).

    Жизненный урок: НЕ слушать **упое «местячковое» начальство и тем более не вести с м***ками диалоги — выходить на «боссов» (ЛПР), чем раньше тем лучше! (хорошо что у меня хоть и случайно но так и вышло)

    Ну а далее друзья сделали так же (но не в этой стране) и меня позвали с ними работать.
    Сейчас работаю напрямую с заказчиками (прямее некуда), в офис переться не надо, глупости ничьи слушать не надо, если с чем-то не согласен или есть идеи — велкам, всё обсуждаемо (главное чётко разъяснить и обосновать).

    Выводы: выходить на ЛПР, выходить на «бизнес», выходить на _заинтересованных_ лиц, не «умничать», а предлагать и объяснять это без надменности АйТишной доступным языком бенефиты от того или иного решения.

    P.S. Очень надеюсь, что мои наблюдения и выводы помогут людям, попавшим в ситуацию как у меня (см. «многабукаф» выше) и как у автора статьи.
    Хоть мне и скоро 40, но пишу тут простым «пацанским» языком — нафиг вот весь этот пафос, надо называть вещи своими именами.
    «Улыбайтесь! Ведь все самые большие глупости в мире совершаются именно с серьёзным выражением лица!» (с) х/ф «Тот самый Мюнхаузен»


  1. lotse8
    28.09.2018 00:01

    Не так это просто, найти хорошего разработчика. Потому что
    есть знания теоретические, и есть практическая производительность. Один разработчик сделает за месяц условно 100 юнитов, а другой 20. Один въезжает в проект за неделю, а другому надо месяц потратить. И т.д.
    Собеседования в основном выявляют что-то там по теории, поэтому выхлоп от них не очень. Написать тестовое задание и потом объяснить решение — это уже получше, но тоже не дает всей полноты картины. Для сокращения времени набора идеально было бы брать на одну позицию три или более кандидата на испытательный срок и потом оставлять на постоянную лучшего. Несколько жестко к отсеиваемым, но у нас же капитализм…


    1. rekod
      28.09.2018 01:23

      > Один разработчик сделает за месяц условно 100 юнитов, а другой 20. Один въезжает в проект за неделю, а другому надо месяц потратить. И т.д.

      юниты? это деньги такие? :)
      для бизнеса пофиг сколько там юнитов кто делает. для бизнеса важен _результат_: деньги — в кассе.
      а пиши хоть на C++, хоть на BASIC, хоть вообще на китайском иероглифами.

      кто-то в задачу въезжает за неделю, делает всё добросовестно, но делает «не то». а кто-то думает месяц, приходит к боссу и говорит: так не надо. надо вот так. вот презентация и демка, вот — отзывы, вот — промахи конкурентов, сравните — всё сами поймёте.

      важно не _правильно_ делать дела, а делать _правильные_ дела.


  1. gohan
    28.09.2018 00:35

    Я тут подумал, что не смог бы пройти собеседование в компанию, в которой работаю, на должность, на которой работаю. Это в том случае, если у нас собеседуют «как везде», т.е. без гугла, чисто вопросами на проверку памяти. Работаю нормально, справляюсь с обязанностями без упрёков. Гугл — великая вещь, внешняя память.


    1. rekod
      28.09.2018 01:19

      > не смог бы пройти собеседование в компанию, в которой работаю, на должность, на которой работаю.

      сейчас всем интересующимся так и говорю: «каюсь. 10 лет притворялся что знаю C++ (а также Java, а точнее Android, а также другие языки и технологии), вот список проектов где я притворялся — можете позвонить им, спросить про меня. мне им звонить стыдно — могут обратно позвать, а 2-й раз врать как-то уж совсем некрасиво :)»


  1. vadlit
    28.09.2018 01:03
    +1

    Мне тоже время от времени приходится собеседовать разработчиков к нам в команду. Возможно, повторю какие-то мысли из комментаторов выше (прочитал не всех, но многих)…
    Первое — собеседование это не только про технические навыки, но и про то, как вы вольетесь в команду. Причем не факт, что вливание в команду менее важно. Кандидат должен просто богоподобным разработчиком, чтобы можно было закрывать глаза на его отвратительные софт-скиллс. Мне такие, к сожалению, пока не попадались, поэтому глаза закрывать повода нет. По вашим фразам, цитирую, «Смотрю — топище расплывается от гордости, светится. Высокомерие так и льется из экрана. Рад, что съел очередного болвана, который не знает “базовых” вещей. Самоутвердился, можно искать следующего.», у меня складывается ощущение, что общаться с Вами собеседующему при дальнейшей работе, возможно, было бы непросто. Возможно, он это почувствовал в какие-то моменты, а потому задавал вопросы с большим усердством, чтобы точно убедиться адекватный ли вы в общении человек. Быть может, ему показалось, что не очень.
    Второй момент — по технической части. Лично я не очень представляю, как можно забыть, что такое virtual (не по определению, а не суметь даже своими словами рассказать для чего и почему используется). Топить бы я за это не стал, но звоночек был бы. Да и представьте себя на месте собеседующего. Ему каким-то образом надо понять технический уровень кандидата. Вариантов для этого не так много:
    — либо смотреть тестовое задание (их мало кто любит вообще делать, особенно из хороших разработчиков),
    — либо смотреть ответы на небольшие предсобеседовательные вопросы (мы у себя сейчас практикуем такой подход),
    — либо расспрашивать подробности о предыдущем проекте (он не всегда может быть релевантным, да и как правило подробностей особых не выудишь, а если и выудишь — то без взгляда на код не всегда интервьюер можно легко погрузиться в описание проекта и задать правильные вопросы),
    — либо банально задавать вопросы по чек-листу (то с чем Вы и столкнулись)
    — либо давать маленькую практическую задачку (тоже часто не связанную с реальностью, т.к. задача побольше, из реальной практики, с учетом стресса, который испытывает собеседуемый во время интервью, почти наверняка не сможет быть хорошим фильтром)
    Чаще всего все эти варианты в той или иной степени комбинируются. Это позволяет отсеивать люто неподходящих кандидатов (таких подавляющее большинство). При этом конечно же в фильтр иногда могут не проходить и действительно хорошие профессионалы, но, как уже упоминалось многократно предыдущими комментаторами, — гораздо важнее не взять на работу очень плохого кандидата, чем пропустить одного хорошого. Главное держать баланс.
    Третье — я, например, при беседе, если чувствую, что кандидат совсем не подходит на заявляемую должность, пытаюсь прощупать те темы, в которых он более-менее хорош, чтобы, возможно, предложить ему позицию пониже. Быть может, по каким-то предыдущим вопросам, Ваш интервьюер тоже это понял, и просто прощупывал подойдете ли Вы на другую позицию?
    КМК, большинство собеседующих (исходя из моей практики прохождения собеседований и со стороны претендента) — это все-таки совершенно адекватные люди, без желания кого-то завалить, а уж тем более «расплываться от гордости», «светиться» и т.д. Просто есть вполне конкретные цели от собеседования, конкретные требования к кандидатам, и Вы в данный момент их не удовлетворили.
    Также как и они Вас. Это же хорошо, что все хорошо закончилось, и Вам не пришлось работать на нелюбимой работе.


    1. stul5tul
      28.09.2018 01:09

      По вашим фразам, цитирую, «Смотрю — топище расплывается от гордости, светится. Высокомерие так и льется из экрана. Рад, что съел очередного болвана, который не знает “базовых” вещей. Самоутвердился, можно искать следующего.», у меня складывается ощущение, что общаться с Вами собеседующему при дальнейшей работе, возможно, было бы непросто


      Полагаю все дело в этом:

      Я только что с собеса, и у меня бомбит.


      Просто написано не на холодную голову.


  1. Neradivy
    28.09.2018 01:26

    В чём автор прав — вопросы должны быть другие.
    Поскольку у нас с вами больше половины времени уходит на отладку, а не на перебор инструментов и имплементацию — можно потратить некоторое время на уточнение деталей ответа на вопрос: «какие ОШИБКИ допускают люди с технологией (...)?» «Какие НЕПРАВИЛЬНЫЕ ПОДХОДЫ ты знаешь к...?»


  1. 007913
    28.09.2018 09:14

    Тут все двояко. С одной стороны — такие терминологические вопросики тоже нужны — позволяют быстро узнать знаком ли кандидат с теорией (заметьте, обратное утверждение я не говорю).

    Однако такие вопросы ни сколько не дают понять о том как человек умеет работать, его логике, опыте, обучении, принятии решений и творческом конструировании. Но все же отличных программистов без знания теории не бывает — и если он в обоих этих аспектах выступил на отлично — то что и думать «true senior!».

    Но! Кандидат все таки приходит устраиваться на «работу», работа — то есть практика и возможность обучаться/адаптироваться к тонкостям конкретной организации — тут несоизмеримо боле важна чем знание что такое virtual…


  1. sirius23
    28.09.2018 10:27
    -3

    +