Расскажу несколько историй, чтобы стало понятнее, что я имею в виду.
История первая: собеседование прошло отлично. Кандидат был уверен в своих силах, поэтому сотрудник компании забрасывал его новыми и новыми вопросами. Казалось, всё складывается прекрасно… но только казалось. Позже, когда кандидату предложили работу, он ответил отказом и пожаловался на то, что тон собеседования был слишком агрессивным.
История вторая: кандидат хорошо справлялся, пока не допустил пустячную ошибку в такой мелочи, что этим спокойно можно было пренебречь. Но собеседующие уцепились за эту ошибку, в их отношении к кандидату появилась едва уловимая враждебность. С этого момента всё пошло под откос.
История третья: ответственный за собеседования пригласил двух талантливых программистов себе в подмогу. Вскоре собеседование превратилось в викторину на тему, с которой программисты работали в тот день. Ответственный сидел и думал: вы-то, конечно, всё это знаете, оно же пять минут назад было у вас перед глазами. Но они так и продолжали задавать произвольные вопросы из узкой области, пока кандидат совсем не пал духом. К концу собеседования ответственный осознал, что и сам бы его завалил – он не знал и половины ответов.
Я был действующим лицом всех трех историй. В первой я выступал в роли того самого агрессивного сотрудника. Когда мне передали обратную связь, я был в ужасе – мне и в голову не приходило, что я запугиваю кандидата. Впредь решил быть осторожнее.
Во второй истории я был тем, кто пытался убедить команду, что не стоит отказывать человеку из-за одной мелкой ошибки, но никто меня не поддержал, и его отсеяли. «Мы такие деньги платим, зачем нам здесь придурок какой-то, ха-ха».
Третья история особенно запала мне (ответственному за собеседования) в душу своей несуразностью. Я пронаблюдал, как хорошие программисты (и хорошие люди) внезапно превращаются в каких-то козлов без капли сочувствия к кандидату. Я даже сказал им, что сам бы не осилил подобное собеседование. Зачем выспрашивать до таких мелочей? «Но нам же в данную микросекунду нужны именно эти знания».
Разумеется, спустя три месяца нам понадобились уже другие знания, и кандидатов стали спрашивать о других частностях. Потом на смену пришло что-то еще. И в итоге мы никого не наняли, потому что никак не могли поймать того самого крота, как в детской игре.
Я недоумевал, почему мои коллеги, которые в других ситуациях всегда отличались умом, ведут себя так странно, пока не осознал: именно на собеседованиях нормальные люди так звереют.
Происходит это по нескольким причинам:
- Люди не задумываются (и не ощущают), какое впечатление производят на других.
- У них мало опыта проведения собеседований, поэтому они не продумывают процесс заранее, а просто действуют по наитию.
- Им попросту наплевать: «на нем свет клином не сошелся», «а мне-то что», «нужно же держать планку» и так далее.
В онлайн-сообществе есть дурацкий миф, согласно которому большинство программистов не умеет программировать. Иными словами, все, кто ищет работу – круглые дураки, а наша задача – уличить их, преподать им урок, унизить так, чтоб неповадно было. Многие программисты чувствуют себя эдакими Гэндальфами, сдерживающими тьму, а не просто людьми, которые волей случая на этот раз оказались на собеседующей стороне, а не наоборот.
Варианты решения проблемы
1. Попытайтесь держать в уме, что кандидат сильно нервничает и, вероятно, не выказывает и половины способностей, которыми обладает в спокойном состоянии. Собеседование – крайне стрессовая ситуация, ведите себя по-человечески.
Вот вам еще одна история: я собеседовался на должность типа инженера данных (нужно было извлекать и очищать данные, чтобы аналитики потом могли с ними работать). Работа требовала знания SQL, так что я не пожалел времени, чтобы освежить его в памяти перед собеседованием. Даже проходил онлайн-тесты, чтобы убедиться, что отвечу на любой вопрос, какой бы ни задали. Я был полностью уверен в своих знаниях по SQL.
Сотрудник, проводивший собеседование, спросил меня о чем-то совсем простом, какой-то ерунде типа «как создать таблицу?», в этом духе. И меня закоротило – вообще не мог вспомнить. Если бы он подтолкнул меня в нужном направлении или дал пару минут собраться с мыслями, наверное, я вспомнил бы. Но он резко меня оборвал и перешел к следующему вопросу. Всё оставшееся (недолгое) время собеседования он глядел на меня с оттенком презрения. Держу пари, в тот день он отправился на Hacker News, чтобы похвалиться своими успехами. «Этот придурок даже таблицу создать не в состоянии. Уровень у разработчиков падает на глазах. Как такие люди вообще находят работу?»
Я был раздавлен и всю дорогу домой чувствовал себя идиотом. Но зато этот опыт дал мне прочувствовать, как в компаниях относятся к кандидатам и как мелкая оплошность может испортить целый день.
2. Ваше дело не исполнять роль Гэндальфа, преграды, не позволяющей плохим программистам уничтожить индустрию. Ваше дело – найти наиболее подходящего кандидата на должность. Если вы убеждены, что вас окружают идиоты, советую меньше сидеть на Reddit/Hacker News и больше жить своей жизнью.
3. Старайтесь задавать реалистичные вопросы – то есть соответствующие описанию обязанностей. Не углубляйтесь в частности, не ждите, что кандидат будет знать ту или иную библиотеку как свои пять пальцев. Никогда не спрашивайте о том, что можно легко нагуглить. Задавайте вопросы, которые позволяют оценить умения в целом, а не владение тем инструментом, который вы последним использовали.
4. Заранее решите, какие вопросы будете задавать. Как я заметил, если не давать никаких указаний, люди просто начинают экзаменовать кандидата по какой-нибудь там библиотеке, с которой сейчас работают. «Я сегодня занимался тем-то и тем-то, так что следующие два часа мы будем разбирать эту тему по косточкам, потому что она свежа у меня в памяти. А если у тебя нет – ну, значит, не судьба тебе здесь работать, неудачник».
Приемы, которые у меня хорошо работают
Поговорить с кандидатом о его резюме
Столько времени тратится на вопросы с Leet, а до самого простого – поговорить о предшествующем опыте – у многих руки не доходят. Чего кандидату удалось добиться, пока он работал в прошлой команде? Какой вклад он вносил? Такие обсуждения позволяют без труда отделить тех, кто просто бесцельно дрейфовал, от тех, у кого есть какие-то достижения.
Дать несложную задачу с разрешением пользоваться источниками
Как я убедился, давать кандидатам простое (обязательно простое!) задание, чтобы они выполнили его в реальном времени – очень плодотворная практика. Я разрешаю им гуглить сколько душе угодно – не за хорошую память ведь нанимаем.
Я использовал задания в таком духе: при помощи Python импортировать вывод команды Linux (скажем, top), а затем запустить regexes и найти в нем (для примера) CPU. Я готов даже помочь кандидату намеком, если вдруг где-то застрянет – мне нужно, чтобы он расслабился и мыслил ясно.
Таким образом можно увидеть, насколько свободно человек работает с кодом, быстро ли находит ли ответы в Сети (а заодно – работал ли с той или иной библиотекой: если да, то будет знать, что искать и какие термины использовать). Даже самое простое задание позволит выявить людей, которые уверенно себя чувствуют и занимались чем-то подобным раньше.
Если же эти советы для вас не работают, ограничьтесь одним: постарайтесь относиться к кандидатам гуманнее и держите своего внутреннего козла в загоне.
Комментарии (287)
ksbes
16.01.2023 16:28+2Я во время собеседования всегда страюсь довести человека до ошибок и границ его понимания. Т.к. понять что человек действительно знает можно только поняв, что он не знает. Причём мне удавалось это проделывать даже по тем темам где кандидат шарил больше меня :)
Но это не значит что это всё делается агрессивно — наоборт, максимально дружелюбно и с лёгким юмором (если человек его понимает). Это нормально — не знать, даже по своей теме. Я больше смотрю как кандидат реагирует на стресс (идёт на конфликт или гасит), насколько целеустремлён, любопытен и т.д. и т.п.
Помню случай, когда кандидат так и не сумел ответить на сравнительно простой вопрос, но потом прямо на собеседовании всё равно докопался и до нас и до гугла и ответ нашёл. Взяли — не жалеем.
Так что дело не в вопросах. Дело в общении и установлении контакта. А знает, не знает — это видно больше по тому как он отвечает, а не что.
А формальное HR-вское собеседование — это не то что зло, это просто лишнее. Это можно всё и через анкету провести.snuk182
16.01.2023 16:49+3когда кандидат так и не сумел ответить на сравнительно простой вопрос, но потом
Потом - это когда? Кандидат заваливает первичный отбор = кандидат дальше не проходит.
ksbes
17.01.2023 09:22+5А кто сказал, что он его завалил? Я про то и пишу, что при нормальном подходе не ответить на вопрос — не значит завалить собеседование!
vitaly_il1
16.01.2023 22:33+2"Это нормально — не знать, даже по своей теме"
Более того - это ненормально утверждать что знаешь все. Каждый раз когда я слышу от человека "я не уверен, это не моя область" - мое мнение об этом человеке улучшается.nronnie
17.01.2023 11:16+3У меня были не раз несколько обратные ситуации, когда собеседующие сразу говорили что они сами не знают правильный ответ на вопрос и им всего лишь интересно в камо направлении я буду по этому вопросу рассуждать - по-моему вполне даже нормально, и уж всяко лучше чем у чела с 15+ лет опыта в C# в девятисотый раз спрашивать: "Чем абстрактный класс отличается от интерфейса".
vitaly_il1
17.01.2023 11:43"We're all someone's 'noob'.
I think we programmers have created a culture where you're supposed to know everything, and asking the wrong question might make you look stupid.
As a result we ask less questions, and spend too much energy trying to look knowledgeable instead of learning from each other.
The best programmers I know says 'I don't know' all the time"
Solomon Hykes, Founder and CTO at Docker
Mirzapch
17.01.2023 04:34+6Ох уж эти анкеты... Сначала отправляешь свою, потом у работодателя заполняешь от руки. А интервьюер, даже не читая, пытается задавать те же вопросы по третьему разу.
panzerfaust
16.01.2023 16:46+30Многие программисты чувствуют себя эдакими Гэндальфами, сдерживающими тьму
Подтверждаю, сам прошел через этап, когда на собесе был азарт задать настолько тяжелый вопрос, чтобы у кандидата позвоночник в трусы высыпался. К счастью, дурь в голове недолго продержалась. Тут же все как в жизни: завести друзей проще, если ты приятный и интересный человек, а не конченый жопошник.
Keeper9
16.01.2023 16:53+20Ваши собеседования напоминают Стэнфордский тюремный эксперимент на минималках.
nronnie
16.01.2023 16:55+27Чего кандидату удалось добиться, пока он работал в прошлой команде? Какой вклад он вносил?
Вот от таких вопросов действительно звереешь. Да работу,
*ять, свою делал - вот весь мой вклад и достижение :-DНо, статья хорошая - сам хорошо помню каким на самом деле был удаком когда по-молодости собеседовал других людей. :-D
rjhdby
16.01.2023 17:16+49Ну так и расскажи, что делал. Будет за что зацепиться интервьюеру, развить разговор.
А то вот приходит такой:
- Расскажи, что делал?
- Работу работал!
- Эм.... Ну ок, давай, я хз, про обход дерева тогда чтоли...vvbob
16.01.2023 21:43+14Данные из DTO в DTO перекладывал и легаси говнокод еще больше заговнокоживал, охренеть достижение, это если по честному, без всей этой успехо-успешной тряхомудии, не прикольно, но нужно было. И что, скажешь так, и тебя нахрен пошлют - кому нужен такой специалист.
glebiuskv
16.01.2023 22:29+4А с чего он взял, что умеет что-то ещё, если больше ничем не занимался. Если ищут сеньора, а пришел вот такой перекладчик ДТОшек, то зачем мучить и его и команду окуная в задачи, с которыми он не сталкивался и близко? А впрочем даже это перекладывание можно подать по разному, мол поэтому и ухожу, что чувствую, что перерос эти задачи.
vvbob
17.01.2023 00:03+33Ага, видал я такие команды, на собесе понтов полно, вопросы все про солид и всякие там суперпрактики, а потом в код посмотришь - а там методы по пять тысяч строк, перекладывание дто, и концентрированная боль, вперемешку с лютыми багами. Но на собесе прямо - парни делают будущее с успешным успехом!
nronnie
17.01.2023 01:04+7Ага, причем такое ощущение, что есть корреляция - чем больше тебе на собеседовании задают хитровывернутых (и имеющих, обычно, очень малую практическую ценность) вопросов типа: "Как поменять символ в строке не содавая новую строку", тем больше DTOшек по пять тысяч строк каждая потом придется перекладывать.
vassabi
17.01.2023 01:11+4коллега рассказывал что у него на предыдущем месте работы был апофеоз такого подхода: на собесе долго гоняли по С и многопоточности, да многопроцессорности, плюс кешам процессора и как писать код, чтобы использовать эти все тонкости.
А потом после найма - он месяц сидел и запускал билды (ему сказали "ну, тут пока тасок нет, пойди посмотри что там с билдами") при помощи bat файлов, доставшихся в наследство (он с горя даже начал их рефакторить, но довольно быстро понял - что там к чему и уволилися)vvbob
17.01.2023 08:55+3У меня было - нанялся в один известный банк. На собесе тоже всякое хитрое спрашивали, и про многопоточность и про паттерны и много чего еще. Начал работать - даже вроде пилим новый проект, легаси ноль, должно вроде было-бы хорошо быть, но на проект набрали массу джунов чуть выше нуля (самая ядреная хрень, как по мне - человек уже почувствовал Силу, но правильно применять ее не умеет) и такая-же околонулевая организация процесса, кодревью по факту только в нашей команде и был, только у нас и джунов не было..
В итоге код проекта был - мама дорогая.. кровь из глаз, и вполне ожидаемо все сроки продолбали, проект в итоге прикрыли. Успешные рукамиводители успешно катапультировались достигать новых высот на других проектах, в провале обвинив тупых и ленивых разрабов, а программеры - кто уволился, кто потянулся говнокодить дальше, в других проектах.
nronnie
17.01.2023 11:18+5кодревью по факту только в нашей команде и был, только у нас и джунов не было.
Прикольная, наверное тема - синьоры ревьюят код друг друга, а джуны коммитят вообще без ревью :))
DMGarikk
17.01.2023 11:25Это я в одной крупной и довольно известной штатовской компании работал, не из РФ что карактерно но с СНГшными корнями
вот там вообще ад и израйль был, один департамент и кодревью и архитектурный комитет и согласование с владельцами проекта… а другой департамент в ту же репу льет без ревью и деплоит в прод сразу… ну типа норм… там такое в коде встречалось… мамадорогая…
хотя оглядываясь назад понимаю что их спасало то что 95% персонала у них — сеньоры, хотя мешанину в репах за свои 10+ лет жизни они наплодили капец
vvbob
17.01.2023 12:01+2Да уж, "прикольно", особенно когда твой может и не идеальный код, потом какой-либо джун без всякого ревью раздербанит как бог черепаху, и все ломается :)
ЗЫ помню, когда мы пытались донести до рукамиводителей мысль что как-то это не правильно, что все фигачат код без ревью, он послал нас практически буквально сказав - "Кончайте страдать херней со своими ревью, у нас проект в срок не укладывается, еб..те как все, да побыстрее"
DMGarikk
17.01.2023 12:23+4А меня в другой депертамент перевели за то что я на согласование MR скинул безопасникам и они его приостановили…
и РП и руководитель департамента меня буквально убить хотели за срыв срока на две недели… представляете ПОСМЕЛ задержать релиз по причине того что отправил на согласование очень спорного mr безопасникам (которые его завернули кстати на доработку)… охренеть, во я смеялся тогда
vvbob
17.01.2023 13:16В том проекте до безопасников так и не дошли, хотя такой этап там был обязательным, но руководители, похоже, рассуждали что - ну, как-либо там проскочим.. наверное :))
nronnie
17.01.2023 13:22+7Кончайте страдать херней со своими ревью
Я так думаю, после такого стоит сдуть пыль с резюме :)
У меня примерно следующий стандартный список вопросов по коду когда я собеседуюсь:
Как относятся к warning-ам в коде?
Используют ли автоматизированный CA/SA (анализ кода и стиля)?
Пишут ли юнит-тесты, и делается ли анализ покрытия для них?
Как работают с ветками Git, есть ли код-ревью?
Как работают с СI/CD?
no111u3
18.01.2023 02:50+3У меня была история что на одном из собесов для очень серьёзного заказчика (как его тогда описали) спрашивали про парсеры и грамматики, свой язык для каких-то там запросов куча связанного с этим добра и терминологии, которую я старался изучал, даже для себя написал небольшой проект. А что по итогу: сидели почти целый год переносили старый легаси на новые рельсы(c С++98 и старше на С++14) в облако плюс переписывали билд с Make+Bash на CMake.
iboltaev
17.01.2023 10:22ну так потому и спрашивают про солид и суперпраактики - потому что сами не умеют и нужен кто-то, кто умеет)
nronnie
17.01.2023 00:07+7А что такого особого в энтерпрайзе разрабатывает сеньор? На деле, джун просто перекладывает DTOшки, мидл может это делать без стороннего надзора, а синьор еще сам при этом знает какую DTOшку куда переложить. Вот и вся разница :)
vvbob
17.01.2023 08:58Синьор научился работать с каким-либо фреймворком - который большую часть работы по перекладыванию берет на себя, и умеет пинать этот фреймворк в правильные места, если там что-то засбоило. Этим умением он страшно гордится, и демонстрирует его на всех собесах, топя соискателей, которые по какой-то причине так глубоко в эту тему не погружались. :)))
Tony-Sol
18.01.2023 02:54+1кажется что это как раз тики еще мидл
vvbob
18.01.2023 08:50Ну, так-то стандарта устоявшегося не существует, кого миддлом считать, а кого синьором, что и приводит к тому, что и не такие чудесные "синьоры-помидоры" встречаются, опять таки - Даунинга, с его другом Крюгером никто не отменял, чел сам может себя вполне искренне считать крутым спецом, хотя и на миддла еле-еле тянет.
DMGarikk
17.01.2023 10:45+16А что такого особого в энтерпрайзе разрабатывает сеньор?
сеньор нужен в ентерпрайзе чтобы суметь филигранно воткнуть костыль в антиквартный монолит чтобы он не развалился и новая фича заработала. у джунов с миддлами может просто квалификации не хватить сделать такое когда кодовая база тянется из 80х годов.HollowPoint
18.01.2023 06:22+3Золотые слова. По идее все вопросы на собеседовании с алгоритмами и прочим подходят для стартапа, где нужно писать много, эффективно и с архитектурой с нуля. Когда проекту уже года два, все это резко заканчивается и начинаются задачи вида: хотим, чтобы пользователь ещё передавал в форме вот это поле, а если поле принимает вот такие значения, то тогда хотим, чтобы произошло вот это и куда-то отправился email. При этом обычно уже и отправка написана, и фрэймворк рулей и правил какой-то сделан. Обычно новым if else, или дополнительным subscriber все решается. Удача, если за год что-нибудь рекурсивное приходится написать или начать новую иерархию классов. Конечно, можно ещё рефакторить, но зачастую это может требовать много тестирования, а на это могут и не давать ресурсов. Поэтому единственный вариант всегда уметь эти знания применять - ходить по стартапам, начинать там все, а как идёт рутина - валить в новый стартап. Ну либо параллельно с работой делать пет-проекты
vvbob
18.01.2023 08:55+3Кстати да, и у такого синьора обычно как раз самые сложности с ответом на вопрос "что особо запоминающееся и крутое вы делали на прошлом проекте". Ну не скажешь же на полном серьезе что самая крутизна - это раскрашивание поля в интерфейсе, выводимом через легаси фреймворк, кривой и глючный, который не поддерживает такую фишку без разных хитромудрых хаков (реальный случай из практики). Оно может и было реально очень сложно и даже интересно - нагнуть кривой фреймворк что-бы он таки сделал то что нужно, но человеку со стороны это сложно понять, потому что звучит это как какая-то примитивная задачка для джуна, если не знаешь всего контекста.
khajiit
18.01.2023 15:32Хмм… тут, скорее, не абстрактный сеньор нужен, а человек, знающий проект как токарь свои три пальца. В смысле, пару раз успешно обфакапившийся, и знающий не только куда и как можно тыкать, а еще и куда и как тыкать не нужно.
Удовлетворяющий этим требованиям автоматически будет сеньором, просто в силу того, что ведет этот монолит значительную его (монолита) часть жизни.
Но это будет не тот сеньор, который придет на собеседование.DMGarikk
18.01.2023 18:07+1Хмм… тут, скорее, не абстрактный сеньор нужен, а человек, знающий проект как токарь свои три пальца
И где вы такого найдете в проекте которому 30+ лет? причем в кровавом ентерпрайзе?
если взять миддла с рынка труда, он все завалит или будет очень сильно тупить.
Я на самом деле это довольно недавно осознал на своем опыте. поработав в одной штатовской конторе, там кодовой базе лет 12 было, но несколько раз довольно сильно менялась команда.
И приходя туда сталкиваешся с сотней микросервисов и огромным монолитом, и никто не знает полностью как оно работает и никто не напишет ТЗ и документация если и есть то устарела… и приходится самому изучать огромные flow бизнеспроцессов вместо того чтобы «просто код писать»
там практически все разработчики были сеньорами, а если попадались миддлы, мне приходилось самому разбираться как работает, дополнять им ТЗ и искать людей которые подскажут. потому что они откровенно не тянули такое.
сейчас я вот попал в контору где персонал в основном миддлы, и мне приходится прямо разжевывать задачи чтобы они могли чтото делать, тут сервисы не на столько старые и большие но я начал очень отчетливо осознавать разницу миддл-сеньорarheops
18.01.2023 23:04Да в большинстве проектов полностью никто не знает, как оно работает.
А в документации — факты устаревшие на пару лет.
Очень мало проектов, где все прекрасно
LLIypLLIuk
18.01.2023 11:27+2легаси говнокод еще больше заговнокоживал
На самом деле есть такие проекты, где прям такие люди и нужны, а не вот это всё микросервисное смузи :)
botyaslonim
19.01.2023 00:14Ну так если на новой работе тоже DTO-шки надо перекладывать, почему не рассказать подробнее, как умело их перекладывал на прошлой?
Brrastak
16.01.2023 17:18+5Вот да. Всегда непонятно, что тут можно ответить
event1
16.01.2023 17:39+7создал приложение для того-то и сего-то
пофиксил 100500 багов
оптимизировал что-то эдакое
Wesha
17.01.2023 00:54+4Вообще-то "создал-пофиксил-оптимизировал" — это как бы работа каждого первого программиста.
А рассказать, что конкретно создал-пофиксил-оптимизировал — обычно NDA не велит.
Wendor
17.01.2023 08:21+14Создал - рилтайм обмен страницы с сервером через ws. Поднял socket.io и т.д. Оптимизировал этот обмен. Уперся в производительность socket.io, переделал на какую-нить центрифугу, вынес логику в отдельные воркеры и т.д.
И nda не нарушил и вроде рассказал чем занимался, а интервьювер прикинул примерный бэкграунд сопутствующих этому задач, сделал выводу, спросил про какие-либо моменты.
PsyHaSTe
17.01.2023 15:06+2> Приложение начало падать, написал обработчик ошибки который в момент ООМ вызывает процдамп и снимает снапшот памяти перед падением, через виндбг ковырялся в дампе, через какое-то время наткнулся на большие обьемы внутренних структур ормки, заметил, что кэши не сбрасываются и приложение утекает, выследил замыкание которое неявно зацепляла контексты ОРМ на GC root, переписал его так, чтобы не захватывать в контекст замыкания контекст ормки (чтобы гц мог его удалить) и приложение падать по ООМ перестало.
Как по-вашему, можно какой-то вывод об опыте кандидата по такому рассказу понять? И сколько пунктов НДА могло бы тут быть нарушено?
Dolios
16.01.2023 18:51+22Я обычно отвечаю, чем именно я занимался. Всегда непонятно, почему у людей, которые реально что-то делали, а не самозванцы, возникают проблемы с этим одним из самых простых вопросов на собесах.
Brrastak
16.01.2023 19:25+4Ну, закончили проект, запустили в серию. Ну, я тоже там неплохо потрудился. Но где здесь эти самые "достижения", откуда я их возьму?
Dolios
16.01.2023 19:53+22Ну, я тоже там неплохо потрудился… Но где здесь эти самые "достижения", откуда я их возьму?
Вас не о геройских подвигах спрашивали, а о вашем вкладе в проект. Вас там было 15 человек, все пилили что-то, что пилили именно вы?
shiru8bit
16.01.2023 19:45+5Потому что проекты приходят и уходят. Сделал, выкинул из головы, думаешь о новом, и так сотни раз, и это всё превращается в поток, о котором сильно не задумываешься. Рассказать в относительных подробностях получается только о том, что делаешь прямо сейчас. Но если прямо сейчас ты ищешь работу, возникает некоторая проблема. И сама постановка вопроса 'чего удалось добиться' довольно странная. Дали задачу - сделал задачу, чего добился? Выполнения задачи?
Dolios
16.01.2023 19:55+12и так сотни
Фигасе у вас карьера. Я за 20+ лет менее чем в 10 проектах поучаствовал и в каждом помню, чем занимался, даже в тех, что делал 20 лет назад. Расскажите тогда про эти сотни, это же реально интересно послушать.
shiru8bit
16.01.2023 20:13Для фрилансера 10 проектов за 20 лет было бы катастрофой. Да и для постоянной работы это очень мало, как мне кажется - за 20 лет у меня определённо было на порядок больше 10 проектов (игры, системные тулзы, медиа, интеграции платёжных систем, драйверы, железки, саундтреки, всякая фигня). И как бы, вы просите рассказать в ответ на обоснование, почему рассказать сложно.
Dolios
16.01.2023 20:23+4Мы тут вроде про наемного работника, а не про фрилансера. И о последних 2-3 проектах (или о любых запомнившихся) рассказать можно, как по мне. Если человек говорит, что он сделал сотни проектов, но не может рассказать ни об одном, это очень странно, как по мне. Конечно, я, как положено джентельменам, поверю ему на слово, но потом обязательно дам ему пару задач, чтобы у нас было, что обсудить предметно.
shiru8bit
16.01.2023 20:40Наёмные работники и фрилансеры - это одни и те же люди. Кто-то уходит с постоянной работы, кто-то приходит к ней, кто-то всегда совмещает (мой вариант).
(очень интересно оказалось не очень интересно, удалено)
Dolios
16.01.2023 20:51А сколько людей вы отсобеседовали, какой процент наняли и сколько из нанятых прошли испытательный срок?
люди видели мои прошлые работы в требуемой им узкой области
Ну мы тут вроде не про вас, а про индустрию в целом. Никто не идет на гитхаб смотреть кто там чего понаделал, когда ему надо мидла нанять в команду джейсоны перекладывать.
shiru8bit
16.01.2023 21:02+1Сегодня вечер странных вопросов? Ну каким боком релевантен мой личный опыт найма, и что вообще подразумевает, что я кого-то нанимаю? 'Собеседовал' я человек 30 (в основном смотрел портфолио и задавал по нему вопросы), нанял человек 5-7, никаких испытательных сроков - заранее было известно, на что человек способен.
Я вам говорю, что таки идут, а вы говорите - никто не идёт. Ну, видимо вам виднее за индустрию.
arheops
16.01.2023 22:06+2Я за 20 лет поучаствовал приблизительно в 400-500 проектах. У меня только отзывов под 300.
Оно, наверно, зависит от того, сколько времени каждый проект.valery1707
17.01.2023 10:45+11Похоже что у фулл-тайм работников и у фрилансеров несколько разные полнимание проекта:
"400 проектов за 20 лет" это "20 проектов в год" это почти "2 проекта в месяц"
у меня "проект" легко может занимать год, а чаще больше - с учётом развития после внедрения и прочего
shiru8bit
17.01.2023 14:59Дело не в фуллтайме. Проекты бывают разного калибра. Сделать интеграцию систем, вот API, срок месяц - типичная задача, это проект, с началом и концом. И в рабочем порядке таких несколько в год.
PsyHaSTe
17.01.2023 15:09+1Обычно есть некоторые запоминающиеся моменты в любой карьере. А то получается, проработал 20 лет программистом не приходя в сознание, от момента посадки за монитор до вставания за покушать вечером темный экран, с перерывами на почитать хабр)
valery1707
17.01.2023 19:09+3Дело к тому что называть "проектом".
У меня не бывает "проектов" вида "интегрируем X с Y" - это именно задача в рамках работы на проекте и, конечно, у задачи будет начало и конец.
И таких задач будет много и длительность у них будет находится в промежутке от "день" до "пара спринтов", но все они - в рамках одного проекта.
Если все такие "задачи" интепретировать как "проекты", то придётся всю джиру перелопачивать и тогда тоже будут "сотни проектов в год".
Но так как у меня есть именно проект и время жизни у него исчисляется в месяцах, то именно его я и буду описывать в резюме.А вот на фрилансе ситуация с множеством задач в рамках одного длительного проекта это скорее исключение чем правило - что-то подкрутили "там", потом повертели "тут" и назвать это одним "проектом" нельзя вот и получаются большие цифры.
shiru8bit
17.01.2023 19:30-1Заказчик у 'работы' разный, содержание её разное, условия разные, работа с командами зазкачика - люди разные, продукт для интеграции один из нескольких разных, которые разрабатывают внутри компании также разные люди. Все признаки проекта, и именно так оно и проходит по организации работ. Трудновато назвать 'проектом' всю деятельность компании на протяжении 20+ лет.
e_Hector
18.01.2023 12:02+2Трудновато назвать 'проектом' всю деятельность компании на протяжении 20+ лет.
Отчего же, если компания, например, пилит какой-нибудь продукт?
Условный, JetBrains с их IntelliJ IDEA
progchip666
17.01.2023 10:54Аналогично. Я могу быстро припомнить детели всех своих проекты, но их за 20+ больше 30 наверно и не наберётся. Но всё зависит от того чем человек занимается. Но если как фрилансер решаешь мелкие задачи или сидишь на аутсорте в узкой нише... Работа превращается в текучку.
В этом случае логично было бы рассказывать уже о типичных решаемых задачах.
nameless323
16.01.2023 21:16+3Для этого можно просто обновлять CV по ходу - сделал реально интересную сложную задачу, сразу записал в резюме. Потом как только понадобилось реальное CV, посмотрел, вспомнил все что делал (даже интересные задачи имеют свойство забываться когда нужно их вспомнить), оформил в CV и перед собеседованием напряг память и подумал какие проблемы возникали и как решал.
nameless323
16.01.2023 21:12+1Такое наверное бывает если предыдущий работодатель настолько сковал NDA что по нему просто не можешь ответить чтобы не раскрыть какой-то внутренней информации, если такой проблемы нет, то обсуждение предыдущего опыта считаю самой интересной частью интервью будучи как и интервьювером, так и тем, кого интервьювят.
IronKaput
18.01.2023 00:17+3Кандидату самому неинтересно рассказывать, чем он занимался. Он занимался рутиной в проекте с сомнительной пользой, использовал костыли, плодились баги, фиксил баги другими костылями.
Да работу,
*ять, свою делал - вот весь мой вклад и достижение :-Dvvbob
18.01.2023 09:10+1А правда жЫзни состоит в том, что чаще всего и требуются люди, которые могут заниматься рутиной, не слишком от этого переживая, звезды это товар штучный, да и не везде они объективно нужны, им быстро надоедает "перекладывать данные в DTO", но ведь кто-то должен и этим скучным делом заниматься.
M_AJ
18.01.2023 09:14Ну может они пилили онлайн-казино, работали в криптостартапе, в разработке сайта для взрослых или игры Raid:Shadow Legends и не хотят об этом говорить, не зная как собеседующий отнесется к такому опыту.
botyaslonim
19.01.2023 00:13Почему звереешь? Если человек вообще никак не рефлексирует свой опыт, это тоже о многом говорит
Ole
16.01.2023 17:27+3В моей практике был случай, когда кандидат озверел от простого вопроса: "что это за собеседование на миддла, где задают ТАКИЕ вопросы?" И.. отказался на данный вопрос отвечать. А потом ещё негативный отзыв написал на сайте для отзывов на компанию, где с ним общались.
just-a-dev
16.01.2023 17:52+3"Этим простым вопросом был алгоритм удаления узла в RBT" =)
Andrey_Solomatin
18.01.2023 01:03Кручу-верчу запутать хочу, дедуша за внука, папа за дядю :)
Было дело на втором высшем писал этот алгоритм для крусовой.
Racheengel
16.01.2023 17:27-7Представляю собеседование на должность хирурга:
- У меня стаж работы хирургом в больнице более 10 лет, также работал военным врачом в Ираке, где приходилось оперировать без подручных средств и без анестезии, и почти все пациенты выжили...
- Хорошо-хорошо, вот вам тестовое задание, удалите-ка аппендицит вот тому дяденьке. И пожалуйста комментируйте каждый ваш шаг.
Но почему-то хирургов так на работу не берут, не правда ли? Моё имхо - технические собеседования на уровень мидл+ не нужны от слова совсем.
stanislavshwartsman
16.01.2023 18:15+37Когда будут тысячи псевдохирургов, которые обивают пороги больниц с офигенным но выдуманными резюме - будут брать на работу именно так.
PuerteMuerte
16.01.2023 18:15+8Но почему-то хирургов так на работу не берут, не правда ли? Моё имхо — технические собеседования на уровень мидл+ не нужны от слова совсем.
Есть огромная разница между программистом и практикующим врачом. Хотя бы в том, если хирург успешно работал хирургом, значит, это само по себе некая гарантия его профессионализма, не говоря уже про аттестации, лицензии и так далее. И то, далеко не всегда, врачей-шарлатанов тоже немало. Если программист работал успешно программистом… ну, по всякому бывает. Нередко на поверку оказывается, что он много чего не умеет из того, что вам требуется. И даже из того, что он написал в своём резюме.Megakazbek
16.01.2023 21:55+3Ну то есть так и получается, что-то типа "большинство программистов не умеет программировать. Иными словами, все, кто ищет работу – круглые дураки, а наша задача – уличить их, преподать им урок, унизить так, чтоб неповадно было."
EugeneH
16.01.2023 23:07+1К слову о хирургах:
jtraub
17.01.2023 09:45+1Сюда же - https://lenta.ru/articles/2018/10/12/konoval/
Про доктора сняли минисериал - https://www.kinopoisk.ru/series/1309543/
Nialpe
16.01.2023 18:18+13Позвольте немного детализировать как выглядел бы технический раунд хирурга в стиле разработчика:
"Вот вам игрушечный набор "Юный доктор", удалите аппендицит у этого плюшевого медведя, и рассуждайте вслух."
d2d8
16.01.2023 19:45+3Хирурга можно попросить заштопать курицу или виноградинку если уж проверять.
arheops
16.01.2023 22:07+2Живую курицу и без анестезии и фиксации.
Так оно ближе к тому, что просят как «тестовое».Ksoo
17.01.2023 13:59+1В условиях есть чтобы курица осталась жива после операции?
Wesha
17.01.2023 20:39+2Условия, не оговорённые при постановке задания, традиционно оставлены на усмотрение исполнителя!
wadeg
18.01.2023 00:08Что в ТЗ прописано, ровно то и делаем. Фирме не нужны фантазеры, мы вам перезвоним.
germn
16.01.2023 19:38+8технические собеседования на уровень мидл+ не нужны от слова совсем
Позвольте, не соглашусь. В своё время провёл огромное количество собеседований. Приходят люди с фантастическим резюме, неплохо рассказывают про проекты, над которыми работали, их архитектуру. А когда дело доходит до кода, не в состоянии решить элементарную задачу. Причём, правда, элементарную: никаких алгоритмов, никаких структур, никаких специфический особенностей языка, никаких требований "идеального" решения. Просто банальная рутинная задачка уровня junior, чтобы посмотреть, как человек думает, но некоторые "синьоры" со звёздным резюме не могут решить. Пытаются, но правда не могут. Попробуйте ради интереса побыть интервьюером на мидл+: думаю, вскоре посмотрите на процесс собеседования сильно по-другому.
Norgorn
16.01.2023 21:05+1А можно пример задачи? А то бывают вроде простые, но в стрессе и без опыта прохождения можно хорошо так затупить или уйти не в ту сторону.
tuxi
17.01.2023 00:14Могу предложить шутливую задачку
"закомментируйте" (исключите выполнение) кусок кода не используя символы выделенные языком программирования для оформления комментариевd2d8
17.01.2023 00:32+3Что-то в стиле if 1=2?
arheops
17.01.2023 01:08+2Вот, уже к вам сразу вопрос, почему не if False.
Видите, нашлось о чем поговорить на собеседовании.tuxi
17.01.2023 01:16продолжаем разговор) "напишите функцию сложения трех целых чисел."
nronnie
17.01.2023 01:23А в чем прикол (про ф-ию сложения)? :))
BugM
17.01.2023 01:26Переполнение
tuxi
17.01.2023 01:411) Таки как будем проверять аргументы? 2) А если нам нельзя кидать эксепшен и надо все же сложить и отдать хоть как то результат?
BugM
17.01.2023 08:58+1По бизнес логике. Максинты и около часто запрещены бизнес логикой.
В общем случае вернуть тип побольше и не париться. Если там длинная медленная арифметика получается - вам к тому кто так задачи ставит. Может она там и нужна на самом деле.
nronnie
17.01.2023 03:27-1А, ну в шарпе переполнения не будет (по умолчанию). Правда и результат будет странноватый. Тут уже надо уточнять требования к ф-ии - должна ли она кидать исключение, возвращать странный результат, или поступать еще как-нибудь.
mayorovp
17.01.2023 08:53Переполнения не может не случиться при соответствующих исходных данных. Есть лишь варианты что в случае переполнения делать — кидать исключение или возвращать "странный результат".
nronnie
17.01.2023 11:54Да, но это уже и есть "уточнение требований", потому что делать сразу и то и другое не получится. Кроме того можно еще вообще слегка поменять API и реализовать например так:
// Результат всегда будет без исключения и точный // а там вызывающий пускай сам решает что с ним делать. public long Sum(int x, int y, int z) => (long)x + y + z;
Или так:
// Пускай вызывающий сразу решает устраивает ли его исключение // или он хочет всегда результат, хоть и "чудесатый" public int Sum(int x, int y, int z, bool throwOnOverflow) { if(throwOnOverflow) { checked { return x + y + z; } } return x + y + z; }
ksbes
17.01.2023 12:12+3Булевый параметр!? За такое по рукам! По рукам! Линекой! :)
Вот и не прошли бы вы у нас коде-ревью! :)
З.Ы. булевы параметры — правда зло, лучше вместо них enum'ы использовать. Или метод перегружать (SumWithOverflowCheck — простите, я в душе джавист). Иначе часто при вызове метода вообще не понятно что они значат. Не всегда смотришь код с линтером.
nronnie
17.01.2023 13:03+4Иначе часто при вызове метода вообще не понятно что они значат.
Ну в шарпе с этим проблем нет, потому что можно просто писать так:
var result = calc.Sum(1, 2, 3, throwIfOwerflow: true);
Лично я так всегда и делаю, и не только для bool, а вообще всегда когда просто по литеральному значению параметра сложно предположить его смысл.
nronnie
17.01.2023 13:25-5лучше вместо них enum'ы
Инамы - зло (я не знаю как в Жаве, но, по крайней мере так как они сделаны в Шарпе).
Sild
17.01.2023 14:35Чтобы этого избежать, можно в вызов подставлять название переменной:
Sum(1,2,3,/*throwOnOverflow=*/ true)
Плодить по сущности на каждый чих - и правда очень по-джавистски =)
nronnie
18.01.2023 01:18-1В шарпе enum-ы это по сути всего лишь глобальные целочисленные константы с небольшим "сахарком". Совершенно не объектно-ориентированная и не расширяемая штука, которая, к тому же, если где-то сохраняется или передается как число (что обычно по умолчанию), то чревата runtime ошибками. Кошерная ОО-альтернатива enum-ам это предопределенный набор полиморфных объектов и использование паттернов типа "стратегия" или "состояние". Например, в случае нашего складывателя чисел могло бы выглядеть примерно так:
public abstract class CalcStrategy { public readonly CalcStrategy Checked = new CheckedCalcStrategy(); public readonly CalcStrategy Unchecked = new UncheckedCalcStrategy(); public abstract int Sum(int x, int y, int z); } public class CheckedCalcStrategy: CalcStrategy { public override int Sum(int x, int y, int z) => checked(x + y + z); } public class UncheckedCalcStrategy: CalcStrategy { public override int Sum(int x, int y, int z) => unchecked(x + y + z); } public class Calc { public int Sum(int x, int y, int z, CalcStrategy calcStrategy) => calcStrategy.Sum(x, y, z); }
mayorovp
18.01.2023 11:16+3Вот именно, это набор констант в своём особом пространстве имён, который без дополнительных приседаний нельзя перепутать с другим таким же набором.
Ровно то, что требуется чтобы заменить булев параметр, выиграв в самодокументируемости и не проиграв при этом в производительности.
А всяческие стратегии складывания чисел как раз лютый говонокод. Мало того, что это тупо медленно — так ещё и возможность расширения тут нафиг не нужна. Возможных способов обработать переполнение есть ровно три штуки (заворачивание, насыщение и исключение), что заметно меньше общего числа возможных арифметических операций. Не говоря уже о том, что вы умудрились вынести из метода во внешнюю стратегию абсолютно всю логику.
nronnie
18.01.2023 12:22-2который без дополнительных приседаний нельзя перепутать с другим таким же набором.
Достаточно всего лишь явного приведения типа, и, о, сюрпрайз, - в переменную enum типа, оказывается, можно записать вообще любое самое бредовое значение безо всяких проверок.
возможность расширения тут нафиг не нужна.
Да, но во первых это приведено как пример, во вторых с KISS никогда не стоит скатываться в "нам это пока что не надо, поэтому сделаем все одним статическим методом Main()" - потом для "надо" потом может быть поздно и надо будет вообще все переделывать (на что обычно никогда нет ни денег ни времени, и говнокод отправляется в бесконечное свободное плаванье "Летучего Голландца").
Ровно то, что требуется чтобы заменить булев параметр, выиграв в самодокументируемости и не проиграв при этом в производительности.
Предлагаю тогда вообще отказаться от типа
bool
, заменив его везде наpublic enum Bool { Yes, No }
Вот уж это будет жесть. Можно сразу на The Daily WTF c этим идти :)
умудрились вынести из метода во внешнюю стратегию абсолютно всю логику.
"Стратегия" это и есть логика выбираемая во время выполнения приложения.
Стратегия (англ. Strategy) — поведенческий шаблон проектирования, предназначенный для определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет выбирать алгоритм путём определения соответствующего класса. Шаблон Strategy позволяет менять выбранный алгоритм независимо от объектов-клиентов, которые его используют.
Просто из личного опыта - везде где enum-ы там, в итоге, хоть сколь-нибудь сложный код превращается в чудовищную лапшу из ветвлений.
mayorovp
18.01.2023 13:04Предлагаю тогда вообще отказаться от типа bool, заменив его везде на [...]
Тип-перечисление Bool имеет все недостатки "голого" булева типа — отсутствие семантики.
"Стратегия" это и есть логика выбираемая во время выполнения приложения.
Ага, только требовалось-то выбирать логику обработки переполнения, а не логику сложения трёх чисел...
Просто из личного опыта — везде где enum-ы там, в итоге, хоть сколь-нибудь сложный код превращается в чудовищную лапшу из ветвлений.
Код сложения трёх чисел никогда не станет сложным.
nronnie
18.01.2023 18:19Тип-перечисление Bool имеет все недостатки "голого" булева типа — отсутствие семантики.
В том и дело, что любой enum имеет тот же самый недостаток.
Код сложения трёх чисел никогда не станет сложным.
Код сложения трёх чисел приведен просто как пример замены enum-а c ветвлениями паттерном "стратегия". Если бы это, скажем (из моей реальной практики) был код для интеграции с полутора десятками совершенно разных сторонних сервисов, где у каждого свой АПИ и форматы входных/выходных данных), то это бы воспринималось уже по-другому.
mayorovp
18.01.2023 18:27В том и дело, что любой enum имеет тот же самый недостаток.
Неа, не любой. Смотрите фокус:
enum OverflowHandling { Wrapping, Exception, //Saturation, }
Оба значения имеют свою семантику, вы никогда не перепутаете какое значение какой режим означает. В отличии от перечисления Yes/No.
Если бы это, скажем (из моей реальной практики) был код для интеграции с полутора десятками совершенно разных сторонних сервисов, где у каждого свой АПИ и форматы входных/выходных данных), то это бы воспринималось уже по-другому.
Ага, но тут требуется сложить три числа. И потому воспринимается оно именно так как воспринимается.
vvbob
17.01.2023 09:42+8У меня обычно первый вопрос, который возникает при озвучивании таких задачек на собесе - нахрена! Вам нужен специалист, который будет работать на необитаемом острове, куда слеши со звездочками привозят раз в год вертолетом, и их там жуткий дефицит?
Areso
17.01.2023 11:22сортировка вам тоже доступна по .sort() , однако просят написать свою сортировку через раз.
vvbob
17.01.2023 11:50+2Так я и насчет сортировок такого-же мнения придерживаюсь, после нескольких лет работы уже хрен вспомнишь этот алгоритм, если ты, конечно, не разработчик библиотек сортировки. Какой полезный навык тут проверяется? Умение в стрессовой ситуации вспомнить сортировку пузырьком? Или, опять-же, у них там строгий запрет на использование сортировок из сторонних библиотек?
IronKaput
19.01.2023 00:52+1Это вопрос на алгоритмы. Но получается так, что задают вопрос на знание существующих алгоритмов, кандидату не нравится. Вопросы на создание алгоритма, тоже не нравится. Тестовое, не нравится. Может вообще не проверять алгоритмы или у вас есть универсальный способ?
PS ИМХО, сортировку пузырьком пора бы выучить и зазубрить всем программистам, ищущим работу.
nronnie
17.01.2023 12:24-1С сортировкой можно тоже более-менее интересные вещи придумать. Например, написать сортировку ну очень большой (допустим, даже не влезающей в память) последовательности целых чисел, если известно, что все они лежат в диапазоне от 0 до 99, или та же самая ситуация, но известно что среди этих чисел много одинаковых (скажем, для конкретики, среди них не более 10^3 уникальных значений).
vvbob
17.01.2023 13:13+5А можно дать соискателю шахматные задачки порешать, примерно такая-же польза, задача абсолютно оторванная от реальных задач, которые придется решать на проекте, типа на остроту мозга.. А еще можно задачки на аналитическую геометрию, или загадки позагадывать, типа "зимой и летом - одним цветом".
Keeper9
17.01.2023 13:23В гугле одно время так и делали.
vvbob
17.01.2023 14:51Но уже давно перестали, а у нас нет-нет да и спросят, зачем люки круглые.. :))
developer7
17.01.2023 15:26Потому что решётки для ливнёвки прямоугольные ))) Баланс в природе — так сказать )
M_AJ
18.01.2023 09:32+3Я всегда думал, что крышки для люков круглые, потому, что сами люки круглые и было странно закрывать круглые люки квадратной крышкой :)
vvbob
18.01.2023 10:09У меня самая дичь была, когда меня на собесе в самом конце, после прохождения всех технических этапов (было два собеса), послали нахрен после того как я прорешал кучу таких вот "круглолюковых" задачек и меня попросили нарисовать домик, я нарисовал, после чего начали доскребываться почему именно такой, почему с трубой.. честно говоря меня к тому моменту все это вконец уже задрало, и видимо я сказал что-то не по скрипту..
developer7
18.01.2023 13:20Эмодзи рисуют браузеры. И каждый браузер рисует их по своему. У меня в мозиле(win) тоже дом без трубы.
nronnie
18.01.2023 12:55+1Вообще, по-моему, Спольски как раз про домик писал. А его вряд ли можно записать в собеседователи-неадекваты. Суть в том, что кандидата просят нарисовать домик, он кидается сразу же его рисовать (с трубой или без), а ему говорят: "Чозанах, нам ведь нужен был домик для многодетной семьи жирафов". Вопрос не на то как кандидат умеет рисовать домики и трубы, а как он подходит к анализу и уточнению требований задачи - бросается, очертя голову, её делать, или станет уточнять нужные детали.
vvbob
18.01.2023 13:01+6Суть в том, что кандидата просят нарисовать домик, он кидается сразу же его рисовать (с трубой или без), а ему говорят: "Чозанах, нам ведь нужен был домик для многодетной семьи жирафов". Вопрос не на то как кандидат умеет рисовать домики и трубы, а как он подходит к анализу и уточнению требований задачи - бросается, очертя голову, её делать, или станет уточнять нужные детали.
Аааа, вот оно что.. ну молодцы они, уделали, победили человека, которому перед этим час выедали мозг загадками стыренными у всевозможных спольских.
Ключевая проблема всяких подобных тестов, в том, что человека ставят в условия экзамена, в котором он по умолчанию ожидает поток оторванных от реальности задачек, и пытаться подловить при этом человека на том, что он не задает дополнительные уточняющие вопросы - ну такое, это уже какие-то взаимоисключающие требования. И другая проблема - если кто-то прочитал о всех этих иезуитских практиках и знает что когда тебя просят рисовать дом, то ты должен доколупаться до вопрошающего со своими вопросами - этот кто-то всегда будет проходить тест, но вовсе не по причине своей дотошности, просто он знает как его проходить.
khajiit
18.01.2023 15:35+1Так без ТЗ результат — ХЗ.
Просили домик — получили домик.А то эта игра прекрасно реверсируется.
Mirzapch
18.01.2023 05:01+3Приезжайте в Ростов, Санкт-Петербург, Череповец. Покажу вам квадратные колодезные люки.
nronnie
17.01.2023 16:34-5При чем тут шахматные задачки. Это элементарнейшие задачи на алгоритм карманной сортировки. Я конечно очень даже за то чтобы ИТшники получали много-много денег, но просить 4К евро (300К рублей) на руки и про неё (сортировку карманами) не знать это уже я вообще не знаю что. Скоро наверное начнут приходить люди не отличающие компилятор от интерпретатора со словами что "это оторвано от реальных задач".
vvbob
18.01.2023 09:27+1А в чем проблема с "получением 300 на руки и не знанием карманов"? Фирма платит мне за проделанную работу, а не за доскональное знание алгоритмов из толстых книжек. Зарплата это всегда про деньги, бизнесу не интересно какие мудреные алгоритмы вы натренировались реализовывать по толстым книжкам, ему надо что-бы нанятый специалист умел решать насущные и вполне себе приземленные задачи, приносящие ему прибыль. А там у себя дома, вы хоть шахматные задачи решайте, хоть мудреные алгоритмы сортировок изобретайте, это лично ваше развлечение.
Я не против саморазвития, задачки на поддержание мозга в бодром состоянии это хорошо, решать головоломки, реализовывать зубодробительные алгоритмы для развлечения, по фану, это круто. Но отсеивать специалистов по умению раскалывать загадки и по признаку (этот дурак не слышал про сортировку карманами), это как-то мягко говоря странно.
Скажем когда я учился в ВУЗе (ох, блин, как-же это уже давно было :( ), я мог без особых проблем раскалывать довольно замысловатые задачки по комбинаторике. Сейчас попроси меня решить самую простую - я буду день тупить пока не вспомню, потому что в практике оно не надо было и все эти знания ушли куда-то в самые дальние хранилища памяти, и вытащить их оттуда, задача нетривиальная. И если мне на собеседовании зададут такой вопрос, то я со стопроцентной вероятностью ничего толкового не отвечу. Значит ли это что я непригоден к работе программистом? Даже если работа будет заключаться в решении подобных задач - я без особых проблем все вспомню и буду их решать, но проверкой на содержимое оперативной памяти меня отсеют с гарантией.
Areso
17.01.2023 10:08+2обернуть в if (flag) { }
по умолчанию flag = False, ну и считывать это из окружения.
фичефлаги, тогглы так и делаются.
Это было бы моё решение.
Bizonozubr
18.01.2023 13:53Рабочий варинт в АСУТПшном программировании - реально видел такой случай. Суть в том, что одна часть системы была не построенна и логика защит была одна. Как только достроили нужную часть - в коде просто флаг в True возвели и пошла выполняться уже другая логика.
vvbob
18.01.2023 15:30В С для этого вроде есть - #ifdef FLAG ... #endif
так и понятнее и компилятору проще разобраться что к чему
Bizonozubr
18.01.2023 15:32Но нет в ST (я имел в виду язык МЭК https://ru.m.wikipedia.org/wiki/IEC_61131-3)
germn
17.01.2023 14:21+3Задача на питоне, реализовать декоратор, который кеширует возвращаемое значение обёрнутой функции на время:
def cache_result(seconds): # TODO реализовать кеширование обёрнутой функции на время @cache_result(seconds=5) def expensive_function(): # Возвращает результат, который мы хотим закешировать return datetime.now()
Предполагается, что человек, который собеседуется на синьора питониста в состоянии написать декоратор с параметром. Спойлер — половина не в состоянии. Не в состоянии даже написать декоратор без параметра.
Ну да бог с ним, если видно, что кандидат не может написать декоратор, мы пишем декоратор за него и просим продолжить. :
def cache_result(seconds): def wrapper1(func): def wrapper2(*args, **kwargs): # TODO закешировать результат вызова func на время seconds return func(*args, **kwargs) return wrapper2 return wrapper1
Здесь уже нет особенностей языка. Просто напиши минимальную логику, которая кладёт результат и время его получения в словарь, если там пусто или с предыдущего результата прошло больше, чем seconds, и возвращает результат из словаря.
Опять же, даже знать как получить время не нужно. Хотя бы напиши псевдокодом, что должно происходить. Многие не могут.
Часть "со звёздочкой" - это порассуждать, что должно быть ключом словаря при кешировании. Просто хочется услышать, что для разных *args, **kwargs закешированое значение должно отличаться (и рассуждения "а что если аргументы не кешируемые, как их превратить в ключ словаря"), но опять же, многие этого не говорят.
Andrey_Solomatin
18.01.2023 01:17-1Я давал на мидла: Посчитайте количество букв в слове на Питоне. Мидл имел опыт написания ORM запросов в Django. В то что там под капотом он не вникал, в особенности Питона тоже. Решить не смог.
Когда я в ту контору собеседовался на синьёра, то там меня попросили что-то простое типа декоратора и обхода графа с рекурсией и без. В общем суммарно кода строк на 20-30. У меня сложилось впечатсление, что интервьювер заложил на это более получаса и не ожидал, что я минут за 10 справлюсь вместе со всему разговоромаи и уточнениями. В общем на второй трети интервью у него кончились вопросы.
vvbob
16.01.2023 21:50+20Вот это прямо я. Опыта дохрена, резюме неплохо выглядит, везде где работал вроде бы не было каких-то серьезных претензий к моей работе. А когда дают на собесе решить "элементарную задачу" начинаю тупить и нести какую-то хрень. Ну не работается мне в такой обстановке, это для меня как сексом на площади заниматься, вроде "а чё такого, многим даже нравится", но не мое это и не получается и все тут.
Andrey_Solomatin
18.01.2023 01:46+1В стрессовой ситуации вы спускаетесь со своих теоритических навыков до своих практических. Иными словами если вы понимаете декораторы, но не пишите их каждый день, то на собеседовании может случится ступор.
но не мое это и не получается и все тут
Это навык. Если есть желание и время его можно развить.
ivanovdev
18.01.2023 08:07+1Это навык. Если есть желание и время его можно развить.
А зачем его развивать? В работе он не нужен, как и навык езды на одноколесном велосипеде
Andrey_Solomatin
18.01.2023 10:37А зачем его развивать?
Плюси и минусы активно обсуждаются в интернетах, а вот с каким весом их складывать на весы, зависит лично от вашей ситуации.
vvbob
18.01.2023 09:36Я практически каждый день пишу код, но на таких собеседованиях иногда клинит и я просто не могу вспомнить где надо угловые скобки в дженерике ставить, хотя в обычной работе делаю это на автомате, не задумываясь. Тут как в анекдоте про бороду - пока человек не задумывается куда он ее кладет - под одеяло или над ним, все идет хорошо..
Плюс, еще я думаю проблема в довольно жестком временном лимите, собесы обычно не дольше часа длятся, и учитывая что они не только из кодирования состоят, то на эти задачки времени отводится очень немного, не все люди хорошо работают в таких стрессовых условиях.
Это навык. Если есть желание и время его можно развить.
Каким образом - просить кого-то наблюдать за тем как я работаю? Так все равно это не то, стресс не тот.
Andrey_Solomatin
18.01.2023 10:53Каким образом - просить кого-то наблюдать за тем как я работаю? Так все равно это не то, стресс не тот.
Тут несколько факторов работающих вместе, навыки, знания и стрессоустойчивость.
Подумать и вспомнить, это разные действия и занимают разное время.
Начать делать что-то знакомое, это хороший способ себя успокоить.
То есть просто решая задачки в спокойной обстановки вы можете сильно улучшить ситуацию.
Про стрессоустойчивость могу мало что сказать. Можно попробовать делать доклады на работе, на уровне команды или отдела. В общем любое общение которое заставляет вас выйти из зоны комфорта.
panzerfaust
16.01.2023 19:42+6Хорошо-хорошо, вот вам тестовое задание, удалите-ка аппендицит вот тому дяденьке. И пожалуйста комментируйте каждый ваш шаг.
Опустим вопрос, где взять одноразового дяденьку. Но чем плох вопрос "описать ход операции такой-то"? Если хирург общей практики гонит "Да я! Да у меня диплом! Да у меня сертификаты!", но не может описать в деталях простой паттерн, то на кой он нужен-то? В суд потом диплом с сертификатами пойдут или главврач?
Dolios
16.01.2023 20:17+10Хорошо-хорошо, вот вам тестовое задание, удалите-ка аппендицит вот тому дяденьке.
Расскажите в деталях, как вы будете удалять аппендикс (аппендицит — это болезнь, ее нельзя удалить), что вы будете делать в первую очередь, что потом, опишите по шагам, как вы достигните результата, сколько времени потратите.
Далее хирург расспрашивает о доп вводных (чтобы понять, есть ли перитонит и т.д.) и рассказывет о ходе операции.
Хм, постойте-ка, так у нас обычный технический собес получился, если заменить хирурга на программиста, а операцию на, например, микросервис какой-нибудь.
Моё имхо — технические собеседования на уровень мидл+ не нужны от слова совсем.
Много кандидатов на такие вакансии отсобесили? Какой процент из нанятых прошли испытательный срок?
i86com
17.01.2023 01:03+3Хм, постойте-ка, так у нас обычный технический собес получился
Не, это у вас хороший собес получается.
«Обычный технический собес» будет если сказать хирургу-кандидату перечислить названия всех хирургических инструментов по списку из гугла (часть из которых редко используемы, типа ветеринарных, часть — устарели, а часть просто вылетели из головы, так же, как вы сейчас не сможете быстро вспомнить все части речи русского языка), потом погонять его по знанию англоязычных аббревиатур (или, латыни, раз уж разговор про хирурга), а потом дать провести «простую операцию» без инструментов и вводных.klirichek
17.01.2023 08:55Думаю, если у программиста попросить перечислить названия ассемблерных команд какого-нибудь z-80 или msp-430 (ну а что? Онжпрограммист!) - результат будет похожим. У хирурга, в отличие от программиста, цена ошибки может оказаться гораздо выше. Но и сам объект приложения знаний при этом гораздо меньше меняется с годами.
Lissov
16.01.2023 20:27Вы видимо работу хирурга по фильму др.Хаус представляете. Ну там и «пробное задание» можно представить. Но вот только программиста такого уровня тоже нанимают без собеседования, потому что Вы уже знаете, что он умеет.
Нормальные хирурги удаляют сотню по сути одинаковых аппендицитов в год. Уровня джуниора и мидла вообще ничего кроме этого, потому кроме диплома для найма ничего и не нужно. И KPI там вполне понятен. Работу программиста так формализовать совсем не получается.
nronnie
16.01.2023 21:03+10Нормальные хирурги удаляют сотню по сути одинаковых аппендицитов в год.
Ну вот именно, а потом он куда-нибудь приходит, а ему : "Расскажите про ваши достижения на прошлом месте". "За год вырезал 237 аппедицитов." :D У обычного разработчика 99%, и хорошо если не все 100 работы это как раз вот такое вот "вырезание аппендицитов". А вопрос (про достижения) задают так, что можно подумать, что все на работу ходят разрабатывать собственные компиляторы, СУБД, и операционные системы. "На прошлой работе за год разработал 73 контроллера WebAPI, 49 репозиториев к БД, и 63 класса DTO." :-D
panzerfaust
17.01.2023 09:18+3На прошлой работе за год разработал 73 контроллера WebAPI, 49 репозиториев к БД, и 63 класса DTO
Понимаете ли, тут можно юморить и ёрничать, а можно поработать над техникой самопрезентации. Вы же предлагаете людям платить немалые деньги за ваш труд. Но не хотите говорить, а чем ваш труд хорош, кроме количественных показателей.
Ваш труд же привел к чему-то. Например, снизили потребление памяти, упростили сложный протокол, написали киллер-фичу, которая привела новых клиентов. Вот на это и должен быть фокус.
nronnie
17.01.2023 11:03+3Ваш труд же привел к чему-то.
Ну привел. Например, благодаря моему обновлению контроллера заказов клиент теперь может сортировать их не только по возрастанию, но и по убыванию. И это настолько круто, что я теперь на каждом собеседовании об этом обязательно вспоминаю и рассказываю :)
svr_91
17.01.2023 11:39+1На прошлой работе за год разработал 73 контроллера WebAPI, 49 репозиториев к БД, и 63 класса DTO
Ну если вас все устраивает, то может и норм? Просто каждый день сидите и пилите DTO. Без работы, видимо, не сидите, значит процесс собесов работает. А если бы хотели разрабатывать собственные компиляторы, то наверно и в типичном классе DTO чтонибудь необычное бы нашли, о чем можно было бы рассказать на собесе.
Например, на одной из прошлых работ у меня тоже был недолгий период "перекладывания json-ов". Но я решил сделать это "быстро" (в смысле процессорного времени) и упоролся по профайлерам, изучил различные места в коде и библиотеках, которые работают быстрее/медленнее чем нужно, узнал, что существует 2 разных типа парсера json-а (DOM vs SAX) и т.п.
nronnie
17.01.2023 12:31Просто каждый день сидите и пилите DTO.
Так других задач просто нету.
А если бы хотели разрабатывать собственные компиляторы, то наверно и в типичном классе DTO чтонибудь необычное бы нашли, о чем можно было бы рассказать на собесе.
И мне бы на ревью сразу голову оторвали за такое. Потому что я бы и сам то же самое сделал тому, кто для перекладки DTO попытался бы впилить в проект свой собственный компилятор :))
PsyHaSTe
17.01.2023 15:13+3Если по достижениями вы подразумеваете событие не меньше "придумал nginx" то тогда вопрос скорее к вам. Достижение вопрос относительный, для джуна писать год код и не иметь больших претензий на пуллреквестах это достижение. Для мидла оптимизировать какой-нибудь сервис-узкое место на 30% и сэкономить 10к баксов на инфру ежемесячно — достижение. И так далее.
Lissov
17.01.2023 16:06У обычного разработчика 99%, и хорошо если не все 100 работы это как раз вот такое вот "вырезание аппендицитов". ... "На прошлой работе за год разработал 73 контроллера WebAPI, 49 репозиториев к БД, и 63 класса DTO."
И чем он это может подвердить? И сколько багов там нашли, и чем может подтвердить?
Если в больницу придёт
хирургкандидат с дипломом "прослушал теорию вырезания аппендикса", резюме "Вырезал аппендиксы. Много. Все выжили.", на словах "подтвердить не могу, NDA", и "мамой клянусь, умею" - ну да, придётся ему экзамен устраивать чтобы понять, умеет ли он скальпель держать. На самом деле нет, просто нанять того, который с документами придёт.В том и дело, что хирург уже сдает экзамен в медвузе, а потом может подтвердить опыт документально, и этим бумажкам можно доверять... а иначе его можно посадить в тюрьму.
Потому повторю:
Работу программиста так формализовать совсем не получается.
Если думаете что можно, найдите мне описание должностных обязанностей, строго по которым можно уволить программиста (но чтобы и наоборот, не требовало уволить хороших программистов).
TIgorA
17.01.2023 18:49Например по бизнес логике в каждую DTO нужно вставлять имя пользователя и время когда пришло изменение. Делать это лениво поэтому я написал интерцептор, который берет нужные данные из контекста запроса и делает это для всех DTO с нужным интерфейсом.
nronnie
18.01.2023 00:42Не знаю, что у вас за платформа, но у меня это есть готовое в Automapper - достаточно в его конфигурацию добавить несколько строк.
TIgorA
18.01.2023 01:07+1Я ещё помню автомаппер, когда он был статический. Из статического маппинга добраться до логина пользователя который запустил операцию нужно уметь.
Но даже если сейчас он умеет в одну строку важен подход: я увидел возможность улучшить эффективность банальной операции. Это секономит х строчек кода мне и комманде.
nronnie
18.01.2023 01:55Автомаппер еще даже в статические времена уже поддерживал DI. Пишешь кастомный ValueResolver и инжектишь в него то что хочешь. Для описанного случая это тоже от силы пару дюжин строчек кода.
TIgorA
18.01.2023 10:41ValueResolver будет создан в статическом контексте, а нужно брать ид пользователя из контекста авторизации, который PerScope. Для этого есть средсва, но нужно про них знать. Еще я не хочу для каждого нового класса прописывать вручную использование резолвера. Я хочу чтоб как только классу добавлен нужный интерфейс все работало из коробки.
Суть не в конкретном решении, а в том как отличить мартышек от инженеров. Если человек бездумно перекладывает значения из модели в модель и не разу не остановился подумать как сделать это эффективней, то неважно как хорошо он цитирует определения SOLID и KISS.
nronnie
18.01.2023 03:30+2Строго говоря, я бы все-таки не делал это в меппинге вообще. Это часть логики, а ей там не место. Я бы сделал кастомный binder для записи этих значений в модель запроса Web API, а в DTO меппил бы оттуда уже готовые значения. Немного больше кода, но идеологически намного правильней.
vconst
17.01.2023 15:06Нормальные хирурги удаляют сотню по сути одинаковых аппендицитов в год
Чаще всего резать аппендюки и жировики — дают вообще ординаторам, чтобы хирурги не отвлекались на всякую ерундуLissov
17.01.2023 16:10Чаще всего резать аппендюки и жировики — дают вообще ординаторам, чтобы хирурги не отвлекались на всякую ерунду
Про аппендиксы сомневаюсь, но не суть - подставьте в исходное сообщение "язву" и всё так же получаем формализуемую повторяющуюся работу хирурга.
vconst
17.01.2023 16:13Можете не сомневаться, я в одном блоке общаги жил с ординаторами первого года, один анестезиолог-реаниматолог в Филатовской проходил практику, второй хирург — в 4 Градской. Хирург-ординатор постоянно притаскивал в общагу поддельную Метаксу и тп (чему анестезиолог здорово завидовал), а резал «жировики и аппендюки», без счета просто
Проблема не в типе операции, а в том — что получился котенок с дверцей.Lissov
17.01.2023 16:17Проблема не в типе операции, а в том — что получился котенок с дверцей.
Да, и я именно на это и попробовал обратить внимание своим первым комментарием. Видимо, был не понят :)
Daddy_Cool
17.01.2023 02:17+3А кстати можно спросить у директора "Белой Радуги" как они хирургов нанимают на работу.
iboltaev
17.01.2023 10:26кстати, примерно так и берут. На тренажере (есть такие для хирургов специальные)
DmitryZlobec
17.01.2023 13:05А как по вашему берут? Хирурги с которыми я общался, недавние операции, особенно экстренные помнят по секундам.
botyaslonim
19.01.2023 00:12+2Хирургом можно стать только совершенно определённым образом: специальный, а не абы какой медвуз, потом ординатура.
А программисты через одного самоучки
Luchnik22
16.01.2023 17:28+1При собеседовании я всегда держу цель собеседования: "необходимо найти человека, который будет справляться с задачами команды, в которой он будет работать", поэтому я начинаю всегда с абстрактных вопросов: например, "расскажите про опыт, когда вы столкнулись с трудностями использования X", так и кандидат привыкает к интервью, так и я могу приблизиться к цели.
В конце, мы оба решаем задачку из серии "а давай сейчас вместе сделаем простую форму логина, без всяких лишних вещей" или "напишем сервис авторизации на минималках", пользоваться разрешено всем.
Возможно у этого подхода есть, конечно, минус, что собеседование простое, но с другой стороны нет цели сделать его невыносимо трудным
P.S у меня был опыт, когда я отсеял разработчика (за счёт вопросов "Расскажите про прототипное наследование"), но начальство тогда спросило, готов ли я дать шанс разработчику на роль джуна и я тогда согласился на такой эксперимент, поэтому мы наняли отсеянного разраба, в итоге он вырос в архитектора
P.S.2 у меня не было опыта, когда я или команда, в которую нанимался человек, жалели о взятом человеке (возможно просто повезло)rusik2293
16.01.2023 20:18пользоваться разрешено всем
Кандидат открывает chatGPT, до этого он работал грузчиком
arheops
16.01.2023 22:10Ну если он сможет обьяснить все, что нужно, chatGPT и, главное! отдебажить результат — почему нет.
У меня, к примеру, не получилося этим пользоваться нормально.
klirichek
17.01.2023 08:58А chatGPT закрыт для вашей территории. И вчерашний грузчик вдруг легко поднимает туннель и таки открывает его... Тоже показатель!
eee94
17.01.2023 17:38+1Код потом работает?
Если да - значит возьмем его постановщиком задач для chatGPT, а джуны более в таких количествах станут без надобности. Ура!
anonym0use
17.01.2023 18:19+2Если грузчик знает что такое ChatGPT и как им правильно пользоваться это уже интересно)
izogfif
18.01.2023 23:32Такой кандидат, похоже, вполне может обойти других.
Andrey_Solomatin
19.01.2023 10:59Так же и кандидат который за деньги отдал написание резюме проффесионалам может обойти других. До чата тоже можно было воспрользоваться чужими знаниями в разной степени.
Все эти асинхронные взаимодействия (резюме, тестовое задание) это фильтр. Тут цель не сделать хорошо, а пройти его. Как бы в не хитрили живое общение расставит всё по местам.
С другой стороны тоже играют не особо хорошо.
Ваше резюме могут просто потерять, даже если вы подавались через знакомого.
Созваниваемся с рекрутёром, он мне говорит: "Мне три для назад прислали Ваше резюме." Я не стал уточнять где оно было предыдущие 20 дней.
Когда утсраивался на первую работу, на Питон, к своему научному руководителю, на живом собеседовании сначала говорил с рекрутёром. Потом она дала мне тестовое на бумажке и сказала, что технический интервьювер будет через 20 минут. Вопросы были по С++ и на абстрактную логику. Пришёл руководитель и выкинул эти листы в помойку не глядя.
victor_1212
16.01.2023 18:32> Возможно у этого подхода есть, конечно, минус, что собеседование простое, но с другой стороны нет цели сделать его невыносимо трудным
минуса не вижу, типа четко понимаете что делаете, когда интервьюировал людей примерно также, это на основе опыта, консервативно >300 проведенных интервью, людей c таким пониманием охотно взял бы в команду, хотя это уже в прошлом (30+ лет работы в us)
terraplane
16.01.2023 19:17+23Во второй истории я был тем, кто пытался убедить команду, что не стоит отказывать человеку из-за одной мелкой ошибки, но никто меня не поддержал, и его отсеяли. «Мы такие деньги платим, зачем нам здесь придурок какой-то, ха-ха».
Рад за парня, которого не наняли, что ему не пришлось работать в такой команде.
zergon321
16.01.2023 23:37+2Как раз недавно читал про то, как евреев валили на экзаменах в мехмат МГУ =3
ikostruba
17.01.2023 00:02+6В крупных компаниях обычно выстроен формат собеседования и самодеятельность интервьюеров не приветствуется. Там, где формат зависел от меня, я пришел примерно к следующим элементам:
Начать с вежливых формальностей, представиться, объяснить, как будет проходить собеседование. Объяснить, что мы будем писать код без IDE, но нам не нужно чтобы код был сразу компилируемым, по сути, подойдёт и псевдокод, лишь бы была ясна общая структура и алгоритм. На это нужно буквально пару минут.
Спросить, какие проекты ему запомнились, и что интересного или забавного он может припомнить из своей практики. На этом этапе кандидат может немного успокоиться, а я могу посмотреть, рефлексирует ли он над своей работой, испытывает ли интерес к программированию, и как вообще формулирует свои мысли. Этот этап занимает минут 10, максимум 15.
Дать элементарную задачу, например, найти дубликаты в массиве, и уверить кандидата, что нет никакого подвоха. Тут я смотрю, насколько быстро задача будет решена (по-хорошему, кандидат просто тут же за несколько минут пишет решение), и что человек в принципе способен написать код. 5 - 10 минут.
Практически все оставшееся время, около 40 минут, отводится на более трудную задачу. Тут я смотрю, как кандидат уточняет условия, как проектирует решение, и как пишет реализацию. Для меня важно, чтобы в итоге человек хоть что-то написал, ведь ему придется это делать на работе. Неплохой подход, с моей точки зрения, это сделать простое решение и потом улучшать.
В оставшееся время я отвечаю на любые вопросы, которые есть у собеседуемого.
Если есть дополнительные этапы, то, на мой взгляд, хорошие приёмы это отладка программы со специально созданной ошибкой, тут видим, как кандидат пользуется инструментами. Естественно, об этом предупреждаем заранее, и просим подготовить рабочее окружение. Читал, что кто-то просит кандидатов сделать рефакторинг - тоже неплохо.
Еще один интересный подход - попросить кандидата заранее сделать короткую презентацию на любую интересную ему техническую или околотехническую тему.
shiru8bit
17.01.2023 00:44что забавного он может припомнить из своей практики
Вот это, имхо, самый так себе вопрос в любом интервью, кого угодно для каких угодно целей. Забавное - это всегда что-то внутри контекста, и умение понятно изложить этот контекст и саму историю - задача для стендапера, но едва ли для технического специалиста. Когда надо делать то, что не умеешь, понимая, что в результате скорее всего тебя не поймут и ты будешь выглядеть нелепо - это так себе путь к спокойствию.
victor_1212
17.01.2023 03:43согласен с большинством Ваших комментариев по теме, в том числе о большом количестве проектов, невозможности все помнить и т.д., поэтому добавлю такое наблюдение - чем более профессионально ведет человек интервью, тем легче найти с ним общий язык, от глупых вопросов типа " что забавного можно припомнить ... " можно избавиться, если не ходить на интервью по-холодному, т.е. когда вас не знают, networking именно для этого и нужен
Dimozavrik
17.01.2023 16:24+1Много раз видел что предлагают писать код без IDE в качестве проверки. В чём сакральный смысл, это же выходит копание ямы без лопаты?
ksbes
17.01.2023 16:30Смысл в том, чтобы проверить насколько глубоко человек знает язык. Не тупой ли он кодер? (Т.е. умный кодер — сойдёт)
Да и мне не так уж редко (чаще, чем хотелось бы :) ) приходилось программировать Java, С# и Python (не говоря уже о всяких bash' ах) в nano или vi (без m).nronnie
17.01.2023 16:48Я вполне нормально, если мне надо просто подправить пару строчек в коде, то открываю его всегда в консольном vi(m) делаю то что надо, потом проверяю сборку с командной строки. Ради этого запускать IDE это как на самосвале в ларек за пивом ехать.
Andrey_Solomatin
18.01.2023 02:07+1Мне кажется нет смысла.
Последнее время все задачки у меня были на сревисах для совместного кодирования, с подстветкой синтаксиса и даже автодополнением.
Пандемия поколебала позиции кодирования на доске и в блокноте.
Alexsey
17.01.2023 00:10+11Так уж сложилось что в прошлом году прошел где-то... ну 50 собесов точно. У меня после этого опыта есть две претензии к собеседующим:
1) Всем сторонам было бы проще и понятнее если бы на собеседующей стороне потратили 10 минут, зашли в гитхаб, указанный в моем резюме, и почитали бы мой код в репозитории с 400+ звездами. Тогда сразу отпали бы 90% вопросов и не надо было бы, извиняюсь, дрочить мой мозг тупыми вопросами, ответы на котрые у любого программиста сидят в подсознании и которые достать оттуда на собеседовании не всегда получается.
2) По моему субъективному мнению действительно обоснованных отказов было в лучшем случае четверть. Все остальное, по личным ощущениям, это отказы в стиле "ты нам не подошел потому что твой стек совпадает с нашим только на 90%" и прочий бред. Зажрались короче и/или сами не понимают кого они ищут.
arheops
17.01.2023 01:11+12Фигня в том, что 99% претендующих не имеют гитхаба со звездами. Ну так сложилося в индустрии. Менять что-то под вас контр-продуктивно.
Вы же не всегда видите, в чем проблема. Может, вас бы взяли за совпадении и в 20%, но не за те деньги. Либо вы шутите в стиле, неприемлимом для команды(очень серйозный косяк на самом деле при приеме на работу).Alexsey
17.01.2023 16:23Фигня в том, что 99% претендующих не имеют гитхаба со звездами. Ну так сложилося в индустрии. Менять что-то под вас контр-продуктивно.
Ну так наоборот же - когда чувак с гитхабом 1 на сотню за это наоборот должен глаз цепляться. А если не цепляется - а может не так уж и сильно и нужен хороший специалист на это место и подход в стиле "накидаем кучу всего на стену, авось что прилипнет"? Какие-либо серьезные отклонения в процессы и затрачиваемое время такая ситуация не вносит.
Вы же не всегда видите, в чем проблема. Может, вас бы взяли за совпадении и в 20%, но не за те деньги. Либо вы шутите в стиле, неприемлимом для команды(очень серйозный косяк на самом деле при приеме на работу).
Ну денежный момент в какой-то момент отпал когда я понял насколько все на рынке плохо. Плюс я почти всегда уточнял что та сумма, которую я называю, не является минимальной на которую я соглашусь. Насчет шуток - в какой-то момент специально просил сторонних наблюдателей посмотреть на собес со стороны, никаких красных флагов не заметили. Ну и я вообще стараюсь шутить на собесе редко и максимально обтекаемо.
arheops
17.01.2023 18:46+1Не корелирует «хороший специалист» и гитхаб. Не всегда. Ну и недостаточно, ибо куча людей делает гитхаб «для галочки» и смотреть это задалбываешься.
К тому же, есть понятие Overqualification.
Шутки и красные флаги могут существовать только для этой команды. Это просто пример.rtemchenko
18.01.2023 01:38+3У для-галочников обычно нет 400 звезд. А если и есть накрутки (лайкают друг другу репы по кругу), то там либо пустые репы, либо сплошные форки, либо дичайший г-код. Во всяком случае пока не встречал лайкльщиков, которые додумались бы стырить хороший репо и налайкать друг другу, а не форкать.
arheops
18.01.2023 02:00+1Когда вы собеседуете 20-30 человек и у всех гитхабы есть, но там для галочки — вы перестаете вообещ ходить не гитхабы.
И звезды — не увидите.
Я пытаюсь вам это донести, но, похоже, никак.
Даже у моего ребенка на втором курсе у всех «есть гитхабы». Может у кого-то из них есть гитхаб чего-то, что люди используют — но я ж ну буду это проверять, да?rtemchenko
18.01.2023 22:47Согласен.
Стоит посоветовать @Alexsey указать в своем резюме, что он меинтейнер проекта с 400 звездами.
Сильно всматриваться в рандомные гитхабы мало кто будет.
Alexsey
19.01.2023 08:35У меня в общем то и так в резюме и на сайте значимые личные проекты прописаны с ссылками. Разве что в резюме количество звезд не указано.
Не сильно помогает обратить на это внимание, по крайней мере среди российских работодателей :)
Alexsey
18.01.2023 02:08Во всяком случае пока не встречал лайкльщиков, которые додумались бы стырить хороший репо и налайкать друг другу, а не форкать.
У таких товарищей другая нынче фишка - они делают какой-нибудь незначительный PR по типу правок в readme или какую-нибудь документацию в надежде на то что PR примут и они влетят в список contributors. Я одного так аппрувнул, потом с саппортом гитхаба несколько дней не могли его вычистить из всех их кэшей чтобы он из этого списка исчез.
rtemchenko
18.01.2023 22:37+1Да. Слышал о таком. Опять таки, в таких случаях у людей все форки. Если человек реально меинтейнит какой-то проект, я бы ожидал это увидеть в резюме, и посмотрел бы на размер участия. Но пока что не встречал людей с активным гитхабом, даже лайкальщиков.
IRS
17.01.2023 01:51+1Сейчас норма что резюме не читают от слова совсем. И собеседующий видит твое резюме, хорошо если не за 15 минут до собеседования. Ну то есть дурацкая ситуация получается - а может ты там вообще не нужен такой с таким твоим опытом. И вообще "этим людям" не нужен. Чего тут не звереть.
PsihXMak
17.01.2023 01:17+10Вскоре собеседование превратилось в викторину на тему, с которой программисты работали в тот день.
Обожаю, конечно, когда попадаются такие собеседования.
"Вот вам кусок кода. Перечислите все ошибки, которые найдёте"
- Называю с десяток ошибок. Рассказываю, как сделал бы сам.
"Всё понятно. До свидания."
Через 15 минут:
"Вы нам не подходите из-за низких технических навыков"А потом сидишь и гадаешь, что это вообще было...
valery1707
17.01.2023 10:56У меня есть опыт с другой стороны: при проведении собеседования я прошу назвать проблемы в коде на 28 строк (включая импорты и пустые строки) и чаще всего в нём проблем не видят совсем тогда как там есть и проблемы с многопоточностью и с читаемостью и с закрытием ресурсов и т.д.
После того как кандидат всё озвучивает что посчитает важным - я рассказываю что там есть ещё.
Всё открыто.PsihXMak
17.01.2023 11:49+1Я не против обсудить код. Я имел в виду немного другое, что иногда попадаются особые странные собеседования.
Один раз интервьюер сам целый час писал код в редакторе и периодически уточнял у меня, правильно ли он делает или нет. Потом так-же пришёл отказ без объяснения причины.
На таких интервью нужно попытаться угадать, что именно задумал собеседующий и назвать правильный ответ. Если не угадал, то у тебя "низкий технический навык".nronnie
17.01.2023 12:37На таких интервью нужно попытаться угадать, что именно задумал собеседующий
Просто спросить у него? Умение что-либо уточнять это тоже как бы нужный навык. Я из-за этого давно принципиально не делаю тестовые задания, потому что в них уж точно никогда не выяснишь что от тебя хотят.
PsihXMak
17.01.2023 13:37+2Просто спросить у него?
В ответ будет "Подумайте сами. Я хочу увидеть как вы мыслите.".
Ещё раз уточную, что трешовые собеседования происходят довольно редко. И обычно во время собеседования ты уже сам понимаешь, что не пойдёшь в эту компанию.Однажды я сделал ошибку. Было собеседование, где мне полтора часа два программиста рассказывали, какими плохими были их предыдущие работники, что всё сломали и как сложно было с ними работать. Ну, я и согласился по дурости. Оклад обещали вполне приличный.
Как вы уже могли догадаться, теперь на их собеседованиях в этом списке ещё и я значусь.nronnie
17.01.2023 14:01В ответ будет "Подумайте сами. Я хочу увидеть как вы мыслите.".
Ну тут уж только пожелать ему попасть к product-owner-у который ему скажет то же самое. Хотя, с другой стороны, "assumptions" (допущения) это вполне штатная часть любых требований/ТЗ, поэтому с ними тоже надо уметь работать.
Было собеседование, где мне полтора часа два программиста рассказывали, какими плохими были их предыдущие работники
Cчитается, что говорить на собесе плохо о прошлом работодателе это сразу чорная метка. Применяя к этому математически симметричность отношения можно сразу сделать выводы.
DMGarikk
17.01.2023 14:15Cчитается, что говорить на собесе плохо о прошлом работодателе это сразу чорная метка.
смотря что и как говорить
Я без проблем всегда описывал проблемы с которыми сталкивался у прошлых работодателей и токсичных описывал и проблемы в организации и описывал как я предлагал их решать.
Нельзя обвинять в стиле 'они козлы я от них ушел', можно говорить плохо только если описываешь как ты пытался с этим справится и почему не получалось и почему в итоге ушел… и спросить, а у вас не жалуются? (потому что если да — то мне там делать нечего — но такого ниразу не было после одного единственного раза)
В таком случае если описывают плохих работников — это на самом деле не черная метка сама по себе, а задел на то чтобы задать вопрос как вообще происходит управление в конторе. У меня был опыт работы у таких товарищей где топ-руководство было супер токсичным и обвиняло всех подчиненных во всех проблемах конторы, вплоть до того что заказывали аудит чтобы потдвердить некомпетентность и возмущенно отвергать результаты аудита со словами 'да вы сами не компетентны раз этого не видите!!'
я теперь на каждом собесе про это рассказываю со словами 'а у вас как дела обстоят'?
никогда проблем не было
wadeg
18.01.2023 01:43habr.com/ru/company/productivity_inside/blog/710870/#comment_25121144
— Называю с десяток ошибок. Рассказываю, как сделал бы сам.
Интервьюер понимает явно не все, что излагает интервьюируемый (не то чтоб совсем редкая ситуация)? Возможно, что интервьюер взял свой код, внес одну-две хитрых намеренных ошибки или там явно плохих паттернов, ну и соискатель их должен найти и объяснить, что с ними не так. А тут таких говномест в реальном участке коде, внезапно, оказывается аж с десяток, да с размазыванием подробностей. И еще пара присутствующих коллег это наблюдают с плохо скрываемым удовольствием, только что не прыскают открыто. И что ж теперь, бедному интервьюеру после этого сепукку делать?
«Всё понятно. До свидания.»
IRS
17.01.2023 02:00-6Насчет собеседований командой - команда обычно пропадает и пипл начинает "жить в моменте" по законам звериной стаи, по принципу "кто на новенького". Новенький фалломорфирует и начинает тупить или просто валит(есть вариант - ловит фан и смотрит чем цирк закончится - мой случай). Как правило коллективные собеседования не заканчиваются ничем, если в команде нет иерархии. Ну а чо вы ж хотели демократии. Вот она так и работает. У народа включаются гормоны и начинают дружно нагибать соискателя. А на тебе еще задачку а на еще вопросик.Аааа - не ответил вон пошел. =)
Ну вы так сборно самозванца-вайтишника и получите. Барана который выучил конечный перечень того, что вы спрашиваете. Нормальные кодеры в моменте все это не помнят.
Как пример - я в моменте не помню что там в java.nio.* - а тем не менее пользовался;
Все как по книжке Савельева "Сортинг мозга". 3 человек уже толпа. и живет по законам обезьяний стаи.IRS
17.01.2023 13:43-6У мартышек начало гореть. Бгг. Ну социальная психология групп, она вот такая. У меня подозрение что всю эту бирюзовость для того и вводят, чтобы холопы между собой срались. :) Ничего не поделаешь. Го еще минуса, народ.
FrolVII
17.01.2023 02:29Происходит это по нескольким причинам:
- Люди не задумываются <...>
- У них мало опыта <...>
- Им попросту наплевать <...>
Вы забыли про банальное человеческое эго, работа по обслуживанию коего в той или иной мере свойственна всем нам, увы.
FinnParnish
17.01.2023 02:35+1Да, но и + у нас в целом ещё много людей считают, что ничего никому не должны, даже если работают в т.н. сфере услуг.
Interreto
17.01.2023 04:02+4Ведите список всех мудаков кто вас собеседовал, ІТ круглое - рано или поздно можно будет отиграться :D
IRS
18.01.2023 14:58это может так не сработать. "мудак" в составе стаи был мудак, а выдернутый из нее вдруг начал вести себя вменяемо. Жизнь сложнее. У меня естьзнакомые кто так себя вел на собесах а потом образумился наконец то начал нормальных умных коллег нанимать. Есть те кто не изменился. Личный черный список вести - дурацкая идея. Идейных говнюков не так и много, как правило
OptimumOption
17.01.2023 06:32-2Мда, самое интересное, что все хотят работников широкого опыта и обязательно с опытом в 15-20 лет, но при этом это должны быть вчерашние выпускники ВУЗов возрастом до 30 лет. И вот вопрос - а где, собственно, набираться опыта, если все хотят исключительно людей с опытом? Производственная практика? А где она? Если не выпускник ВУЗа - то всё, можно ставить крест и топать работать грузчиком? Ну и требования канеш для айтишника: делать кроме айти всё, что скажут, принимать звонки вместо секретарши и ездить по командировкам на собственном авто, без компенсации и аммортизаций... Спасибо, но вы сами знаете, куда вам пройти с такими требованиями :D
А вообще ситуация с работодателями и собеседования примерно такая же, как и между пользователями хабра.
Вот, к примеру, "...13 янв в 11:55 -1 Неконструктивное общение. Политика или пропаганда. Плохое оформление, ошибки..." Обиженка какая то решила свалить всё в кучу, приплетя еще и политику с пропагандой. И всё это анонимно, да. Руководству хабра ввести бы возможность апелляций, коли уж нам нельзя видеть этих "героев", что привыкли гадить где ни попадя. Особенно доставляет вариант "личная неприязнь" :D Лучше с себя начните, товарищи (хотя, скорее, волки тамбовские)...
DMGarikk
17.01.2023 11:17-1И вот вопрос — а где, собственно, набираться опыта, если все хотят исключительно людей с опытом? Производственная практика? А где она? Если не выпускник ВУЗа — то всё, можно ставить крест и топать работать грузчиком?
А вы знаете какуюто еще отрасль где не так?
меня помнится очень забавляли ребята после института, когда у меня еще был бизнес и мы брали себе джунов в конце нулевых
приходит чел, только только со свежим дипломом, по техзнаниям — ну оч слабый, 'хочу зарплату 70к, у меня айтишный диплом!' ©… и они массово так ходили… прям рукалицо
Можете мне пояснить, чтО я как работодатель должен с такими делать? доплачивать за их обучение?nronnie
17.01.2023 12:40-2У меня еще в двухтысячных были знакомые с ВМК МГУ, так они все уже со второго или третьего курса где-либо работали по специальности в качестве стажеров. Двое из них сейчас в штатах, один в UK.
DMGarikk
17.01.2023 12:50Тут фигня в том что будь одни студентами в 2023 году, они бы также работали со второго-третьего курса в качестве стажеров и были бы через пару лет в штатах и uk
блин у меня в команде сейчас стажер работает студент 4 курса, каким чудным образом он к нам попал? магия?
ничего концептуально не поменялось с тех лет, кроме того что ватишники очень сильно перегрузили рынок джуновnronnie
17.01.2023 13:31Тут фигня в том что будь одни студентами в 2023 году
Ну, значит, просто ничего не изменилось, что радует. За все страны говорить не буду, но, например, в Германии или Израиле если ты к окончанию юни пару лет уже не отработал, то можешь просто вешать свой диплом на стену - будешь на него любоваться каждый раз приходя домой после смены в Макдональдсе :)
DMGarikk
17.01.2023 14:07И это плохо чтоли?
Высшее образование не для всех, если не смог найти работу после получения диплома — это лишь показатель как вы выучились, как любят говорить адепты обязательности высшего образования как корочки — НЕ 'выучились решать проблемы' ©
собственно финальный экзамен ;)
Ndochp
19.01.2023 01:02Не знаю как ваш, а у нас фирма в лице техлида приходит на кафедру к знакомому преподавателю (с которым этот техлид в свое время проект в одной команде поднимал, да не один) и спрашивает: умные ребята есть? И студент (но не каждый) уходит без собеса в фирму.
Trabant_Vishnya
17.01.2023 17:27+1Тестовое же есть для таких целей.
Я правда не кодер, но когда junior-ов в BI искали, вот такую строчку в вакансии проставил:Опыт работы до 1 года. Либо готовность сделать тестовое задание / показать свои наработки
И сильно помогло. Задача на дом, нагрузка на час-полтора. Если человек простейшие вещи делал\учился, то справится. На бизнес-смысле больше отсеивалось, если честно...
Dolios
17.01.2023 12:54+2Руководству хабра ввести бы возможность апелляций, коли уж нам нельзя видеть этих "героев", что привыкли гадить где ни попадя.
Зачем? Какой профит получит ТМ после выполнения ваших пожеланий? Кто будет оплачивать этот банкет (доработка и поддержка функционала, зарплата тех, кто разбирает апелляции)?
micronull
17.01.2023 09:29+4Для меня самое идеальное собеседование, это сделать тестовое задание.
Собеседования как правильно проводятся после рабочего времени, когда ты уставший с чугунной бошкой пытаешься в стрессовой ситуации что-то вспомнить.
Тестовое же задание ты можешь делать в свободное время, на собеседовании спокойно его обсудить и пообщаться. По коду будет всё видно. Если что-то не успел сделать, то там же на собеседовании можно рассказать как бы ты это улучшил.
aceofspades88
17.01.2023 10:45+1если следовать вашей логики то тестовое вы делаете по выходным, сколько собесов такого формата вы осилите за месяц? 4? ps ни разу не сталкивался с тестовым, но вроде это общепринятый красный флаг
micronull
17.01.2023 12:56если следовать вашей логики то тестовое вы делаете по выходным, сколько собесов такого формата вы осилите за месяц?
Один собес за полгода и получу оффер с очень интересной беседой. И собесудующие будут настроены на найм сотрудника, а не как обычно.
Dolios
17.01.2023 13:05+4И собесудующие будут настроены на найм сотрудника, а не как обычно
Когда я преподавал в вузе, мне было смешно слушать заявления студентов о том, что преподаватель их пытается завалить. Особенно когда этот преподаватель их тянет за уши так, что они того и гляди оборвутся...
Та же самая ситуация сейчас с собеседованиями. Вы правда думаете, что большинству людей настолько наплевать на свое время, что они ходят на собеседования, не имея изначальной цели нанять кандидата?
Нет, я понимаю, что есть люди, у которых какие-то личностные проблемы и которые так самоутверждаются, но врядли их количество выходит за размер стат погрешности.
Bringoff
17.01.2023 17:57Один собес за полгода и получу оффер с очень интересной беседой.
Оптимистично, но не всегда реально.
За последние 2 месяца собеседовался в 15 разных компаний. Получил 5 офферов.
Тестовое было в одной компании, сделал его, после этого действительно была конструктивная беседа по теме тестового, в конце собеседующий даже неофициально сказал, что решение будет позитивным для меня. Через 2 недели и 3 пинга с моей стороны я получил формальную отписку, що двигаются дальше с другим кандидатом.
Меня греет только 2 вещи: во-первых, тестовое было оплачиваемым, я потратил на него один вечер и получил что-то типа 150$, так что время проведено не совсем зря, и во-вторых, что отказ, очевидно, не из-за моих скилов (по крайней мере, я так себя утешаю - сужу по словам собеседующего, плюс я попросил чуть больше денег, чем была озвучена вилка).
valery1707
17.01.2023 11:02Собеседования как правильно проводятся после рабочего времени, когда ты уставший с чугунной бошкой пытаешься в стрессовой ситуации что-то вспомнить.
Возможно это ваш личный опыт.
Я, как собеседующий, предпочитаю проводить его в своё рабочее время, так как вне его я и сам уставший и вообще другие дела есть.Если же у вас рабочее время различается, то такая ситуация возможна, да.
Но ведь и вам нужно понимать что вы на собеседование идёте не просто показать что вы существуете, но и что-то нужно будет делать (да хоть тоже тестовое разобрать), а значит стоит немного себя разгрузить перед собеседованием.Тестовое же задание ты можешь делать в свободное время
И именно по этому тестовое, выдаваемое на дом, принято создать довольно крупным (не на 30-40 минут), а к таким тестовым уже большинство кандидатов относится весьма негативно - на Хабре можно найти кучу статей на эту тему.
micronull
17.01.2023 12:50Я, как собеседующий, предпочитаю проводить его в своё рабочее время
Вам за это платят.
valery1707
17.01.2023 13:45За проведение собеседования - да.
За проведение его во внерабочее время - нет, так как согласовывать переработки (и оплачивать их) никто не хочет.
TheMrWhite
17.01.2023 12:09-1что может быть лучше чем делать тестовое по выходным или вечерами после работы? а ещё лучше когда после отправки тестового даже не зовут на собес, потому что не успел что-то сделать, или сделал не так как ожидал проверяющий. но шанса объяснить не будет
Dolios
17.01.2023 12:59- За вас тестовое мог сделать друг или ChatGPT.
- Сейчас вам противники тестовых заданий насуют за воротник :)
Пробовали тестовое, в итоге поняли, что это бессмысленная трата времени кандидата и сотрудника компании.
Собеседования как правильно проводятся после рабочего времени
95% собеседований я провожу в рабочее время. Обычно в районе обеда.
WraithOW
17.01.2023 15:20+1За вас тестовое мог сделать друг или ChatGPT.
Я б сказал, что на последующей защите это обычно прекрасно всплывает.
nronnie
17.01.2023 13:38+2Собеседования как правильно проводятся после рабочего времени
В душе первый раз такое слышу. Вот собеседующим больше нечего делать, как задерживаться после работы и кого-то собеседовать (может, правда, им платят за это по таксе овертайма, но сомневаюсь).
gandjustas
18.01.2023 00:42С тестовыми заданиями две проблемы:
Кандидаты их не делают, всегда можно найти вакансию без тестового задания и с собеседующим, который задает банальные вопросы чтобы зайти за мидла или даже сеньора.
Тестовое задание должно быть должно быть не слишком простым и не слишком сложным, при этом близким к теме нанимателя и не гуглиться в интернете. Короче много условий.
RedPandaHere
17.01.2023 11:46классический пример – сортировка с помощью двоичного дерева
Вот черт, выпустился в 2000 году, а сортировку помню, не знаю, как распомнить )
nronnie
17.01.2023 23:37+1Да если про неё даже ни разу не слышал, но просто знаешь что такое двоичное дерево, то уже сложно не догадаться что это такое и даже написать простейшую реализацию максимум минут за 30. Я бы на собеседовании вообще писать это поленился - просто рассказал бы принцип работы, сказал бы что сложность O(n * log(n)) и что её достоинство это что можно сортировать прямо из какого-нибудь потока без его предварительной загрузки в память. Для вменяемых собеседующих этого должно хватить, а с невменяемыми мне все равно не по пути, так что результат уже без разницы.
shornikov
17.01.2023 13:04+2история #2 да и коментарии некоторые...
Раз все такие умные, зачем вам отдел тестирования и прочие современные плюшки?
Закодили - и на прод.
stabuev
17.01.2023 17:25Угу был у меня пару лет назад такой собес, больше похожий на перекрестный допрос, еще и с выключенной камерой одного из собеседующего. Естественно завалил, примерно с середины посыпался на простейших вопросах. Но даже если бы прошел, не пошел бы туда :)
web1nick
17.01.2023 19:43-2Технические собеседования давно "must die", но до сих пор, почему-то, живы.
Я работаю программистом более 13и лет и на них положил болт ещё после первых лет 3х.
Тех. собеседование - это экзамен, с рандомными вопросами, в напряженной обстановке. Соответственно пройдут его единицы, в таком же рандомном порядке.
Помню самый показательный случай был одной днепровской компании, ещё где-то в 2016м. Там старший программист по JavaScript-у нанимал других сотрудников по принципу "загнобить" их на собеседовании побольше. Я не преувиличиваю, - "загнобить" его было чуть ли не любимое слово, которым он постоянно пользовался, придумывая вопросы для собеседования.
Работал я не с ним, но в смежной области, находясь у него за спиной, и просто офигевал от такого подхода. При этом их it HRка искренне выполняла свою работу, - регулярно подгоняя ему кандидатов, и недоумевая потом, почему они все не подходят после тех. собеседования.
Ну а это моральное *овно чисто получало удовольствие, от того, что унизило, очередного кандидата.
Вот и подумайте, в следующий раз, когда добровольно решитесь проходить тех. собеседования, а кто на другом конце у вас будет его принимать, и какие его мотивы.
Поэтому технические вопросы я принимаю только в одном виде, - сертификация.
Во первых у вас будет достаточно времени к ней подготовиться. Во вторых у известных сертификатов достаточно стандартизированные вопросы, многие из которых уже есть в интернете. В третьих, в случае успешного прохождения вы получите немедленный и ожидаемый результат, в виде сертификата, а не неизвестной работы, на которую всё-равно будет не понятно, примут ли вас, или возьмут всё-таки другого, что там будет за конкретная работа и сработаетесь ли вы вообще.
Решение как по мне давно известно: подробная беседа с кандидатом -> обычное тестовое задание, если оно нужно (небольшое и не на время) -> испытательный период в 1-2 месяца, во время которого уже всё станет ясноDMGarikk
17.01.2023 20:41+2вы в какой вилке заработка находитесь?
если вы отказались от собесов в первые 3 года стажа, вы максимум мидл и остались на одной работе или ушли в фриланс
собственно вопрос, у вас какая вилка ежемесячного заработка?
Alexsey
17.01.2023 20:44+1Подход интересный, но собеседований, которые можно описать как "просто поговорить", в моей карьере было ну наверное.. 3. Из них на двух несколько очень базовых технических вопросов все же были.
Очень не популярный подход короче.
nronnie
17.01.2023 23:10+4Технические собеседования давно "must die"
Конечно мастдай и место им в земле. Приходит человек у которого в резюме девяносто лет опыта работы с REST. На собеседовании просят просто "вольным текстом" описать REST API для примитивнейшего CRUD с одной сущностью и первое же что он делает это реализует удаление через HTTP GET.
Brogahnl
17.01.2023 23:51-1Использования DELETE на удаления это самое популярное соглашения.
В итоге у нас возникает хороший вопрос, который отлично может прояснить и знания по специальности и личностные качества.
arheops
18.01.2023 02:06-2У меня в некоторых API работает и так и так.
ибо некоторые фронтендеры сильно долго понимают, как вообще заюзать DELETE. А каждый раз обьяснять — мне влом.nronnie
18.01.2023 02:31+3Объяснить один раз, как генерить клиента из Open API (ака сваггера) и дело с концом. Но вообще фронтендеров, которые не понимают как вызвать DELETE надо бы гнать взашей - пускай идут у Лебедева баннеры рисовать. Бекендера который, например, упорно не понимает логическое "И" и поэтому везде пишет вместо него цепочку из нескольких вложеных if-ов вряд ли кто-то долго держать будет.
mayorovp
18.01.2023 11:27+1Если DELETE влом делать/объяснять/что-то ещё — существует же POST, пригодный для любого запроса. GET-то зачем делать? Чтобы однажды робот удалил весь сайт в попытке его проиндексировать или там показать превьюшку?
gandjustas
18.01.2023 00:48+5Технические собеседования давно "must die", но до сих пор, почему-то, живы.
Простите, а вы людей нанимали?
Поэтому технические вопросы я принимаю только в одном виде, - сертификация.
Сейчас нет ни одной достойной программы сертификации для программистов. Да и развивается все так быстро, что сертификат устаревает еще до его получения.
Решение как по мне давно известно: подробная беседа с кандидатом
Беседа о чем?
0HenrY0
17.01.2023 21:07Попытайтесь держать в уме, что кандидат сильно нервничает и, вероятно, не выказывает и половины способностей, которыми обладает в спокойном состоянии.
Зато сразу видно, как будет работать сотрудник в стрессовой ситуации. Для многих ИТ-специалистов это состояние на работе становится перманентным.
vvbob
18.01.2023 09:48+1Тогда может и хорошо что отсеивают. Ну ее нахрен, такую работу, на которой ты будешь находиться в перманентном стрессе. Для здоровья это нихрена не полезно.
iskatel
17.01.2023 23:16+6" Происходит это по нескольким причинам: "
не только это.
очень часто приглашённые члены команды озабочены тем, что показать собственную крутизну и одновременно то, что кандидат хуже их. За этим же столом, зачастую, сидит или лидер команды, или один из РМ - ов, очень удобно повыпендриваться.
Причём если уходить в частности и мелочи проекта, с которым они работали 10 минут назад, а кандидат или не работал с подобным, или работал когда-то давно, то результат практически гарантирован.
А что касается их заинтересованности в подборе нужного кандидата.. по большому счёту, оно далеко не всегда им интересно. Им важны собственная значимость, их собственная зп и её возможное повышение. И людей можно понять : так им удобнее будет через какое-то время поднять вопрос о пересмотре их з/п.
Да, ещё. Толковый начальник, понимающий как грамотно организовать и провести подбор кандидатов - редкость, толковая хрюша - большая редкость.
Так чему вы удивляетесь ?
"всё идёт по плану" (с)
dubakov
18.01.2023 08:29-1Даю небольшое тестовое задание связанное с работой. Объемом в пару часов. На дом. Срок недельку. Потом садимся и кандидат рассказывает о том, как он делал, объясняет свой код.
По моему это лучше, чем спрашивать абстрактную ерунду.
vvbob
18.01.2023 09:54+1И кандидат за эту неделю находит другую работу, где обошлось без тестового. Во время активного поиска заниматься тестовыми обычно либо некогда, либо прямо очень сильно лень, тем более что полно вариантов без них.
Я помню, как-то успешно прошел собес в одну фирму, но они решили дать еще дополнительно тестовое (з/п на тот момент у них было очень даже приличная) я его даже решил, отдал, и оно им понравилось, правда к моменту когда они мне выставили оффер - я уже успел принять оффер от другой компании, отчего они потом сильно переживали (реально переживали, потому что через несколько лет меня потом опять к себе зазывали, но тоже как-то не сложилось).
Я это к тому - что тестовое тоже не слишком хороший фильтр, который может отсеять много подходящих кандидатов, которые просто по каким-либо причинам не могут или не хотят этим заниматься.
Mazrigosh
18.01.2023 15:25На удивление всегда более менее адекватных людей встречал на технических собесах. Ну может было одно два исключения.
Гораздо больше выбешивают тестовые задания, особенно те, которые дают делать прямо под чьим-то присмотром. Типа пиши, а я посмотрю как и что ты пишешь. Я быстро понял, что я так не могу, слишком сильное психологическое давление. И потом вы же не будете на работе надо мной стоять и смотреть, как я пишу код и решаю рабочие задачи? Так что теперь при отклике в первую очередь уточняю, есть ли у вас тестовое задание онлайн, и если есть - сразу разворачиваюсь.
Да и сами задачи в этом тестовом задании, даже не в онлайн, как правило, имеют весьма опосредованное отношение к реальным рабочим задачам. Однажды встретил одну компанию, которая проводила просто технический собес, и hr открыто мне сказал, что мы мол проводим тех собес, а все эти тестовые задания не считаем хорошим способом отбора кандидатов. Жаль, что таких замечательных примеров на рынке мало...
zweroboy1
18.01.2023 17:34+1Цель собеседования - взять кандидата, который справится с поставленной задачей и отсеять кандидата, который с этой задачей не справится. При этом, если ошибочно отсеять подходящего кандидата, то никто об этом не узнает. Если же ошибочно нанять бестолкового, то это точно обнаружится. И это может стать проблемой, в том числе и для интервьюера. Исходя из этой логики выгодно максимально "звереть", чтобы неподходящий кандидат точно не прошёл.
Если вакансию точно нужно закрыть и есть Х кандидатов, то опять же интервьюеру выгодно максимально придираться к каждому, потом взять лучшего из них. А в случае провала в работе кандидата у интервьюера будет железная отмазка - "он и на интервью плохо отвечал, я в него не верил, но вам нужен был работник, а остальные были ещё хуже".
mano2020
18.01.2023 17:44+1Дисклаймер: не программист ни разу. Может когда-нибудь лет через десять.. ;)
Продажник, в прошлом управленец среднего звена.
Провел больше двухсот (двухсот) собесов.
Прошел десятка четыре собесов.
Всё, что требуется узнать на собесе:
а) человек управляемый и адекватный (в критериях компании, куда он пришел)
б) человек впишется в команду
в) человек способен (не может в данную секунду исполнить, а способен) исполнять положенные на эту должность задачи
г) ну и общий уровень образованности
Если эйчар (руководитель, привлеченный специалист, etc.) этого не понимает - возникает озвученная ситуация. Понимая что программисты себя продают очень плохо - ну так значит работа эйчара купить программиста.
А эйчары, я вам открою секрет, практически нигде нормально не ищут никого. Ни в IT, ни в финансах, ни в продажах.
Scott_Leopold
18.01.2023 17:45+2Козлами собеседующие становятся потому, что получают в свои неподготовленные руки власть над другим человеком: пусть на короткое время и небольшую, но власть.
А для не готового к этому человека испытание властью - самое трудное из возможных.
R3B3LL10N
В вышеописанных случаях техлиды (или кто там собеседовал) не заинтересованы были в расширении команды. Почему? Ну, это у них и надо спросить. Возможно, вцепились в свой монолитный коллектив и не хотят его менять. Свои ж, родные, а щас придёт какой-то хрен пойми кто, учить его пол года, время тратить...
Возможно, просто задолбались проводить по 10 собесов на неделе вместо того чтобы заниматься своей работой и заранее относятся к кандидатам негативно.
Возможно ещё какие-то тараканы в голове.
Так что либо эти люди не такие уж нормальные и зря вы их на собеседования ставите, либо сам процесс проведения собесов выстроен плохо и изматывает ответственных работников.
В любом случае обучать проводить собесы нужно не только HRов, но и тех кто технические интервью проводит. И следить за ними тоже нужно, чтобы почём зря не валили людей. Это в интересах комании набирать качественных специалистов, не стоит пускать всё на самотёк.
TerrorDroid
Например, потому что у них уже есть «свой кандидат» наготове и они просто автоматически отсеивают всех дабы он в итоге получил место. Такого вагон и тележка когда речь идёт про выбор контракторов, поэтому и с обычными позициями явно хватает.
akryukov
Если есть "свой" кандидат, то есть хорошая рекомендация, то весь этот цирк с отсевом посторонних никто устраивать не будет. Проведут собес для галочки с нужным и наймут.
Kyushu
Правильно. Но начальство считает, что нужно проводить "кастинг", а те, кто работают, хотят взять "своего кандидата". Се ля ви.
iosuslov
Зачастую приведенные ситуации - это не злая воля, а просто автоматическая реакция. Собеседующий, в первую очередь, должен уметь абстрагироваться от своих личных переживаний и опыта и смотреть на кандидата с точки зрения решаемой задачи.
Сможет ли этот человек делать то, что от него требуется? Сколько ресурсов нужно будет потратить на его (человека) "доработку"? И всегда помнить, что испытательный срок (в РФ) - 3 месяца и он позволяет уволить любого без особых сложностей (кроме женщин ушедших в декрет в этот период).
Я, когда нанимал людей (инженеров на завод), задавал технические вопросы только с целью отсеять тех, кто вообще не шарит. Для меня важнее было то, как человек умеет общаться, что он делал до этого и почему ушел с прошлого места работы. Всем кандидатам говорил, что испытательный срок 3 месяца, описывал свои ожидания по его окончании, что должен делать, уметь и т.д.
И тех, кто производил хорошее впечатление - котелок варит, общаться с людьми умеет, умеет решать сложные задачи (не сдается) - брал на испыталку и смотрел выхлоп. Слабый выхлоп или много геммороя - обсуждаем отчего, почему, чем помочь. Если по итогу 2 месяцев и 3х недель меня что-то сильно не устраивает и я не вижу возможности это исправить - жаль, но ставочка не сыграла, "наша компания вам не подходит, всех благ!"
korva
Очень умно. Подбор персонала это в некоторой степени рулетка - никогда не узнаете какое число выигрышное и единственный способ это перебор. И на этот перебор намного выгоднее закладывать бюджет, чем на оплату года работы кадровика, пусть этот бюджет и выше. Ведь на выходе будет решение проблемы через три-четыре месяца, а не понимание того, что год потратили, а толку нет - весь год дело стояло и не приносило компании денег.
maksimtnt
Да и сейчас инженеров, технологов и проектировщиков на заводы так и принимают. Это в IT искусственно странную моду создали, когда есть куча вакансий и они не закрываются при куче кандидатов.
DMGarikk
одно дело взять программиста на ЗП 200к, и уволить через два месяца (минус 500тыс ФОТ + затраты на поиск) и другое инженера-технолога на 40-100тыр который с бОльшей вероятностью потянет
rukhi7
есть очень простое объяснение почему собеседующие не заинтересованы (потенциально в любом) кандидате: они рассматривают его как потенциального конкурента, в лучшем случае того с кем придется делиться доступными материальными благами.
Отсюда и агрессия и все остальное.
Как вы проверяете что собеседующие заинтересованы в расширении команды? Они вас об этом просили? А может когда они вам говорили что не хватает еще кого-то они имели ввиду что работают за двойх и не мешало бы им повысить зарплату, а вместо этого их на собеседования таскают!