84% погодяться на live coding на технічному інтерв’ю, а 16% відмовляться від співбесіди — телеграм-опитування Djinni

Сервіс анонімного пошуку роботи Djinni провели опитування в телеграм-каналі, у якому запитали підписників, як вони ставляться до практики live coding на технічних співбесідах.

За результатами 4521 голосів, 84% погодилися б виконати таке завдання на співбесіді. Хоча варто відзначити, що 50% з них воліли б цього не робити.

16% відмовляться від співбесіди, якщо на ній потрібен буде live coding.

Тут і далі — прінтскрін з каналу Djinni

В обговореннях під голосуванням думки теж розділилися.

Хтось виступав на підтримку такої практики:

Інші не розуміють доцільності таких завдань та справедливо відмічають, що цей спосіб підходить не всім.

А як ви ставитеся до live coding на технічних співбесідах? Чи доводилося вам проходити це, як один з етапів відбору на вакансію?

P.S. У DOU подкасті обговорювали тестові завдання та те, що розробники не хочуть їх виконувати . Подивіться, якщо ще не бачили 😉

👍НравитсяПонравилось1
В избранноеВ избранном2
LinkedIn

Лучшие комментарии пропустить

в комментариях на ДОУ ты дерзкий, а на ливкодинге «ой у меня стремсс, я не могу когда кто-то смотрит».

Был у меня на одном собесе лайв-кодинг.
Дали мак, который я никогда в жизни в руках не держал. Что блин за комманд? Клава не привычная на ноуте. Мимо клавиш попадал постоянно. Хотя уже давно на клаву не смотрю.
Клиент к бд postgres был непривычный, да и сам postgres я в тот момент ни разу не видел. Не мог понять, почему совершенно обычный запрос не работает, а гуглом пользоваться нельзя. А там к кейсу чувствительность и другие нюансы.
Задание чел на ходу менял, что еще больше сбивало.
В общем во всем этом неудобстве и суматохе, я кое-как сделал задание, через сопли-слюни, и естественно, что собес провалил. Хотя по сути в кабинете, за своим компом, в спокойной атмосфере, и гуглом. Оно бы вообще не вызвало особых проблем. А работать то я буду именно так, а не как на лайв-кодинге.

Какие там алгоритмы?! Знали бы вы сколько синьоров не смогли в простой FizzBuzz у меня на лайв кодинге. При этом я не давил, не валил, старался направлять и подсказывать.

Ненавижу эту пытку. Мало того что находишься в определенном уровне стресса, что влияет на продуктивность, так еще дают кодить в какой то формочке, а не в своей IDE. И эта фигня почти без подсветки синтаксиса, не подсвечивает блоки кода, чтобы хоть скобки расставить, другая цветовая схема, нет автоформатирования, автокомплита и т.д, потому по сути я просто слепну и это все ровно, что код на Dou писать.
Так что если и прибегать к этой пытке, то в виде расшаривания экрана с IDE и никаких онлайн сервисов + ТЗ должно быть в письменном виде, а то в последние время бывает Skype издевательски подглючивает, играя на арфе в самые ответственные моменты. Да и постановка ТЗ на словах в принципе хромает и сразу понять что именно от тебя там хотят незнакомые люди не всегда просто.

Я би особисто здивувався якби мене перевіряли на посаду програміста і при цьому не просили продемонструвати вміння писати код і розв’язувати хоча б елементарні задачі. Як інтерв’юер згоден з принципом no code no hire. Як той кого перевіряють — не пішов би у контору де не просять писати код на інтерв’ю.

Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Если лайв-кодинг адекватный — в чем проблема ? это ж по времени не долго. Не тестовое задание даже.

Если лайв-кодинг адекватный

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

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

Бля.
Скажите честно, НАХРЕНА кроме повышения собственной самооценки спрашивать на собеседовании то, что человек в работе делать абсолютно точно НЕ БУДЕТ потому что такого от него НЕ ПОТРЕБУЕТСЯ?
Это всё равно, что я бы погонял бэкенд разработчиков по теории автоматизированного управления газотурбинными установками. А шо? Я могу.
И буду получать примитивное удовольствие, когда человек будет тупить в ответ на просьбу написать передаточную функцию десмодромного звена.
А потом стебать его на форумах, что мне стрёмно брать на работу человека, который не знает из головы как рассчитать настройки гидравлического регулятора частоты вращения. Какой он после этого инженер?

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

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

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

Це говорить виключно про твої задачі.

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

Не «математичних обчислень», а «арифметичних операцій».

Арифметика не является частью математики?

Из этого разговора выяснилось, что арифметика — это too much для современного украинского синьора. Оххх, мы к Индии намного ближе, чем я думал.

Оххх, мы к Индии намного ближе, чем я думал.

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

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

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

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

То был случай как раз с бекенд-разрабами. За пределами мобильного клиента тоже есть жизнь)

То был случай как раз с бекенд-разрабами

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

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

А бэкенд такой: а нафига нам сортировать этих несчастных 10 строк json-а ради какого-то ленивого фронтендера?

ради какого-то ленивого фронтендера?

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

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

Really?

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

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

Нахиба?

В залежності від локалі, фільтрів, інших налаштувань у кожного клієнта дані з сервера можуть бути по різному відсортовані та представлені.

Це говорить виключно про твої задачі.

всі срачі з участю Станіслава завжди відбуваються однаково. Збираються програмісти, обговорюють собі основи програмування, тут появляється Станіслав і починає поливати всіх гімном, так як усе це знати не потрібно. Як тільки йому наведуть приклади, шо все таки потрібно — він видає «ну мені, на моїх аутсорс проектах, де треба кодити мобільні аппки внутрішнього використання — не потрібно».

З таким самим рівнем неадекватності він би міг всім доводити, шо знати свіфт/обджектів сі не треба, бо код потрібно писати на котліні

шо знати свіфт/обджектів сі не треба, бо код потрібно писати на котліні

Котлин мультиплатформ в хату.
Не переживайте, скоро всех на него переведут :)

Вообще-то, кmp не позволяет не писать на свифте, в только писать platform-independent код, выделяя его в отдельный модуль, который транслируется потом в swift/js. В этой схеме по сути ты и будешь тем чуваком, который бизнес-логику с остатками от деления в библиотеке пишет, пока айосник формочки рисует, лол.

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

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

Угу. Шел второй месяц- консилиум все решает нужны ли украинскому сеньйору сакральные знания о делению по модулю :)

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

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

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

ты с таким маниакальным упорством настаиваешь на том, что люди, осилившие программу младшей школы — неадекваты?

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

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

Даже если на проекте будет много арифметики, она будет либо в библиотеке, либо на сервере. Потому что это — бизнес логика, которая должна и будет отделена от всей остальной реализации. Хотя бы для того, чтобы её можно было покрыть тестами.
И если я окажусь на таком проекте, мне точно не будут давать таски, связанные с этой логикой. У меня иная специализация.

в общем была у меня пачка собесов на пресловутые 8к — так вот везде были live coding задачи. Начиная от поиска зацикленностей в linked list’e, заканчивая in-place сдвигами на N элементов в массиве. Так что нос можно воротить, конечно, от live coding’a, но на суммы поменьше 8к))) Думаю на 5к можно найти собесик на час и получить оффер.

Я пару месяцев назад стартовал в проекте (удалёнка) на 60/час (европейцев). На собеседовании рассказали о проекте, я рассказал о своём опыте и чем могу быть полезен, спросили интересен ли мне проект. И всё.

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

ну ясное дело, что всегда бывают исключения, но тут были собесы в 5 компаний и во всех был live coding.

У меня лайв.кодинга не было где-то с 2002. Но у меня рекомендации хорошие. :)

1я даже проще, чем перевернуть список.

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

в общем была у меня пачка собесов на пресловутые 8к — так вот везде были live coding задачи

Дай угадаю — все они были продуктовые конторы?

на удивление не все, но большинство

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

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

Бинарное дерево — это уже сложная херня. Её нужно специально задрачивать. От природы никто такое решать не умеет. Это явно продукт задавал, они любят такие спецолимпиады.
Мне попалась задачка ЕМНИП на реверс строки или что-то такое.
Круд — это вообще продакшн задача и адекватное тестирование рабочих навыков для бэкендера. Это всё равно, что меня когда-то просили наваять за 15 минут в студии прототип приложения (не обязательно, чтоб оно билдилось).

поиск по бинарному дереву спрашивали в один из банков в аутсорс.

Задачки для підготовки до олімпіади в 9-му класі

ну я ж не говорил, что задачки сложные. Просто сам факт, что live coding хотели на каждом интервью.

Чому мені в 9-му класі ніхто не пропонував 8к?

А, ми ж тоді були мільйонерами. В купонах.

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

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

теоретическим ответам

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

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

Гитхаб тогда нафига? Даже если не контрибутил в опенсорс, то можно запушить тестовое- сделал одно и всем его тычешь как коде екзампл, а если контрибутил в публичные проекты, то неужто сортировка пузырьком или физбазы покажут более релевантную картину?

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

Потому что будет как в США в конечном итоге, люди будут решать по 200-300 задач на Литкоде в свободное и рабочее время, перед сменой работы(В ущерб работе само собой), что бы потом на интервью показать что они умеют вертеть деревья якобы потому что они крутые спецы в CS, а не потому что решили все виды задач перед интервью.
Кто хочет и умеет решать, пусть в США на 300-500к едут, зачем эту фигню тянуть в Украину, и мучать людей за какие-то 60к в год?

Какие программисты нынче нежные существа, им только подавай их навороченную IDE, 2 часа времени, тишину что бы написать 3 if/else. В наше время таких презирали, а сейчас смузихлебы заполонили и просят 5к$

%s/IDE/перфокарта/
І можна казати і про вас таке
)

Перфокарта это уже продвинутый уровень. Только перфолента, только хардкор.

Нет, хардкор это внесение исправлений ручным перфоратором

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

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

Я говорил о ручном перфораторе для перфоленты;)

А, я подумал о перфокартах. Этот следующий уровень жести я не вспомнил :)

Прогуглите, посмотрите как он выглядел :)

Да, до такого я не доходил. Точно жесть...

И хуже было, если надо было заделать отверстие, а не добавить его

У кого был скотч — можно было. Но в советское время он был дефицитом.

В наше время таких презирали, а сейчас смузихлебы заполонили и просят 5к$

Зависть — деструктивное чувство

с первых строчек идёт очередное нерелевантное сравнение, дальше не читал.

В каждой 2-ой аргументации против лайвкодинга, его с чем-то сравнивают 🤦‍♀️

висновок — тре ТЗ на дому

свіжа стаття

што?
Dec 1, 2020

Уривок з книги Хенка Рейнвотера «Як пасти котів»:
-----
У процесі пошуку нових співробітників слід проявляти розсудливість — в кінці кінців, вам самому доведеться співіснувати з новими людьми і допомагати їм адаптуватися в команді. На це йде багато сил і часу, проте зважений підхід до питань найму гарантує вирішення завдань. Далі я привожу ряд факторів, які обов’язково потрібно враховувати при пошуку нових програмістів.

1) Примусьте кандидата виконати тестове завдання. Поставте перед потенційним співробітником завдання, яке він повинен буде або вирішити відразу, або взяти додому і вирішити до встановленого терміну.
2) Обов’язково проводите усну перевірку навичок кандидата. Якщо у нього є сертифікати, протестуйте його по одному з них і оцініть отримані кандидатом знання, а заодно і його здатність вирішувати завдання в стресовій ситуації.

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

книга 2011 года от автора, представителя западной бизнес-культуры и модели — какое отношение она имеет к 2021 году и текущим реалиям украинского рынка?
пока тут бушует рынок кандидата — это все не имеет никакого смысла. правильно все пишут, если вы не ФААНГ — никто не будет выстраиваться к вам в очередь.

Лучший лайв-кодинг — это первый месяц работы. Всё остальное — шляпа от лукавого.

Якщо ви менеджер, і у вас 5 кандидатів на одну позицію, ви всіх п’ятьох візьмете на випробувальний термін?

Якщо ви менеджер, і у вас 5 кандидатів на одну позицію

А если кандидат с 5-ю офферами?
Ради каждого ливкодинги проходить?

Додайте ще, що це trainee, який щойно закінчив початкові курси програмування, і реалістичність ситуації 99.99%

Я думаю, не нужно пояснять разницу между наймом trainee и senior.

какие 5 кандидатов? вы точно про украинский рынок?

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

При чому тут зайві етапи? Мова в цьому топіку йде про те, чи проводити livecoding на технічному інтерв’ю чи ні.

окей. вы хотите провести полноценный лайв-кодинг в течении технического интервью? и сколько он будет длиться? 15 минут? час? какая тогда продолжительность технического интервью? 2 часа? 4? может полдня?

Мова в цьому топіку йде про те, чи проводити livecoding на технічному інтерв’ю чи ні.

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

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

а вот задачки на дом

З огляду на те, що ви вдома і працюєте, можна просто сказати «завдання»)

Если оплачивают по «правильному» рейту, тестовое — вполне нормальная история.

ни разу с таким не встречался :)

Вот недавно делал такое, по X2 рейту, но таких контор мало, есть такое

Если денег радикально больше рынка предлагают, то чом не.

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

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

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

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

Благодаря такому подходу меня уже неск раз завернули на лайвкоде потому что код не аккуратный.

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

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

Надрачиваю литкод потихоньку :-)

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

Нет кодинга, нет работы, все просто.

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

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

Ещё код ревью хорошо проводить. Искать баги в простом коде на десяток строк, например.

С удовольствием работаю сам. Мне же больше дохода остаётся. Не надо делить его с командой.

Нет кодинга, нет работы, все просто.

Если не ФААНг, то, как говорится, чуси)) Просто открываю следующее сообщение в входящем потоке))

Писати код на інтерв’ю — це як зніматися у порно. Комусь подобається.

А що потрібно робити на співбесіді?

Я би особисто здивувався якби мене перевіряли на посаду програміста і при цьому не просили продемонструвати вміння писати код і розв’язувати хоча б елементарні задачі. Як інтерв’юер згоден з принципом no code no hire. Як той кого перевіряють — не пішов би у контору де не просять писати код на інтерв’ю.

На випробувальному терміні не можна перевірити?

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

А як же стрес, та ще й на протязі кількох місяців?

До того ж на інтерв’ю можна за тиждень перевірити кілька кандидатів, а на випробному — одного за кілька місяців.

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

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

Тебе какая разница, тебе все равно ничего не перепадет

а у меня жалоба в трудовую инспекцию, так что две это оптимистично)))

С испыталки можно уволить в любой момент

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

есть один знакомый кадр.

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

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

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

нафиг брать даже на испыталку всякий шлак

Других писателей у меня для вас нет ©

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

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

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

А вас не смущает что навскидку в 90% компаний на позиции девелопера именно активно девелопить код это отсилы 15% от всей работы ?

Ні, мені це нормально.

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

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

Якшо ви так натякаєте на відомі задчки із Гугл чи Фейсбук, то у мене для вас сюрприз — вони сильно відрізняються від типових задачок з лайв кодінг інтервью.
І перевіряють ті задачки з Гуглу теж зовсім не вміння швидко написати код (часто без ide) і все таке

IMHO: мені особисто то дуже дивно коли реальна суть роботи відрізняється відсотків на 90% від того шо питають на інтервью. Якби натякаючи шо компанія сама слабко розуміє кого і навіщо вона наймає. (Декларуючи при цьому зовсім протилежне)

вони сильно відрізняються від типових задачок з лайв кодінг інтервью

Так, я вже зрозумів, що тут про якусь українську специфіку. А можна приклади таких задачок?

Та буль ласка
— накодити на папірчику якийсь типовий алгоритм сортування, хоча би бульбашку
— накодити в notepad віртуальних класів на С (типу як в срр)
— ну і класика — реверс стрінги (і на папірчику і в notepad)

усі 3 особисто зустрічала по кілька разів на middle and up позиціях

— накодити на папірчику якийсь типовий алгоритм сортування, хоча би бульбашку
— накодити в notepad віртуальних класів на С (типу як в срр)
— ну і класика — реверс стрінги (і на папірчику і в notepad)

такі задачі цілком собі дають в ФААНГах інтернам яким ще до закінчення навчання 2-3 роки.

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

Інтернам? З того що я чув платять нормально, тобто більше ніж касирам скажімо. А враховуючи, що як правило забезпечують житлом та їжею на період роботи в конторі то і взагалі добре виходить.

Я лучше возьму тестовое задание на 3-4 часа. Мне такой подход нравится больше всего — привычная ИДЕ, спокойная обстановка, есть время подумать — именно так я и вижу свою будущую работу. Следующим этапом, можно сделать интервью и обсудить решение, его +/- трейдофы, что можно было бы сделать иначе или улучшить.
Я на лайвкодинге нервничаю — не потому что я не уверен в себе, а вот как-то так сложилось что я не люблю писать код когда кто-то смотрит через плечо.

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

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

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

Ну... как по мне лайвкодинг как раз подразумевает общение по коду. А не просто сделал/не сделал без вопросов.

Для кого-то тестове краще, але тут не можна поміряти ефективність.
Наприклад, дали тестове, через тиждень кандидат його вислав. Зроблено правильно, але як зрозуміти, скільки він його робив? 4 години або 4 дня? Сам він робив або з ким радився?

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

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

Слюса́рне обро́блення, слю́са́рство[1] — оброблення, яке виконують ручним інструментом чи машиною ручної дії.
Слюсарні роботи зазвичай доповнюють механічну обробку металів на верстатах

Токарний — наче не ручний інструмент

Хоча гайку можна зробити ручним інструментом

Зараз гайки точать програмісти на G-коді

Як тут пропонували його треба просити розказати якою крутою буде його гайка коли він її виточить. Хто краще розкаже — того і наймаємо.

Слюсаря на співбесіді будуть питати, чи буде він на роботі бухати і як часто на перекури бігати

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

Дорого і довго.

для найма достаточно тех интервью

Вміння писати код — ключове для програміста вміння. Було б дивно його не перевіряти.

писати код — ключове для програміста вміння.

гагага

Так, читаючи деякі коменти тут про «можна замість писати код розказати про нього» і правда думаєш — а як же тоді називаються люди які пишуть код?

допустим, я користувався за життя з 10 мов, починаючи від Асемблера до Rust

Я наразі крім С і його синтаксису (та і той слабо) мало що пам"ятаю, так я не забиваю пам"ять непотребом.

Тепер представ шукають спеціаліста по закручування гайки М5.

І?

Ясно можна знайти макаку, яка кодить тільки на одній мові та знає синтаксис так що зуби відскакують.

Але її час життя в ІТ як балерини короткий.

з.і.
на одній із співбесід по Го, напр. питали по пам"яті як реалізовується інтерфейс до структури.
Почав з impl

Інтерв"ювер: чувак, це з якої мови?

п.с.
кодер пише код
інженер вирішує задачі

Вам хто тре?

Я наразі крім С і його синтаксису (та і той слабо) мало що пам"ятаю, так я не забиваю пам"ять непотребом.

Аналогічно. А тому коли питають якою мовою я буду писати код на інтерв’ю то завжди обираю С++.

Тепер представ шукають спеціаліста по закручування гайки М5.

Це контрактор на конкретну технологію і задачу. Для чого такого брати в штат? Закрутить ту гайку і піде інші подібні задачі шукати.

Інтерв"ювер: чувак, це з якої мови?

Не дуже зрозумів — інтерв’юер який знав, що ти будеш писати на Го сам не знав Го? Чи про що ти?

Го не має ключового слова impl це з Rust

якщо ти пам"ятаєш всі 7 стандартів С++, то моледець, обирай далі

пам"ятаєш всі 7 стандартів С++

Для чого це? Я обираю С++ тому що 1) знаю синтаксис, 2) маю більше свободи з готовими контейнерами та алгоритмами, 3) shared/uniqur_ptr, 4) шаблони та ексепшени іноді стають в нагоді.

всі мови таке мають, здивував.

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

В нетипізованих мовах треба перевіряти типи об’єктів та інші умови як приклад того чому для мене той же Python чи JS менш зручні.

С++ теж бібліотека STL яка частину стандарту, але не мови, упс.

P.S.
async/await недороблений появився в С++20, гагага

С++ теж бібліотека STL яка частину стандарту, але не мови, упс.

І що? С++ для задачок на інтерв’ю означає класи/ексепшени/шаблони/stl і далі по списку.

async/await недороблений появився в С++20, гагага

Теж не зрозумів яке це має відношення до вибору С++ в якості мови для розв’язання задачок типу літкод.

набагато більше має відношення до реальної роботи, чим задрочування літкоду та онлайнкодінгу

А якщо в тій «реальній роботі» більше Java в даний момент. А то і взагалі з умовного Го на умовний Раст переходять?

якщо брати С++ і виходити з того, що процесори давно багатоядерні, то з С++ ще досить сумно для такого класу задач

з С++ ще досить сумно для такого класу задач

Якого класу — перевернути список?

С++ теж бібліотека STL яка частину стандарту, але не мови, упс.

Лолшто

уже частина С++ мови, супер. як і буст, гагага

3) shared/uniqur_ptr

Уже мимо — до C++11 их нет.
У нас есть один компонент, залипший на 03, а попытка перевода на 11 ломает что-то в применённом бусте. Пока не было ресурсов разобраться :(

Увы, тут много гитик.

Уже мимо — до C++11 их нет.

Не розумію яке це має значення. Я коли кажу, що буду писати на С++ задачки очікую, що класи/шаблони/ексепшени/stl/... — все це мені доступно. Інакше для чого питати якою мовою я буду писати?

У нас есть один компонент, залипший на 03

Яке це має відношення до умовної задачі про перевертання списку?

Яке це має відношення до умовної задачі про перевертання списку?

Ну це ти їх згадав, ось сам і шукай, до чого вони в цьому контексті.

Ніякого відношення. Коли я обираю С++ як мову для розв’язання задачок то звісно не очікую на інетрв’ю почути «а у нас на клавіатурі клавіша „і“ западає, то давай усе без цієї літери» чи щось подібне.

дешевле искать год нужного человека

Саме так — не наймати та не витрачати час на явно не підходящих кандидатів вийде дешевше. Бо є два варіанти:
— шукаємо підходящого кандидата, або
— наймаємо аби кого, через кілька місяців звільняємо і продовжуємо шукати підходящого кандидата.

дешевле искать год нужного человека

Шукаємо програміста, але там страшне — треба буде писати код. Тому зарплатню суттєво збільшуємо. Якось так?

Стосовно «не наймати» — в цьому і суть співбесід щоб відносно швидко і дешево відсіяти тих кого наймати не варто.

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

Я зрозумів — ми говоримо про різні випадки. Для контор які заробляють на прокаті тушок безсумнівно випробний термін буде краще.

Це поки не обпечуться з якимось неадекватом. Потім такі контори як і інші триматимуть позицію відкриту місяцями доки не знайдуть нормальну людину.

3й вариант — найти нормального кандидата и зажлобить денег

якби мене перевіряли на посаду програміста і при цьому не просили продемонструвати вміння писати код

Please define «вміння писати код».
Что именно проверять? Скорость набора символов? Знание синтаксиса?

розв’язувати хоча б елементарні задачі.

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

Что именно проверять? Скорость набора символов? Знание синтаксиса?

Синхронизированный со мной умственно-ценностный процесс в черепной коробке

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

Визуально-голосовому.

собственно проблема в искажениях при передаче данных

Нет. Передача текста довольно помехоустойчива нынче

Синхронизированный со мной умственно-ценностный процесс в черепной коробке

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

Нахиба его синхронизировать в реальном времени?

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

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

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

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

Программирование это творческий процес

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

твоя задача смотреть на выхлоп

И что делать если этот выхлоп мне не нравится? Могу ли я сделать что-то превентивно?

Что именно проверять? Скорость набора символов? Знание синтаксиса?

Ні, вміння писати код для розв’язання задачі. Скажімо щоб перевернути список треба знати і вміти: цикли, вказівники, пояснювати хід думок, вміння записувати запропонований алгоритм мовою програмування.

Есть гораздо более быстрый способ. Спросить «как Вы будете решать такую задачу?».

Nice try, but no. No code — no hire.

Хіба що треба найняти балакуна який вміє красиво розказувати про те який буде крутий код коли його напишуть. Але це скоріше для ПМ вимога.

написать код могут все

Практика показу що ні, не всі.

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

А якщо задача знайти тих хто може писати код, а не казки розказувати?

Скажімо щоб перевернути список треба знати і вміти: цикли, вказівники, пояснювати хід думок, вміння записувати запропонований алгоритм мовою програмування.

Записывать код в IDE умеют все. В крайнем случае, нагуглить и записать. Это можно опустить.
Алгоритм можно попросить описать по пунктам.

Хіба що треба найняти балакуна який вміє красиво розказувати про те який буде крутий код коли його напишуть.

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

Практика показу що ні, не всі.

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

А якщо задача знайти тих хто може писати код,

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

Алгоритм можно попросить описать по пунктам.

Так, і в чому проблема? Пропонуєш алгоритм — пояснюй його.

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

Такий собі трейлер для ще не написаного коду? Круто. А код можна побачити?

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

Гуглити відсутність знань? Тобто замість перевіряти як кандидати підходить до розв’язання задачі перевіряти як він вміє гуглити? Це революційно, залишилося дочекатися коли лідерство в галузі захоплять контори які наймають людей за вміння швидкої копі-пасти.

Это умеют делать все.

Практика показує, що ні.

Любой код для решения любой типовой задачи — гуглится.

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

Если разрешить гуглить — то все.

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

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

Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово Fizz, а вместо чисел, кратных пяти — слово Buzz. Если число кратно пятнадцати, то программа должна выводить слово FizzBuzz

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

Если задача новая — готовое решение не гуглится.

Любую задачу можно свести к набору типовых.
Я не беру чисто инженерные задачи типа «научить самолёт садиться самостоятельно».
Обычные бизнес задачи. Приложения для автоматизации бизнес-процессов.

Подобной сложности код на большинстве вакансий встречается в работе каждый день.

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

не помню как этот пакет правильно применять на память.

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

Впрочем, если ты обычный верстальщик, только для андроида — то оно тебе и не надо.
Я так понял что твоя работа именно графическая (кнопочки нарисовать), а вся логика на бекенде.

Но больших зарплат на такой работе не будет

На такой работе обычные для Java Senior зарплаты.

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

В мобайле не работает вебовское разделение на бэк и фронт.
Мобайл — это разработка под ОС. Тут нет верстальщиков. Но и матан не используется.

Но и матан не используется.

Ты когда зарплату в конце месяца считаешь — тоже это действие матаном называешь?

Я обычно чтобы умножить на 0,05 и заполнить бумажку, нанимаю бухгалтера :)

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

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

Всё гораздо проще. Загорелась лампочка — заехал на заправку.

«Новые колеса на мот стоят Х, сервис стоит Y. Сколько денег будет потрачено на колеса и сервис?»

Там погрешность роли не играет и точность особо не нужна.

Считаешь ли такие расчеты «матаном»?

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

Всё гораздо проще. Загорелась лампочка — заехал на заправку.

То есть чуть более сложный прогноз типа «с текущим количеством бензина лампочка загорится in the middle of nowhere» тебе недоступен?

Там погрешность роли не играет и точность особо не нужна.

Я не о погрешности спрашиваю. Вопрос стоит, в состоянии ли ты проделать подобные опeрации самостоятельно? Или это «матан» и приходится нанимать специального человека?

Я не фанат вычислений

Да, это мы уже заметили ))

с текущим количеством бензина лампочка загорится in the middle of nowhere

Я там не езжу. У меня не того плана мотоцикл.

Вопрос стоит, в состоянии ли ты проделать подобные опeрации самостоятельно?

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

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

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

Это пока, например, ты через горы ехать не начал ))

Или через акиян заморский. Что мешает отслеживать изменения запаса хода?

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

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

В мобайле не работает вебовское разделение на бэк и фронт.

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

Я лишь отреагировал на этот твой текст:

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

Впрочем, ничего кроме этой фразы не знаю о твоей работе, так что мог что-то не так понять.

Если есть постоянное соединение приложения с сервером — то ничем от вебовских бэк и фронт не отличается.

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

И если работа андроид программиста — нарисовать кнопочки и картинки, то его вполне можно назвать верстальщиком.

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

Впрочем, ничего кроме этой фразы не знаю о твоей работе, так что мог что-то не так понять.

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

84% погодяться на live coding на технічному інтерв’ю, а 16% відмовляться від співбесіди — телеграм-опитування Djinni

дивна інтерпретація.
Фактично ж
30% погодяться, а 70% можуть послати

Если ожидаемые задачи общего профиля, то гораздо продуктивнее, имхо, проверять навыки не полностью как live coding, а используя что-то типа псевдокода. Типа как, «код для этой задачи я организую как X классов, основные функции в каждом классе будут называться A,B,C,D и отвечать за X,Y, Z». Возможно, с дополнительным вопросом копнуть чуть глубже в одну-две наиболее важной функции с точки зрения алгоритма.

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

Eдинственный (но большой) минус — это требует соответствующего уровня интервьюера.

в комментариях на ДОУ ты дерзкий, а на ливкодинге «ой у меня стремсс, я не могу когда кто-то смотрит».

Кожен анонім може бути дьорзким, але не кожен дьорзкий може бути анонімом.

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

Снежинка, задел?)

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

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

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

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

Также и с лайвкодингом и тестовым заданием, и т.п.

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

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

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

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

95%~ отзывов о компаниях от людей которые в ней работали это: дружный коллектив, зп не задерживают, получил много опыта

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

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

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

он ливнул с прошлого места, офер отозвали — чел на улице

Это отзыв как раз человека, который работал в этой компании. Хоть и мгновение. Он ценен.

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

так тут мова іде про ноунейм компані, а не твоєї мрії.
для свої мрії теж не противився лайвкодінгу

от яка користь вiд нього?
що ти можеш кодити пiд стресом?
i кому таке кодування потрiбно?

А чому «під стресом»?

как правило, это происходит в каком-то тупом онлайн-редакторе без подсветки синтаксиса, без автокомплита, без привычных хот кеев; каждое свое действие нужно объяснять на английском + задавать уточняющие вопросы, и самое главное, при этом нельзя вслух произносить «your bunny wrote!» если что-то не получается.

Ну почему же.

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

Я не обесцениваю ваш опыт, но какое он дает преимущество в сегодняшнем мире?

оказаться в таком режиме...

коммерческая разработка же не происходит в таком режиме, правда?

коммерческая разработка же не происходит в таком режиме, правда?

Собственно мой посыл был в том, что я умею такие условия, но понимаю тех, кто не умеет. Акцент на второй части: реально такое не является типовым.

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

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

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

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

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

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

Дождевая капелька. Щас жарко ващет.

Тю, так а в чому проблема запропонувати розшарити свій екран? Ми проводили і в онлайн редакторі (collabedit.com) і в онлайн редакторі з компілятором (coderpad.io здається) і тупо через screen share — всі варіанти норм.

Може в EPAM так і відбувається.
Але зазвичай використовують або спеціальний онлайн-редактор, де є і підсвічування, і автодоповнення, або IDE

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

У вбудованих системах, телеметрії чи бекенді дуже потрібна річ, шо палідром шо фібаначі.

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

І, може ще ТА зайнятися та рівнями підтримки?

А я занимаюсь матаном в свободное время))

для чого?
торгових ботів на шиткоєнах?

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

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

і?
шукаєм палідром? чи число Фібоначі?
це в протобафі?
чи езернеті?
чи по І2С?

і?
шукаєм палідром? чи число Фібоначі?

Чувак, ты про методологию обучения (и контроля обучения), про дидактику что-нибудь слышал? Сотни великих педагогов, от Коменского до Монтессори и дальше, разрабатывали эту тематику...
Учебные задачи могут не совпадать, а часто и не должны совпадать, с реальными, но должны развивать и проверять те же навыки. Умение правильно итерироваться по последовательности (включая массив) — можно проверять на палиндроме или на (пресловутом) обращении списка. Я бы дал чуть более интересную задачу, но если сейчас они отсеивают 2/3 неосиляторов, то почему бы и нет?

це в протобафі?
чи езернеті?
чи по І2С?

С ходу — UDP — конец датаграммы задаётся границей пакета, определённой снаружи, а начало — вычисляется по внутренним данным. ESP в IPSec, с паддингом и типом вложенной нагрузки в конце. У меня похожее было в FIX, с двоичными вложениями. Вообще подумав можно сотни примеров найти.

Смотри. Вопрос не в том, нужно именно это или нет, а в том, что это проверка базового алгоритмического мышления. Потому что, если этого нет — потом в пуллах я вижу ляпы типа «кликнуть по элементу с вот таким id в таблице» [что будет, если этот элемент уйдёт в пагинацию, написатель теста не догадывается] или вопросы «а как мне проверить, что элементов ровно 89, если на странице их показывается 20?» И хорошо ещё, если в пуллах и вопросах, а зачастую приходится фиксить вот такое, написанное ещё 2 года назад.

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

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

Это кандидаты уже с опытом работы автоматизатора?

Коли я починав в ІТ, то звичайно хвилювався на livecoding, але хвилювався, тому що було замало досвіду в програмуванні.
Коли стаєш синьйором, то з більшістю завдань справляєшся без проблем.
І навіть livecoding 1 годину вже не лякає, навпаки, це як виклик, перевірка власних сил. Єдиний виняток — складні алгоритмічні завдання, які вимагають знання спеціальних алгоритмів, які мало хто й знає і ще менше використовують.

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

от приходит дiвчина на побачення, а тут бац давай в лiжко (до плити) показуй здiбностi

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

Тут ещё вопрос а что может хлопець ;)

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

Побачення не зобов’язує ні до чого, а участь у співбесіді все-таки говорить про серйозні наміри кандидата (якщо він не балабол).

якщо за тиждень приходить 10 запрошень... вас багато, а я одна: єслі каждому давать, поломаєтся кровать.
Тому діяти тре по принципу: якщо красти, так на мільон фунтів, насіловать — так королєву, що в нашому ІТ — онлайн кодіть, то в ФААНГ, а ТЗ робить, то з гарантією на 8куе нетто на ремоті з річним контрактом не менш.

Мені здається, що категорична відмова від Livecoding говорить більше, ніж результат самого livecoding.

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

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

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

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

Я конечно не психолог, но это описание не интроверта, а крайней формы социофобии.

что не может выдержать live coding — то ему нужен или проект на 1го человека

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

Спорно, мягко говоря.
Любой проект сложнее hello world легко делится на части, которые можно разрабатывать независимо с использованием синк митингов не прибегая к live coding. Screen sharing в любой форме ничем не отличается от заглядывания через плечо с соответствующим уровнем комфорта для того кто делает работу, если это на него влияет.
Когда команда сидит в несовместимых таймзонах это очень плохо, но это не связано ни с каким live coding.
Есть ли ситуации когда live coding полезен? Да. Но, во-первых, это, скорее, будет отладка, а не кодинг либо кодинг в завершающей стадии просто что бы не разводить эпистолярий в пул реквестах.

Я б не був так упевнений.
ІТ нічим не відрізняється від інших професій в плані комунікації. І я навіть більше скажу, чим старше стаю, тим більше погоджуюся, що soft skills важливіше для кар’єри айтішника, ніж hard skills.

тому інтерв«ю для «а поговорить»

социальный контакт с несколькими незнакомыми людьми уже стресс

Так это не интроверсия, а зачатки социофобии.

Цікаво було б згрупувати результати за рівнем респондента (джун/мідл/синьйор), бо так це виглядає просто як середня температура у палаті

Пройдитесь по комментам, даже в этом топике, и увидите.

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

1. Ходити по 400+ коментах, перевіряти, в кого який рівень і хто б як відповів на задане питання (при тому, що не в усіх зазначена личка та написана чітка відповідь)? Дякую, в мене є цікавіші й корисніші способи вбити час :-)
2. А до чого це все, якщо справа в тому, що згадане опитування могло бути кращим?

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

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

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

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

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

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

Никто не спорит, что для системного программирования нужны знания алгоритмов, структур данных, железа и/или особенностей операционных систем. Большинство вакансий тут (~90%) — это пересылка json-ов между бекендом и фронтендом или разукрашивание формочек и кнопочек, поэтому live coding и всякие FizzBuzz свидетельствует о полной неадекватности интервьювера и конторы.

WAT?
пройти дерево в ширину/висоту без рекурсiъ

Раз на раз не приходится, но я написал наверное строчек 10 за месяц, из последнего я написал одну строчку и переставил местами пару байт в хексе. Не каждый день тебе нужен алгоритм сортировки, алгоритм Герцеля, Флойда, понимание преобразования Фурье или что-то подобное. Эти вещи гуглятся за пару минут. Предпологаю что 99% моих коллег себя отлично чувствуют без знания всей этой фигни. Думаю даже что во многих случаях им даже платят как минимум не меньше моего, а то и больше))))

І як же ваша компанія перевіряє вміння вирішення повсякденних завдань?

испытательный срок, отзывы коллег из команды, one-to-one

А як ви дізнаєтеся, хто був колегами по команді? Просто цікаво стало.

Просто взяти людину на випробувальний термін, якщо не впевнений в ньому — це великий ризик.

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

Тобто «ой, треба показати що я вмію писати код, стрес, стресс на 45 хвилин» це погано, а стрес на кілька місяців під час випробувального терміну — це ок?

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

дуже дорого як для компанії, так і для кандидату — ти ж зриваєш його з насидженого місця.

отзывы коллег из команды

Це дуже крута штука, але не завжди можливо, бо є і privacy. Але реально найважливіше це відгуки людей (а ще краще начальників), які з тобою безпосередньо працювали. + дуже легко геймити: ось Васян, ми з ним 3 роки старт-ап пиляли — йдіть поговоріть з ним.

Відгук від співробітника «у нас в попередній компанії був дуже крутий чувак» це афігенно потужний позитивний сигнал. Власне зверни увагу — дуже часто стартапи починають пиляти кофаундери, які десь до цього разом працювали (саме працювали пліч-о-пліч, а не просто в одній компанії числились; класичний приклад та ж en.wikipedia.org/wiki/Traitorous_eight, які навіть дальше розбились на групи, зокрема Нойс і Мур (закон Мура) упіздовали навіть з Fairchild Semiconductor і заснували Інтел). Ну або, альтернативно, з одної компанії/команди народ валом валить в іншу: хтось перейшов, йому сподобалось, він зве своїх крутих друзів. Єдина проблема — дуже погано масштабується.

Умение решать алгоритмические задачки

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

В итоге приходится один черт сидеть разгребать гавнокод и фиксить баги. Часто интервью интересней самой работы))))

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

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

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

Лайв-кодінг це не тільки про алгоритмічні задачі. Наприклад, ви вели розмову про якийсь із паттернів і попросили кандидата показати просту імплементацію. Чи, наприклад, розмовляючи про domain driven design розбирали із ним якусь простеньку область і хотіли б глянути як би він організував структуру, інтерфейси, агрегати. Заодно можна і глянути як кандидат поведе себе в комадній роботі над якоюсь задачею та глянути на те, як кандидат розмірковує над проблемою та як комунікує стосовно тих чи інших аспектів. Не подумайте, що я тут яро захищаю лайв сесію, але однозначно говорити про алгоритмічні задачі це не зовсім правильно.

Дык всё это на доске можно нарисовать

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

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

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

Ну, эт как с поваром примерно, т.е. важно что у него в результате и стоимость, правильно?

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

ну в некоторых компаниях же спрашивают разницу wait/notify/notifyAll и final/finally/finalize
лайвкодинг из той же оперы

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

jobs.dou.ua/trends

А если hrка, то и предлагают сделать что-то в туалете?

Що ви зробили з програмістами((

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

Вот, судя по всему, не все эти задачки могут решить :)

Я думаю, ті хто скаржаться, це говорить про їх елементарну лінь

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

Совсем другое дело какая-то мутная NoName контора с претензией.

<=>

С опытом начинаешь ценить свое время

ценить своё время просто не связываться с мутной конторой с претензиями разве нет?

Якщо ви крутий спец, якого беруть на роботу без співбесід — мій вам поклон.
Але якщо ви junior, то без пару-трійки співбесід ви нікуди не потрапите.

Я вважаю, що лайв-кодинг — це потрібно, але не для того аби людина вирішила задачу, а для перевірки «акуратності» роботи.
Якщо у людини є задача, де треба написати декілька функцій і вона називає їх func1(), func2() то це поганий знак.
Якщо людина створює нові змінні і дає їм імена а, b, c — це дуже поганий знак. З великою ймовірністю, код в такому стилі буде писатись і для продакшену.
Особисто я на лайв кодингу хочу побачити meaningful(не впевнений як українською) назви змінних, функцій, класів та правильне коректне використання цих змінних та функцій у відповідності до їх назв.
Це не те, що варто заучувати, це рівень логіки та «робочої гігієни».

Дійсно нема сенсу завжди пам’ятати реалізацію алгоритму А*(привіт Амазон), але вміти знайти елемент в масиві чи склеїти два сортованих масива це мідл та вище зобов’язаний вміти, бо це задачі де нема що фантазувати, взяв і написав.

Якщо людина створює нові змінні і дає їм імена а, b, c — це дуже поганий знак. З великою ймовірністю, код в такому стилі буде писатись і для продакшену.
Особисто я на лайв кодингу хочу побачити meaningful(не впевнений як українською) назви змінних, функцій, класів та правильне коректне використання цих змінних та функцій у відповідності до їх назв.
Це не те, що варто заучувати, це рівень логіки та «робочої гігієни».

О, да,`void merge(List firstList, List secondList)` краще. Жодного нового контексту ця лапша не додає, лише погіршує читабельність.

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

static inline uint64_t ncm(uint64_t x)                
{                                                                       
    uint64_t a = x & -x;                                                
    uint64_t b = x + a;                                                 
    uint64_t c = b ^ x;                                                 
    a <<= 2;                                                             
    c /= a;                                                            
    return b | c;                                                       
}

Ну и часто лайв-кодинг это одна функция

Нахіба давати вищеописаний приклад на лайв кодингу?
90% мідлів і вище вирішать цю задачу в робочій атмосфері з наявністю гугла менш як за 30 хв. До того ж зроблять її правильно, а оце що ти написав, не напише навіть сініор-архітект якщо він давно не працював з бітовими операціями.
Це не те, що треба давати на лайв кодингу.

Вважаю канонічною, тобто такою яка є в міру простою і в той же час дозволяє перевірити скіли, ось цю задачу:
leetcode.com/...​blems/merge-sorted-array
Окрім того, цю задачу можна вирішити масою різноманітних підходів, як самописних так і бібліотечних.

А те що навів ти це тупе задротство яке вирішується тільки в один спосіб. Якщо рішення не знаєш або забув хоча б одну бітову операцію — всьо, п**ц.

До того ж зроблять її правильно

А як правильно?

А те що навів ти це тупе задротство яке вирішується тільки в один спосіб.

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

Якщо рішення не знаєш або забув хоча б одну бітову операцію

Яку операцію забути?

Взагалі, це вплава з TAoCP. Оціна 21 (приблизно чверть години + трохи рутини). Задача приблизно така: є такий код, поясніть, що корисного він робить. Практиці... Якщо на проекті дуже багато таких бітових оптимізацій, то моє бачення, що його треба обовʼязково показувати на співбесіді, тому що багато кандидатів не захочуть (або не зможуть) з цим працювати.

Якщо брати merged, то,як на мене, треба це робити inplace, наприклад, при умові, що у першому массиві достатньо місця. Головна фішка — починати з кінця.

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

Раджу полистати літкод і подивитись найбільш залайкані рішення для задачок. Ви переконаєтесь, що можна писати складні алгоритмічні задачі, при цьому давати всьому осмисленні імена і сам код писати чисто, читаємо.
Також я переконаний, що якщо людина не може дати осмислене ім’я тому, що вона пише, вона до кінця не розуміє, що насправді робить.

Якщо на проекті дуже багато таких бітових оптимізацій,

В такому разі у вакансії мають бути прописані додаткові(а може й основні) вимоги у вигляді обширного досвіду з бітовими маніпуляціями і оптимізаціями. В такому випадку це нормально, ви просто шукаєте вузькопрофільного спеца, інша справа, що такі специ можуть роками шукатись і не знайтись.

Елегантність і прокляття С++ в тому, що є розділи, в які можна досить глибоко заглиблюватися і завалити будь-якого с++ гуру якщо він не працював з цим розділом декілька років.
Наприклад, можна почати питати задачі з макросами, закручувати і закручувати, задавати багаторівневі вложені макроси при цьому міксуючи їх в дужках і т.д.
Або почати дрючити якісь рідковживані аспекти STL, особливо з нових стандартів.
І виправдовувати це тим, що у вас на проекті є макроси і STL.

Якщо брати merged, то,як на мене, треба це робити inplace, наприклад, при умові, що у першому массиві достатньо місця. Головна фішка — починати з кінця.

І тут ми приходимо до ще однієї причини необхідності лайв кодингу :)
Якщо людині дати написаний текст з умовою, то ми можемо перевірити уважність і відношення до роботи. Один кандидат прочитає лише заголовок і кинеться кодити, пропустивши ряд важливих умов в тексті, в результаті видасть неправильне рішення, а інший прочитає уважно, задасть уточнюючі питання, озвучить рішення і тільки потім почне писати. З великою ймовірністю, другий тип кандидатів буде видавати більш правильні рішення як на інтерв’ю так і в роботі.
Конкрентно в цій задачі ЯВНО вказано, що результат має бути inplace і що перший масив завжди гарантовано має достатньо місця
The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n.

Раджу полистати літкод

Не знаю, я колись полистав літкод, та не знайшов геть нічого цікавого. Коли задача про N ферзів на шахівниці це найвища складність, то про що може йти мова? Як на мене, то елементарні алгоритмічні задачі. Про те мені все рівно цікаво, яки імʼя змінних вибере той, хто ратує за осмислені назви змінних.

static inline uint64_t ncm(uint64_t x)                
{                                                                       
    uint64_t a = x & -x;                                                
    uint64_t b = x + a;                                                 
    uint64_t c = b ^ x;                                                 
    a <<= 2;                                                             
    c /= a;                                                            
    return b | c;                                                       
}

У мене зʼявилася одна ідея, але на наступний день, тому я не дуже впевнений.

Конкрентно в цій задачі ЯВНО вказано, що результат має бути inplace і що перший масив завжди гарантовано має достатньо місця

Я це побачив трохи пізніше. Така задача була раз на співбесіді. Ідея мержити з кінця прийшла на щастя миттево. Написання коду на аркуші паперу 5 хвилин, але трохи протупив на тому, що на прикінці копіював массив сам у себе.

Елегантність і прокляття С++

Для складних алгоритмічних оптимізованих задач я більше схильний до C. Як на мене, C++ та STL містить різні std::map та інші блоки, які спонукають рухатися трохи у напрямку оверхіду.

Коли задача про N ферзів на шахівниці це найвища складність, то про що може йти мова?

Мова йде про різні складності задач, легкі, середні та важкі. Задача з ферзями точно не є легкою, можливо, середньою, але для людини без підготовки вона точно буде складною.

Дійсно складні задачі, як на мене, це задачі типу імплементації алгоритму А*, до речі це одна з найпопулярніших задач на співбесіді в Амазон.

Як на мене, C++ та STL містить різні std::map

Є дуже велика когорта здача, рішення яких вимагає списків, хеш-таблиць та BST. Імплементовувати це все з нуля ще й на С, ну, м’яко кажучи, не розумно. Саме для цього потрібен STL.

std::map та інші блоки, які спонукають рухатися трохи у напрямку оверхіду.

Використовувати наявні контейнери та алгоритми до них це розумно, писати кожен раз велосипед — ось це оверхед.

Є дуже велика когорта здача, рішення яких вимагає списків, хеш-таблиць та BST. Імплементовувати це все з нуля ще й на С, ну, м’яко кажучи, не розумно. Саме для цього потрібен STL.

чому не Го, Руст, або Пайтон?

Та пофіг, хоч джава хоч джаваскріпт.
Головне не вигадувати велосипед кожного разу.
Просто в цьому треді розмова пішла в контексті С and C++

В питоне нету BST в базовых структурах

забув хоча б одну бітову операцію — всьо, п**ц.

Забув одну бітову операцію це по епічності десь як забув одну букву алфавіту :).

Лайв коіднг це класна тєма, коли задача максимально легка і близька до практики. Суть не в тому, щоб перевірити хто розв’яже, а хто ні — розв’яжуть всі, хай і з допомогою інтерв’юера. Суть в тому, щоб подивитися на процес, зрозуміти пріоритети, хід думок і мотивацію.

При чому завдання має бути настільки простим, щоб його міг розв’язати джуніор, навіть коли шукаєш сіньйора. І не алгоритмічні задачки чи особливості мови, а дописати дрібну фічу в існуючу невелику апку. Навіть якщо в тій невеликій апці будуть незнайомі бібліотеки, то ще краще — один кандидат погуглить чи подивиться в інтерфейс, інший — попросить допомоги в інтервюера, шо не є зле. Загалом, це тєма класна, з власного досвіду

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

вміння працювати і думати в стресовій ситуації
терплячість

Залежить від позиції і вимог. Це всюди це обов’язкова вимога, так можна відсіяти розумних і креативних людей за те що вони недостатньо терплячі і стресостійкі, хоча для команди ці люди могли б принести багато користі.

Залежить від позиції і вимог. Це всюди це обов’язкова вимога, так можна відсіяти розумних і креативних людей за те що вони недостатньо терплячі і стресостійкі,

И это большое благо. Т.к. нормальные люди не пойдут работать туда, где много стресса и сберегут себе нервы.

Плюсую, такій підхід дозволяє виявити сильні сторони кандидата. Але в наших реаліях 23 річні сеньйори «валять» кандидатів алгоритмами які людство роками виробляло, а якщо ти вирішуєш його за пів години, сеньйор позіхаючи: — «ну окей, але щось довго»:)
Але, все ж таки задачі краще давати під кожний рівень окремо.

Якщо на інтерв’ю хочуть провірити як людина думає, то чому не дають користуватися гуглом і документаціями?

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

Особисто я давав таку можливість. Якщо в голові порожньо, то це не приховаєш (не вийде або нормально нагуглити, або адекватно потім пояснити код).

Гугл якраз відучує думати і шукати рішення самостійно, а вчить шукати рішення в Інтернеті

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

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

Ви так говорите, ніби це здача аналізу крові, а не livecoding

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

Не знаю, як у вас в Android з співбесідами, а на Java-вакансії зазвичай говорять, скільки воно займе за часом. Година або півтори. І це вже справа інтерв’юера вирішувати, як він буде проводити — ставити питання або організувати livecoding.
Як на мене — livecoding цікавіше.

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

Какие там алгоритмы?! Знали бы вы сколько синьоров не смогли в простой FizzBuzz у меня на лайв кодинге. При этом я не давил, не валил, старался направлять и подсказывать.

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

У меня была на обход дерева

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

рекурсия — в реальном мире не заюзаешь

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

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

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

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

там же ж 2 строчки, одна из которых это импорт стандартной либы (какжется sys), не?

одно skewed tree и у вас уже глубина стака равна количество нодов

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

рекурсия — в реальном мире не заюзаешь

Бля, ти пишеш цей комент на древовидному форумі... Я десь на 99% впевнений, що код, який малює комменти рекурсивний, лол.

Я десь на 99% впевнений, що код, який малює комменти рекурсивний, лол.

Ну вообще-то нафиг не нужно. Поскольку только более поздний комментарий будет «вложен» в более ранний, достаточно такого:
for (комментарий order by date_added asc) {
if (c.parent) { add_after_parent; }
else { add_to_top; }
}
Ну и add_after_parent проверяет глубину, переводит в смещение (с ограничением) и вставляет в DOM после предыдущего.

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

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

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

Все правильно делают

Поэтому что это вам не чятик и не двачи с линейной архитектурой.

Поэтому что это вам не чятик и не двачи с линейной архитектурой.

А по существу будут аргументы? И что такое эти «чятик» и «двачи»?

FizzBuzz это задачка на адекватность.

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

если человек её не может решить, то он даже не трейни

если «рынок хавает» таких кандидатов, то кого это волнует?

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

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

Дивись, ти прийшов собєсєдоваццо, а тобі куяк — лайвкодінг.
Хотя би пєрдупєрждать надо, може в мене вантуз з месангером, а тут збацай нам лайвкодінг і неіпьот.

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

Есть большие вопросы к вашему менеджменту. Как можно не знать рекурсию!?

Думаете менеджмент ее знает? 😁

А вы не думали от обратного? Если сеньор стал сеньором, и не может

в простой FizzBuzz

то возможно ему это и нахрен не нужно в работе, и забылось как бесполезный навык?

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

то возможно ему это и нахрен не нужно в работе, и забылось как бесполезный навык?

Какой именно навык не нужен? Проходить циклом, использовать условный оператор или делить по модулю?

А кого бы вы выбрали, если перед вами три человека решили эту задачу:
1. Скопипастил лучший ответ с SO и решил задачу за 10 сек.
2. Стандартным способом написал перебор с ифами и делением по модулю и решил за 1 мин.
3. Решил не стандартным способом, но оптимизировано, за 10 минут

Очевидно, второго.

Если бы мне надо было проверить гугл-фу, я бы дал другое задание, которое было бы посложнеее запроса «FizzBuzz java example». Это предназначено именно для проверки навыков погромирования. Если человек не понимает этого, то он не умеет работать с требованиями. Потому первый не подходит. Третий не подходит по тем же причинам, ибо если оптимизация изначально не описана в требовании, а он не уточнил, а сразу начал пилить оптимизированную версию, тратя на это в два-три раза больше времени (все таки прям за 1 минуту даже FizzBuzz решить сложно, если ты заранее не знаешь, что его надо будет решать), то это плохой программист.

Это очень похоже на system design интервью в всяких фаангах, только на минималках. Простой пример: собеседующий говорит тебе: «спроектируй морской бой», и все. А дальше ты должен уточнять фунциональные требования, правила игры, нужно ли тебе проектировать сетевой стек или только клиенскую часть и т.д., Сначала ты должен убедится что вы с интрервьюером на одной волне и говорите об одинаковых вещах и только потом начинать проектировать.

Это очень похоже на system design интервью в всяких фаангах, только на минималках.

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

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

Я же как раз писал, что можно понять сколько у него опыта. Не обязательно проектировать на основании творчества, можно же просто пересказать готовую систему адаптированную под задачу. Все у всех одинаковое же.
Есть вот ролик Архитектура Web Приложений www.youtube.com/...​nel=SeniorSoftwareVlogger
Так я могу сказать, что на всех проектах, где я был, все тоже самое. А на уровне классов проектирование, то уже такое, в основном фреймворк и шаблоны не сильно дают разгуляться.

Так а чем тогда они на работе занимаются? Формошлепством? Там тоже архитектуру намутить можно с валидациями кроссзависимостями и абстракциями

4. Взял готовую либу от тогоже гугла и заюзал ее. 100% вариант, хоть и не самый быстрый.

А кого бы вы выбрали, если перед вами три человека решили эту задачу:
1. Скопипастил лучший ответ с SO и решил задачу за 10 сек.

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

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

Само программирование с нуля логики крайне примитивно.

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

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

Если это примитивно, то что мешает написать на собеседовании?

На работе оно примитивно. Вытащить данные, поиграть с ними, куда-то отдать, как-то сгруппировать и т.д..

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

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

«большинство» это достаточно субъективная категория.

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

На работе оно примитивно. Вытащить данные, поиграть с ними, куда-то отдать, как-то сгруппировать и т.д..

Не у всех работа настолько тупая :)

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

Я ни разу не пользовальзя роутингом, ORM не использовал практически никогда. Алгоритмы сортировки это тривиально. Если брать нетривиальные примеры, то для меня это написание быстрых вычислителей силы руки в разных покерных играх. Ну или вот играл со своим отцом в дестве в футбол на листе бумаги: каждый должен сделать по три «ходика», если завёл сопеника в тупик — пробиваешь пенальти. После этого я учил всех играть в школе. Потом в институте. А сейчас захотелось вспомнить детство. Попробовал поискать в Goole Play? А нету! Что делать, если нету партнёра? Нужно написать своего :)

Какой именно навык не нужен?

навык заниматься фигней: все эти попытки косплеить FAANG выглядят убого, особенно когда повседневной работе придется клепать REST и формочки.

Мало того, в самих фангах 85% работы — это клепать рест и формочки... И остальные 14% это архитектура и знание баз, инфраструктуры, особенностей кубернетисов, aws, gcp, и всяких спарков. Реальные алгоритмы очень мало людей пишет, в очень специализированных кейсах.

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

Ой не правда) кто-то просто неосилятор.

Умение быстро дроч***ть не показатель секс-гуру.

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

Вы таки не сравнивайте fizzbuzz (простейшая задача на ноль хитрых потребностей и знаний) и заковыристости с leetcode.

мы тебе не верим

люблю когда люди начинают свою комментарий с конструктива

Хей! Я навіть не згадаю що то за FizzBuzz без Гугла.

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

Я спершу здивувався, але потім згадав, що у Світла Системс вже давно кадровий голод.

дивує те, як люди на форумі пишаються своєю нелюбов"ю до програмування

Розробка ПЗ — це не тільки вміння вирішувати стандартні університетські задачки, які дають на лабораторні роботи.
Хоча цей навик також потрібний, але його можна швидко прокачати специфічними завданнями.
Такі завдання здатні виконувати як індуси, так і 11-тирічні діти.
Перевірено не раз на практиці.

Тому проводячи такі сесії лайв-кодингу ви наберете в команду початківців та власне згаданих індусів. Бо вони якраз на етапі прокачки вміння вирішувати простенькі задачки, але швидко.
А більш серйозні спеціалісти, якщо й зуміють швидко зорієнтуватись, то поставляться до ваших уявлень про підбір кадрів без розуміння.

Такі завдання здатні виконувати як індуси, так і 11-тирічні діти.

АХАХАХАХАХАХАХАХА

Тому проводячи такі сесії лайв-кодингу ви наберете в команду початківців та власне згаданих індусів.

Это скорее тест на отсеивание полного неликвида.

Лайв-кодинг — непогана альтернатива тестовому для перевірки навичок кандидата, витрачає менше часу і дозволяє вести діалог з ним в процесі. Іноді лайв-кодинг є вимогою від клієнта при наймі.

Я не знаю, які більш надійні інструменти для перевірки професійного рівня кандидатів ви використовуєте. Мені було б цікаво дізнатися

нелюбов"ю до низких рейтов

Пофикшено

сколько синьоров не смогли в простой FizzBuzz у меня на лайв кодинге.

О, тогда в 14-15 лет я был мощным сеньйором, потому как 3 пары в неделю только тем и занимались, что штудировали 100500 классических алгоритмов по Окулову. А теперь очень повезет, если 5% вспомню :)
Хотя в данном случае крайне сомневаюсь, что кто то не смог это запилить, если давалось описание что оно должно делать, а не просто FizzBuzz мне запилите.

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

Мишки пищали і плакали, але продовжували гризти кактус.

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

Чесати за GC, оптимізуючі компілятори, функ-прогр, tail call optimization, розподілені БД це не те ж саме, що писати код. Вот взагалі. Різниця десь така ж сама, як між вмінням розказувати за оксіацитиленову сварку і вмінням нею користуватись.

Абсолютно згідний із вашим баченням.

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

Сам кілька разів співбесідував народ, який не зміг реалізувати FizzBuzz.

Сам кілька разів співбесідував народ, який не зміг реалізувати FizzBuzz.

Ну не знаю... Как можно писать код 5-10-15 лет в любом виде и надорваться на такой таске? Это 7 класс информатики, задача при изучении циклов, сразу после темы с определением четности числа. Если такое фэйлит сеньйор, после описания задачи, то он на чем то тяжёлом сидит. Интересно, что было после фэйла? Собес скоропостижно завершили или все таки взяли?

Как можно писать код 5-10-15 лет в любом виде и надорваться на такой таске?

Чем лучше знаю я людей, тем больше я люблю животных

Так це не тільки мій досвід. Мене допустили до інтерв’ювінга коли FizzBuzz вже був мемом, тому я його тільки пару разів встиг задати. А от Jeff Atwood (со-)засновник Stack Overflow про це писав ще в 2007: blog.codinghorror.com/...​cant-programmers-program

Я от не певен, що половина мого випуску з універу (кібернетика КНУ, 2009р) змогла б рішити FizzBuzz... Тобто, блять, це наскільки треба бути впертим/тупим/ледачим/заляканим, щоб відсидіти 8 семестрів різного роду курсів програмування з лабораторками і, блять, так і не навчитись програмувати?

Єдиної відповіді немає і на цю тему написано мегабайти срачів. В цих срачах часто піднімають насправді цікаві питання:
— а може FizzBuzz реально важка задача?!
— а може live coding настільки стресовий, що навіть серйозні програмісти починають сипатись?
— а може це ми просто співбесідуємо дебілів, бо хороші програміст довго без роботи не сидять? А дебіли, які не можуть написати FizzBuzz, просто ходять на дохуїща співбесід і це про одних і тих же людей народ жахається?
— а може ми дуже переоцінюємо середній рівень і народ реально тупий? А якщо серед, наприклад, лікарів десь такий же повальний рівень некомпетентності?

От на останню тезу недавно прочитав афігенно цікаву статтю: danluu.com/p95-skill Там все прикольно, але якщо лінь читати, то чуваки задались питання компетентності. Де взяти статистику? Ну ... є шутер overwatch (я не грав і не дуже уявляю що це), і по ньому відбувається до*** онлайн матчів, є статистика, + є до*** записів матчів. Проаналізували гру якигось чуваків з кінця топ-5% світового (!) рейтингу і охуїли — дуже дофіга дуже тупих помилок. Причому не просто якісь тактичні пройоби, а реально базові помилки (там є досить довгий список): standing next to the objective instead of on top of the objective while the match timer runs out, turning a probable victory into a certain defeat.

Ну ладно ... чому чуваки з топ-5% туплять? Може просто грають «для фану»? Наче ні, бо коли виходять «в топ», то там вже азартно і грають «на перемогу» просаджуючи дофіга часу. Може вони знають про свої пройоби, але просто ще не натренувались правильно? Наче ні, бо топ-5% народ просаджує сотні годин на гру. Може просто тупі і їм ніхуя не світить? Наче ні, бо якщо правильно тренуватись, то народ стає досить норм. А може просто не знають про свої фак-апи і тому не знають як їх фіксити? От тут уже тепліше:

If you read Overwatch forums, you’ll see a regular stream of posts that are basically «I’m SOOOOOO FRUSTRATED! I’ve played this game for 1200 hours and I’m still ranked 10%-ile, [some Overwatch specific stuff that will vary from player to player]». Another user will inevitably respond with something like «we can’t tell what’s wrong from your text, please post a video of your gameplay». In the cases where the original poster responds with a recording of their play, people will post helpful feedback that will immediately make the player much better if they take it seriously. If you follow these people who ask for help, you’ll often see them ask for feedback at a much higher rank (e.g., moving from 10%-ile to 40%-ile) shortly afterwards. It’s nice to see that the advice works, but it’s unfortunate that so many players don’t realize that watching their own recordings or posting recordings for feedback could have saved 1198 hours of frustration.

Ну а далі говориться про Real Life — а що, якщо лікарі такі самі?! Короче рекомендую всю danluu.com/p95-skill :).

Я от не певен, що половина мого випуску з універу (кібернетика КНУ, 2009р) змогла б рішити FizzBuzz... Тобто, блять, це наскільки треба бути впертим/тупим/ледачим/заляканим, щоб відсидіти 8 семестрів різного роду курсів програмування з лабораторками і, блять, так і не навчитись програмувати?

Вот.
Ноги у твоих заблуждений растут из посылки, что программистом можно стать только через универ/ПТУ/курсы.
70% современных программистов не имеют релевантного специального образования. Да оно и не целесообразно, за 8 семестров все подходы к решению задач индустрии 5 раз поменяются. И все полученные знания — устареют.

посылки, что программистом можно стать только через универ/ПТУ/курсы.

Всему можно научиться самому. Я бы даже сказал, нет «обучения» есть «самообучение и помощники». И в теории ВУЗ должен чуть более эффективнее помогать в самообучении, чем остальные варианты. На практике, если человек рассказывает что ВУЗы не нужны, то (по статистике) он — г-нокодер.

Звідки ти взяв, що у мене є переконання, що

программистом можно стать только через универ/ПТУ/курсы.

Я навіть віддалено не розумію чому тобі здалось, що у мене є це переконання.

Мій приклад з випускниками мого факультету був виключно для того, щоб показати, що це 1) дійсно релевантний досвід — ну не писати ж мені про КПІ, чесне слово. 2) все-таки спеціальність напряму пов’язана з програмуванням.

І, на всяк випадок, я маю на увазі свій курс (~200 людей), а не одногрупників (15+я) — у нас була дуже задротська група і у нас якраз наче всі шарили. Якщо хтось з вас читає, то привіт :).

все подходы к решению задач индустрии 5 раз поменяются.

Які на*** індустріальні підходи в FizzBuzz? Там треба тільки for і if, які вже незмінні 50+ років і, думаю, ще стільки протримаються.

Які на*** індустріальні підходи в FizzBuzz? Там треба тільки for і if, які вже незмінні 50+ років і, думаю, ще стільки протримаються.

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

Я навіть віддалено не розумію чому тобі здалось, що у мене є це переконання.

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

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

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

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

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

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

Якщо від чувака очікується, що він видаватиме код з такими конструкціями як for і if, то я абсолютно вправі запитувати їх на співбесіді. І якщо він без гугла не зможе їх написати, то бля — я ***в що він там п***иренькає про «індустріальні підходи», TDD, фреймворки, agile, задачники 7-ого класу по інформатиці, GC, reflections, API, ... — я його всерівно запишу в категорію повних ідіотів повністю і тотально некомпетентних в програмуванні.

очікується, що він видаватиме код з такими конструкціями як for і if

Я пишу на Котлин с 2018 года. Ни разу не пользовался там for.
Для итерации по коллекциям есть функция forEach() с лямбдой. If практически полностью вытеснен when.
Как пользоваться обоими этими инструментами — лежит в документации и там реально несложно.
И главное — ничего страшного от неправильного их использования не произойдёт.
А вот если кандидат начнёт писать во вьюхах бизнес логику — отут да, жди беды.

я його всерівно запишу в категорію повних ідіотів повністю і тотально некомпетентних в програмуванні.

Ты забыл добавить побитовые операции и святая святых — регекспы. Я их тоже без Гугла не вспомню ни одного :)
И да, все, кто не помнит это наизусть — умственно отсталые и не программисты.

Для итерации по коллекциям есть функция forEach() с лямбдой. If практически полностью вытеснен when.

Не вопрос, напишите fizzbuzz на foreach и when.
Напишите хоть на чём-то. Лишь бы работало.

Ты забыл добавить побитовые операции и святая святых — регекспы. Я их тоже без Гугла не вспомню ни одного :)

Утрируете, бесцельно.

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

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

?
Это ж индустрия не игры в пингпонг и споров на тракторные темы. Тут еще и программировать нужно уметь.

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

Я нормально собі «вивчав» — не вчився на програміста і всі знання і досі отримую сам.

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

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

Да оно и не целесообразно

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

за 8 семестров все подходы к решению задач индустрии 5 раз поменяются.

В основах программирования что то поменяется, кардинально да еще и за 4 года? :) Или речь о конечных инструментах аля фреймворках? Так их там и не учат.

И все полученные знания — устареют.

Устареют знания как формализовать задачу и написать простой алгоритм?

за 8 семестров все подходы к решению задач индустрии 5 раз поменяются

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

И все полученные знания — устареют.

Ти не плутаєш знання і навички? З моїх знань отриманих ще за часів DOS нічого не застаріло. Щось просто не актуально для специфіки моєї роботи, але так само лишається релевантним для конкретних аспектів.

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

Изи. В 2012-2013 в Андроид считалось нормой фигачить всю логику в активити.
К 2014-2015 особо просветлённые стали нести свет Model-View-Presenter в массы. С 2018 экстремалы типа меня уже экспериментировали с MVVM и Kotlin. Сейчас я смотрю на проекты без этого как на говно.
Команда на проекте с MVP архитектурой неделю будет делать то, что я на MVVM или MVI смогу за пару дней.
Кроме того, RxJava с 2016 по 2020-й год прошла путь от обожествления до полной анафемы. И из безальтернативного подхода стала антипаттерном.

Ти не плутаєш знання і навички?

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

в Андроид считалось нормой фигачить всю логику в активити.

Це не знання — це підхід до організації коду логіки.

Model-View-Presenter

Теж не знання, просто патерн.

RxJava

Це на знання — це технологія.

Для решения задач знаний не хватит — нужны конкретные навыки.

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

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

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

Технологии гораздо проще применить, чем знания.

Але це не означає, що знання застаріли.

Потому что знания — фундаментальны.

Саме так. І в знаннях отриманих ще 20 років тому досі багато чого актуального та незмінного.

знания нужны для разработки технологий и подходов.

І продуктів. І сервісів. І інструментів. І процедур...

І продуктів

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

Технології потрібні для здешевлення, прискорення та підвищення якісних характеристик. Але це не означає, що якісь знання конкретно в CS застаріли та неактуальні.

Така структура даних як список і 60 років тому так само точно використовувалася як і сьогодні.

Постійно виникає щось нове у будь-якій області, навіть у давно розроблених.

Список, кажете? Ось є skiplist. Так, це не останні 10 років, і навіть не 20, але значно пізніше, ніж 60.
Пресловуті сортування? Quicksort з двома розділювачами, Timsort.
Швидке множення? Алгоритм за O(n log n) на базі БПФ.
І так далі.
А уж області що активо розвиваються, як ML... там такого десятками на рік.

Так, старі знання по більшости не втрачають актуальність (хоча, наприклад, 100500 зовнішніх сортувань, що описані у Кнута, зараз нікому не потрібні). Але їх стає недостатньо.

Ось є skiplist. Так, це не останні 10 років, і навіть не 20, але значно пізніше, ніж 60.

Це не означає, що список застарів і знати про нього не треба.

І так далі.

Саме так — фундаментальні знання лишаються знаннями.

старі знання по більшости не втрачають актуальність ... Але їх стає недостатньо

Йшлося про те, що знання саме втрачають актуальність і непотрібні, а от новий фреймворк кожні пів-року — ось це сама суть.

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

(повторюсь) 100500 «зовнішніх сортувань» і вся теорія, що повʼязана з ними.

Всі алгоритми, що вважали, що доступ до RAM рівномірний (див. класичний приклад з множенням матриць).

Всі розробки з floating point, що були адаптовані до стандартів до IEEE754.

Можна ще продовжувати...

100500 «зовнішніх сортувань» і вся теорія, що повʼязана з ними

І що з ними не так? Припинили працювати та бути правильними, чи в чім їх неактуальність?

Всі алгоритми, що вважали, що доступ до RAM рівномірний (див. класичний приклад з множенням матриць).

І досі використовують всюди.

Всі розробки з floating point, що були адаптовані до стандартів до IEEE754.

Floating point і зараз живе собі без проблема. Конкретна імплементація — так, можливо вже не актуальна.

І що з ними не так? Припинили працювати та бути правильними, чи в чім їх неактуальність?

Не нужны.

І досі використовують всюди.

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

Floating point і зараз живе собі без проблема. Конкретна імплементація — так, можливо вже не актуальна.

Ну вот именно. Тонкости поддержания погрешности не более 1.5 ULP для какого-нибудь синуса принципиально различаются при основаниях 2, 10 и 16 — настолько, что их можно считать разными теориями.

Не нужны.

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

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

Через те, що мають знання?

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

І чим в даному випадку знання теорії заважає?

ділення

це просто специфічне множення
А множення — це специфічне складання

Ну ладно ... чому чуваки з топ-5% туплять?

Потому что людям свойственно ошибаться. Во время матча игроку нужно принять несколько тысяч решений, и всегда будет определенный процент ошибок. Любой программист(даже самы умный) знает то чувство когда ты потратил 2 часа не дебаг какой-то фигни которая решается одной строчкой, и ты бьешь себя по лицу ладонью со словами «какой же я дебил». Так что неудивительно что кто-то может затупить на чем-то элементарном.

Тут не про одноразові помилки (brain fart), а про систематичні. Наприклад бувають описки, а буває так, що чувак реально неправильно пише „-ться/-тся” (російською). Там йдеться про те, що топ-5% регулярно робить помилки рівня „-ться/-тся” і получає за це люлєй. Там же основна ідея в тому, що якщо ти зможеш усунути кілька систематичних помилок (тобто помилятимешся в „-ться/-тся” не 50% раз, а тільки, скажем 5%), то попадеш сильно вище ніж в топ-5%.

Having just one aspect of your gameplay be merely bad instead of atrocious is enough to get to 50%-ile. For me, that was my teamwork, for others, it’s other parts of their gameplay. The reason I’d say that my teamwork was bad and not good or even mediocre was that I basically didn’t know how to play the game, didn’t know what any of the characters’ strengths, weaknesses, and abilities are, so I couldn’t possibly coordinate effectively with my team. I also didn’t know how the game modes actually worked (e.g., under what circumstances the game will end in a tie vs. going into another round), so I was basically wandering around randomly with a preference towards staying near the largest group of teammates I could find. That’s above average.

Тобто якщо є багато різних аспектів майстерності і на початку кар’єри вони всі на рівні „повний п****ц” (atrocious), і якщо ти хоч один з цих аспектів прокачаєш чуть-чуть з рівня „повний п****ц” (atrocious) до рівня „просто хуйово” (merely bad), то вже попадеш в топ-50%.

Я от не певен, що половина мого випуску з універу

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

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

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

А якщо серед, наприклад, лікарів десь такий же повальний рівень некомпетентності?

Так уже ж было по новостях, что на потоке поставлена сдача главного мед. экзамена подсадными людьми за ~500$, только на одном экзамене таких более 20 оказалось. Главное, никого там не смущают одни и те же лица.

Особо как то там не отсидишь по профильному, это ж не философия.

Ну от тут поруч є Станіслав, який не просто тихенько відсидів а аж до Senior’а доріс!

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

... і йому ще й за це платять.

не отсидишь по профильному, это ж не философия.
Ну от тут поруч є Станіслав, який не просто тихенько відсидів а аж до Senior’а доріс

Наскільки я пам’ятаю, Станіслав писав, що навчався в морській академії, а не в профільному для комп’ютерних наук навчальному закладі. Чи Ви мали на увазі сидіння на роботі?

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

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

Про «половину курчу» я, мабуть, погорячився, але реально є народ який за 4 роки не навчився програмувати. При тому реально є дофіга народу, які таки добре навчились і поїхали в ФААНГи.

А з того, що ти мою фразу

половина мого випуску з універу

ізковеркав в своє

у тебя в Шеве тоже все тупые были.

якраз означає натякає на те, що на ФІОТі напряжонка з логікою.

Это 7 класс информатики

Не у всех в школе была информатика, ващет.

задача при изучении циклов,

Не все решали задачки на алгоритмы в программистских ПТУ.

Если такое фэйлит сеньйор, после описания задачи, то он на чем то тяжёлом сидит.

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

Ти про які головоломки? Ти умову FizzBuzz читав? Ця задача чуть-чуть складніше ніж вивести «Hello, world!» 10 раз. Чи «Hello, world!» вже теж стало головоломками для спортсменів рівня КМС?

Я вірю в круту архітектуру від чувака, який не взмозі написати Hello, world! рівно настільки, наскільки я вірю командира танкового взводу, який ніколи сам ні одного курка в житті не спустив.

Ти умову FizzBuzz читав? Ця задача чуть-чуть складніше ніж вивести «Hello, world!» 10 раз. Чи «Hello, world!» вже теж стало головоломками для спортсменів рівня КМС?

«Напишите программу, которая выводит на экран числа от 1 до 100. При этом вместо чисел, кратных трем, программа должна выводить слово „Fizz“, а вместо чисел, кратных пяти — слово „Buzz“. Если число кратно и 3, и 5, то программа должна выводить слово „FizzBuzz“ »

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

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.

Боже який кромешний п****ц... Тримай на 3: if (i % 3 == 0) { ... }, тримай на 5: if (i % 5 == 0) { ... }.

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

О. Не помнишь, что такое остаток от деления — не сениор.

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.
Сделаем это критерием прохождения мной технического интервью?

Звісно зробимо.

Ок, я даже спорить не стану с таким интервьюером.

Бля, а що тут спорити? Тут любий спор буде в стилі «как обосраться и не подать виду».

Не работать с такими людьми — большая удача.

Мені подобається як ти перетворив свій пройоб в «большую удачу».

***ть, тобі реально не сцикотно, що тебе в любий момент можуть спіймати на такого рівня некомпетентності? Ну там попросять зробити якусь тривіальний UI (ти ж наче в цій області) де треба буде «розмістити N іконок аплікейшенів в рядки по 5 іконок в ряді» і тебе «розкусять» коли ти підеш це гуглити?

Ну там попросять зробити якусь тривіальний UI (ти ж наче в цій області) де треба буде «розмістити N іконок аплікейшенів в рядки по 5 іконок в ряді» і тебе «розкусять» коли ти підеш це гуглити?

Мимо кассы. Вьюхе можно задать, сколько иконок максимум будет вширину. Остальное она сама скомпонует.
Это последние лет 10 минимум так.

О. Не помнишь, что такое остаток от деления — не сениор.

А если не помнить обычное деление, округление и умножение это сеньйор или нет нынче? :)

Ну такое, *** знает. Если этот слишком просто, то как ты будешь запихивать ключ с int a = 24500 в 16 бакетов хэшмапы или хэшсета) Ну ладно это низкоуровневый шлак и сеньор о таком не думает. Ну ок, как ты будешь дистрибьютить кэш между 5ю нодами)))?

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

эти знания не нужны

какие знания)? Это типа как земля — круглая, да они вроде и не нужны но я хз)

Как дистрибьютить кэш между 5ю нодами? Эти задачи уже решены в СУБД. А то можно и до ручной ребалансировки докатитсья, в случае добавления/удаления ноды, или реализации hash ring. Нафига это разработчику типовых мобильных аппок?

Ты прав. Может я не привел какой-то более адекватный пример зачем знать остаток от деления.

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

Ты прав. Может я не привел какой-то более адекватный пример зачем знать остаток от деления.

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

на клиенте используем целочисленное деление

Це що, мені ще й ділення треба знати? У мене стрес від цього! І взагалі — є бібліотеки які роблять ділення, нема чого таким собі голову забивати.

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

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

const val 5_MINUTES_OF_OUR_TIME_MILLISECONDS: Long = 5 * 60 * 1000

const val 5_MINUTES_OF_OUR_TIME_MILLISECONDS: Long = 5 * 60 * 1000

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

И раз уж на то пошло, реши тогда с помощью этой констатны такую задачу:
c бека пришло время ожидания выполнения заказа
{ "order_placet_at":"2021-07-01T11:34:37+0000" "order_estimated_complete_time":400 }
где время заказа в секундах
Тебе надо вывести текст с «Осталось XX:YY до выполнения заказа», где этот текст делает обратный отсчет каждую секунду. Как ты будешь это делать?

где время заказа в секундах
Тебе надо вывести текст с «Осталось XX:YY до выполнения заказа»,

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

 if (booleanFlag.toString() == "false") {
  println("This should have never happened!!11");
}

Таска

перевести секунды в минуты

Реализация:
*переводит минуты в миллисекунды.

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

Готово :)
www.meme-arsenal.com/...​71ac556077b8a6d03888d.jpg
www.meme-arsenal.com/...​f7b3820e2f306fe126bb5.jpg

Классический ring buffer c размером 2^N

Как раз 1С и SAP включают в себя функциональность, например, всяких там расчётов налогов, страховых выплат и т.п. Причём, в зависимости от местных правил, могут быть оччень интересные тонкости.
Например, представим себе при НДС 20%: в накладной два товара по 2.12, всего на 4.24. Если округление до ближайшего, и взять НДС раздельно, то он будет равен 0.84, а если с суммы всей накладной, то 0.85. А если всегда выбрано округление вверх, то в первом случае будет 0.86. Чтобы правильно настроить систему, надо и знать законодательство, и знать правила арифметики включая особенности финансовой арифметики, типа правил округлений, которые в школе обычно не дают :)

А вот уеб-фронтэндеру, действительно, даже какие-нибудь «здесь задаём 37% ширины внешнего фрейма» пофиг, он всё на глаз и наугад делает.

О, я с этим всем знаком непосредственно 😄 Это было в контексте примера о бакетах/шардинге.

Не помнишь, что такое остаток от деления — не сениор.

Не програміст. І навіть в арифметику не вмієш скоріш за все.

И в ботанику — тоже не умею

А розказуєш, що ботанік? Не треба так.

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

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

1) Это приводит к тому, что Активити/Фрагмент разрастается до потенциально бесконечного размера. Это на порядки увеличивает время внесения изменений в такой код.
2) Написать юнит-тесты для бизнес логики в Активити/Фрагментах — невозможно. Их инстансы живут только на устройстве/эмуляторе. В студии эти тесты не прогнать.
3) Большое количество разного кода в одном файле будет вести к частым конфликтам при мёрже.
4) Если такая же функциональность потребуется в другом фрагменте/активити, мы следуя этой логике, напишем её клон.
В итоге, 70% кода проекта будет состоять из клонов. А потом придёт риквест на изменение логики одного из типов этих клонов — придётся искать это всё поиском по проекту и менять в 5-10-15-20 местах.

но задачка выше — это ж элементарщина

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

выходит ты даже базовых вещей того же Котлина не знаешь.

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

Але навіщо нам перевіряти чи ділиться число на три чи п’ять, чи ні? Якщо ми виводимо числа в циклі, то швидкіше буде для п’яти й для трьох завести окрему змінну:

int countByThrees = 0;
int countByFives = 0;
...
if (++countByThrees == 3)
{
 ...
 countByThrees = 0;
}
if (++countByFives == 5)
{
 ...
 countByFives = 0;
}

Там вообще никаких переменных левых не надо заводить. Точнее одну — пустую стрингу. Идешь по циклу, проверяешь, делится ли на 3 без остатка, конкатенируешь туда Fizz, потом проверяешь, делится ли на 5, конкатенируешь Buzz. Если в конце итерации длина строки больше ноля, печатаешь строку, если пустая — выводишь число.

проверяешь, делится ли на 3 без остатка,

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

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

Huh? Хіба не всі арифметичні операції зараз займають від 1 до 7 циклів?

Крім того ось те що інкрементується треба прочитати/записати додатково в той час як індекс циклу вже в регістрі лежить.

Я заради цікавості запустив
for (i  = 1; i < max_uint32; i++) {
    counter++;
}
Та
for (i  = 1; i < max_uint32; i++) {
    i%3;
}
З інкрементом вийшло на 40% швидше (6 секунд проти 10).

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

Так швидше відпрацював перший варіант, той що з інкрементом (counter++).
А от щодо генерації коду, тут, схоже, Ви праві. Я спробував здобути, щоб якийсь код таки було згенеровано:
if (counter++ == part_of_max_uint32) {     printf("i=%u\n", i);
    counter = 0;
}
та
if (!(i%part_of_max_uint32)) {
    printf("i=%u\n", i);
    counter = 0;
}
То варіант з інкрементом мало того що виявився на 10% повільнішим, так ще й не виловив того варіанту, де i==part_of_max_uint32 (я поставив part_of_max_uint32 = max_uint32/8)
Але цікаво інше. Цього разу варіант з інкрементом відпрацював за 10 секунд, а з остачею за 9, що на секунду швидше, ніж коли варіант з остачею взагалі нічого корисного не робив.

Ось тут можна подивитися чому — godbolt.org/z/Gvf94zfYf. Вибери свій компайлер і порівняй який код він генерує в обох випадках. Хороший компайлер перший варіант зведе до

counter += max_uint32;

а другий — до повної відсутності коду.

Дякую, сьогодні подивлюся.

*Інкремент не відловив випадку де i==(max_uint32-7), тобто він мало того що на 10% повільніший вийшов, так ще й код виходить менш елегантний — потрібно додаткову умову ставити, щоб він спрацював.

Але цікаво інше. Цього разу варіант з інкрементом відпрацював за 10 секунд, а з остачею за 9, що на секунду швидше, ніж коли варіант

Поменять одну железку на другую на 100$ дороже и вся твоя оптимизация летит в мусорку, т.к. алгоритм с ней будет выполняться за 2 с.

Я спробував здобути, щоб якийсь код таки було згенеровано:
if (counter++ == part_of_max_uint32) { printf("i=%u\n", i);
counter = 0;
}
та
if (!(i%part_of_max_uint32)) {
printf("i=%u\n", i);
counter = 0;
}

А вот тратить время человека с зарплатой 50-100$/час на чтение этих вырвиглазных нагромождений символов, которые уменьшают время вычислений аж на 0,2 с, это таки да, дорого.
Код должен не быстро выполняться, а легко читаться.
С появлением массовых квантовых компьютеров тонкая оптимизация производительности станет достоянием истории.

Буває таке, що код повинен швидко виконуватися. Наприклад, код, який здійснює обробку мережевих пакетів, які передаються мережевим пристроєм — зменшення швидкості обробки пакетів веде до зменшення пропускної здатності пристрою.

зменшення швидкості обробки пакетів веде до зменшення пропускної здатності пристрою.

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

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

С массовым появлением квантовых вычислений

Когда же этот день настанет? И что делать пока/если он не настал?

А поскольку всё бо́льшая часть софта будет писаться для клиента, там то быстродействие вообще неактуально

Что делать если клиент — разработчик сетевого оборудования?

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

Расскажи это Интелу и DPDK.

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

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

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

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

А что под аббревиатурой NSS?

Network Subsystem. Окремий чіп зі своїм процесором та пропрієтарною операційною системою, призначений для керування мережевими пакетами. Такі рішення використовуються на деяких платформах для збільшення пропускної здатності. Звісно, платформа повинна мати підтримку такого чіпа, як і у випадку DPDK.

Когда же этот день настанет? И что делать пока/если он не настал?

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

Что делать если клиент — разработчик сетевого оборудования?

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

Расскажи это Интелу

То-то они столько ресурсов вкладывают в разработку новых поколений процессоров.
Мой ноут 2013 года отстал ЕМНИП на 5 поколений. Которые отличаются друг от друга как лук и стрелы от винтовки М16.

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

Так у нас проблема с обработкой, или передачей?

Так у нас проблема с обработкой, или передачей?

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

Перед тим як передати пакет, його потрібно обробити

Вот для ускорения этого процесса проще и дешевле воткнуть ещё планку

Вот для ускорения этого процесса проще и дешевле воткнуть ещё планку

воткнуть миллион планок в миллион девайсов уже не дешевле

воткнуть миллион планок в миллион девайсов

За счёт пользователей — никакой разницы. А убедить пользователей купить себе телефон покруче — не проблема

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

Я так понимаю, ты понял что он имеет в виду под «планкой»?

Планку оперативной памяти, мой прошлый CEO так и говорил, не трате время на оптимизацию, пилите фичи, если что еще оперативы докинем.

У тебя есть условное сетевое устройство работающее 24/7, входящий поток данных в которое равен 1Gb/s . Алгоритмы внутри, написанные Станиславом согласно «современных индустриальных подходов» без использования остатка от деления успевают обрабатывать и выдавать наружу этот поток со скоростью 500Mb/s. Каким образом планка оперативной памяти решит эту проблему?

Embedded твой это отдельная сфера, там работают меньше 10% разработчиков, а драйвера для таких устройств пишут меньше 1%.
Мы говорим про обычный Enterprise.
Вам не надо знать все 200 сервисов AWS и Kubernetes, и всякие DDD, SQRS, Event Sourcing.
Но надо знать кучу того, что я не знаю.
А мне не надо знать как байты дрочить, но надо знать все что я описал, нельзя всех равнять под одну гребенку.

С чего ты взял что

Мы говорим про обычный Enterprise.

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

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

Есть, но драйвера для них пишут 0.1% разработчиков,

А причем тут драйвера?

остальные просто вызывают методы фреймворка или ОС.

Можно писать с использованием современных индустриальных подходов из юзерспейса файл/сокет через write, выделяя буфер под пакет, формируя его заголовки и копируя данные через memcpy. А можно воспользоваться writev с указателями на уже существующие буферы с данными и избегнуть копирования. Второе работает быстрее, оба — методы ОС, но где тут драйвера/эмбед/etc ума не приложу.

В JS, Python, Ruby, Java, и других современных языках нет неуправляемого кода, и там ты такое не сделаешь.

Если ты о нем не знаешь, это еще не значит что его нет

JS

Если nodejs подпадает под твое определение JS
writable._writev(chunks, callback)

Python

os.writev

Ruby

хз, никогда его в глаза не видел

Java

Class FileChannel ScatteringByteChannel

Не впевнений, що точно вгадав, що Станіслав мав на увазі, але думаю, що він мав на увазі якийсь чіп із власним процесором та пропрієтарною операційною системою, який покращує пропускну здатність платформи, на якій встановлений, за рахунок передачі пакетів через цей чіп, без використання ресурсів процесора основної платформи.

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

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

Мабуть, Ви жартуєте )))
Існує велике різноманіття мережевих пристроїв, для яких можливостей платформ найсучасніших телефонів недостатньо.

сложно так написать энтерпрайз мобильное приложение, чтобы оно прям тормозило на телефоне

Тому що ентерпрайз додаток телефон просто не потягне. І тому роблять ось ці тупі клієнти які лише показують те, що обчислює сервер.

І тому роблять ось ці тупі клієнти які лише показують те, що обчислює сервер.

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

Іноді це єдиний вихід через обмежені ресурси смартфонів.

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

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

Пфф. Просто телефон с процессором следующего поколения купи да и всё....
Остаток от деления на бэке посчитают

Ну вобщем ты понял )))

Мабуть, Станіслав вирішив весело пожартувати )))

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

Я тоже помню. Мобильные операторы сняли тарификацию со входящих осенью 2003. Сейчас 2021. Предлагаешь подождать еще 18 лет до появления квантовых вычислений?

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

И что это может означать?

То-то они столько ресурсов вкладывают в разработку новых поколений процессоров.

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

Так у нас проблема с обработкой, или передачей?

С обработкой.

Вот для ускорения этого процесса проще и дешевле воткнуть ещё планку

Ты можешь написать планку чего ты собрался втыкать?

Предлагаешь подождать еще 18 лет до появления квантовых вычислений?

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

И что это может означать?

Ещё каких-то 9 лет назад были люди, которые всё ещё верили, что это кому-то будет надо.

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

Я слово Intel видел только на коробочке от CPU.
А что они ещё делают? Бренди?

С обработкой

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

Ты можешь написать планку чего ты собрался втыкать?

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

Ещё каких-то 9 лет назад были люди, которые всё ещё верили, что это кому-то будет надо.

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

Я слово Intel видел только на коробочке от CPU.
А что они ещё делают? Бренди?

Что-то не знать — это нормально. А вот выпячивать свое невежество и гордиться им — рагульство.

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

Эмм. Какое отношение это имеет к обработке того же сетевого траффика? Ты точно понимаешь о какой обработке идет речь? Или как обычно?

А какая разница?

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

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

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

Когда же этот день настанет?

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

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

Так, зазвичай один мережевий пристрій коштує менше ніж місячна заробітна плата розробника ПЗ для цього пристрою, але якщо таких пристроїв продається, скажімо, по десять тисяч одиниць на рік, то економія на залізі в сто доларів на одному пристрої на десяти тисячах пристроїв складе один мільйон доларів.
Але це ще не найгірше. Найгірше те, що покупці будуть купувати дешевші пристрої, і якщо конкурент з дешевшим залізом скористається алгоритмами і випустить продукт з такою ж пропускною здатністю, то користувачі будуть купувати продукт конкурента, і десять тисяч пристроїв куплять у конкурента, а не в роботодавця розробника ПЗ для пристроя з дорожчим залізом. Тобто дорожче залізо все одно має бути виправдане кращими характеристиками, а значить, все одно доведеться пришвидшувати відповідні алгоритми.
До речі, це стосується не лише способів обробки мережевих пакетів. Якщо подивитися ті ж рейтинги камер для смартфонів, то там камери з кращими алгоритмами обробки зображень частенько стоять у рейтингу вище за камери з більшою кількістю мегапікселів.

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

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

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

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

Але це ще не найгірше. Найгірше те, що покупці будуть купувати дешевші пристрої, і якщо конкурент з дешевшим залізом скористається алгоритмами і випустить продукт з такою ж пропускною здатністю, то користувачі будуть купувати продукт конкурента, і десять тисяч пристроїв куплять у конкурента, а не в роботодавця розробника ПЗ для пристроя з дорожчим залізом.

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

Так тут навіть не в економії справа, а в тому, чи взагалі продукт принесе прибуток чи лише витрати на розробку ПЗ та на виробництво пристроїв, які лежатимуть на складі, оскільки купуватимуть продукт конкурента. Якщо конкурент на тому ж залізі застосує алгоритми і випустить продукт з кращими характеристиками, то продаватися на ринку буде продукт конкурента, а десятки тисяч пристроїв з гіршими ніж у конкурента характеристиками лежатимуть на складах у виробника. Якщо для покращення характеристик продукту будуть використані не алгоритми, а дорожче залізо, то знову ж таки, десятки тисяч пристроїв будуть лежати на складі, бо продаватиметься продукт конкурента, який з аналогічними характеристиками завдяки алгоритмам, але дешевший завдяки дешевшому залізу.

Так, зазвичай один мережевий пристрій коштує менше ніж місячна заробітна плата розробника ПЗ для цього пристрою

Какой-нибудь Cisco ASA 5555-X стоит под 10к зелени. Есть и дороже железки.

Так, і таке буває, що пристрій, для якого розробник пише ПЗ, коштує значно більше ніж заробітна плата розробника.

Какой-нибудь Cisco ASA 5555-X стоит под 10к зелени

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

А с чего ты взял что это дорогая железка?
Cisco ASA5555-K8 28k$
Cisco ASA5555-IPS-K8 44k$

С массовым появлением квантовых вычислений

Щоб писати такі «квантові обчислення» треба розумітися на концепціях суттєво складніших за залишок від ділення чи список.

треба розумітися на концепціях суттєво складніших за залишок від ділення чи список.

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

Для этого есть специально обученные люди.

Моє зауваження було до того, що не варто щось стверджувати про «квантові обчислення» (що б це словосполучення не означало) коли ми всі тут приблизно здогадуємося про твій рівень знань з цієї теми.

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

Так ось це «запити без індекса не писати на великих таблицях» і є тонкощі. Тобто все-таки тонкощі всім потрібні, просто в кожній галузі розробки ПЗ вони свої, на зразок «не виконувати багато операцій на рівні пріоритету DISPATCH» при розробці драйверів windows kernel, при розробці драйверів linux kernel «використовувати likely/unlikely для випадків, коли ймовірність саме такої умови висока» і тому подібне.

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

ПЗ для Enterprise мені поки що не доводилося розробляти.
Як на мене, це добре, що для Enterprise застосунків легше навчитися здійснювати оптимізацію, ніж в програмному забезпеченні мережевих пристроїв. Але підозрюю, що в Enterprise свої складнощі.

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

Візьмемо умовний пошук умовного гугла який обслуговує приблизно 40 тисяч QPS — ось тут і виходить, що заліза ніякого ні за які гроші не вистачить щоб хоча б пару мілісекунд десь зекономити. І оптимізація коду стає вигідною.

А таких сервісів не один — відео та аудіо, різні соцмережі та обмін контентом, карти, новини, ігри, магазини і таке інше. І головне — чим більше таких сервісів буде (а їх буде більше) і чим більше у них користувачів тим більший сенс в алгоритмічній оптимізації в першу чергу.

І головне — чим більше таких сервісів буде (а їх буде більше) і чим більше у них користувачів тим більший сенс в алгоритмічній оптимізації в першу чергу.

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

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

Huh? Хіба не всі арифметичні операції зараз займають від 1 до 7 циклів?

Ділення на неконстантний дільник — як каже дока по x86, від 30 до 90 тактів. («Цикл» — неправильна калька.)

Що з чисел 3 та 5 є не константою?

Дальше вопрос чего мы хотим — если скорости, то используем счетчики.

А если читабельности и меньше строчек кода — то с конкатенацией симпатичнее :)

Не знаю, мне бы было стрёмно брать человека, который (1) не знает операцию взятия остатка от деления, которая в большинстве языков программирования % или mod. И (2) даже если забыл, то в большинстве случаем можно через целочисленное деление (x / 3) * 3 == x.

И (2) даже если забыл, то в большинстве случаем можно через целочисленное деление (x / 3) * 3 == x.

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

Во всех, когда x делится с остатком на 3. Ваш кеп.

x = 5
x / 3 дає 1, бо цілочисельне же ділення
(x / 3) * 3 дає 3.
3 != 5

x / 3 дає 1, бо цілочисельне же ділення

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

Это знают те, кто часто пишет математическую логику.

Это не называется «математическая логика», это арифметика.

Математическую логику как раз вы «в мобайле», думаю, часто используете — например, сворачивая if ((a&&b)||(b&&c)) в if (b&&(a||c)).

В смысле, ты не знаешь сколько будет 5/3? Все там бывает, я сам под Андроид пишу около 10 лет.

В смысле, ты не знаешь сколько будет 5/3?

Для таких задач есть Ёксель.
Глупо тратить на них ресурсы мозга.

Да, в индустриальных подходах такого не проходили :)

Я думаю это пора в мемасики. Не дик пики но тоже достойно!

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.

Омг. Это сайд эффект от использования индустриальных подходов?

Нет, это катание на высоких скоростях выветривает мозги :)

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.

П-ц, докатились до индусни

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.

Серьезно? Речь о том, что не помните как остаток от деления по модулю взять в конкретном ЯП, или вообще, что для этого оно нужно и что оно такое вообще т.е матан? Оо)
Ну допустим не знаете оператор такой, то что сами реализовать через любой костыль проверку на наличие остатка от деления тоже никак?
Ну там через строковое отображение, или обычное деление с округлением и умножением... В любом ЯП можно найти костыль, проверяющий есть ли остаток от деления от числа:

Math.floor(x/3)*3 !== x
(x/3|0)*3 !== x
String(x/3).includes('.')
String(x/3).split('.').length !== 1
В общем миллион костылей можно найти при желании.
Речь о том, что не помните как остаток от деления по модулю взять в конкретном ЯП, или вообще, что для этого оно нужно и что оно такое вообще т.е матан? Оо)

Извините, но в 99% случаев мобильной разработки математика вам не понадобится.
В большинстве проектов я пакет Math даже не импортировал ни в один класс.

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

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

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

А если бизнес-правила поменяются?
Приложение в маркет перевыкладывать и заставлять пользователей обновиться?
Мобайл — это не веб. Заставить пользователя обновить приложение — тот ещё квест.

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

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

А что в мобайле мешает автоматически обновлять модуль с собственного CDN?

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

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

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

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

Або мати логіку на сервері і нічого качати не треба як і підтримувати версії клієнтів з новою та старою логікою.

Або мати логіку на сервері і нічого качати

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

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

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

Примеры?

Та хоть кастомный UI контрол с динамикой типа кого то анимированного аккордиона.

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

Мдя... Когда то хоть это заставляло фронтендеров вспоминать математику за 2-й класс, но CSS3 убил и эти остатки «мудреного» матана :)

что это актуально для JS аппликух.

Нет никаких JS аппликух для Андроид.
Всё в итоге собирается в .apk, который загружается с маркета.

Та хоть кастомный UI контрол с динамикой типа кого то анимированного аккордиона.

Анимация задаётся параметрами через конфиг.
В параметрах указывается картинка (аккордеон), тип анимации (скейлинг/мувинг/етс), значения для скейлинга/мувинга, количество повторений. Где матан?

Нет никаких JS аппликух для Андроид.

Все ровно что сказать нет никаких js или java апликух под винду. Через виртуальную машину, зашитую в apk/exe есть.

Всё в итоге собирается в .apk

apk это контейнер, а в том контейнере через прослойку Electron/Cordova движок V8 с js аппликухой. И там UI либо совсем как браузер с webview реализован, либо нативная проекция как у ReactNative, но суть в том что приложуха все ровно на js, а раз оно на js, то и динамический импорт доступен. Там тогда не нужна пересборка. При инициализации приложения обновлять модуль, а потом запускать основной код.

Анимация задаётся параметрами через конфиг.

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

а в том контейнере через прослойку Electron/Cordova движок V8 с js аппликухой. И там UI либо совсем как браузер с webview реализован, либо нативная проекция как у ReactNative

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

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

За 9 лет не понадобился. Надеюсь дожить свой век без этой необходимости. Благо проектов без всего этого под мобайл — много.

Я сходу без Гугла не могу вспомнить, как проверить, делится ли число на 3 или 5.

это правда феил, Бро.

якщо закінчується на 5 або 0, то ділиться на 5 без остачі
якщо добавити всі числа і вийде кратне трьом, то ділиться на три (123 -> 1 + 2 + 3 = 6, або 177 -> 1 + 7 + 7 = 15 -> 1+5 = 6, ну ти поняв), тобто ніякого mod чи % (тяжкого ділення не треба)

Короче фізбаз тут бачу одні олухи

Пля, школа 3 й клас, чи коли там вчать ділення.

Інтерв"ювер: чувак, це з якої мови?

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

навіщо якщо є itoa
не інженерний підхід велосипедити
анекдот про чайник і математика та фізика знаєш?

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

У таких хитрих просять потім ту itoa самому написати :)

такі хитрі кажуть дякую (зливають інтерв"ю), і йдуть туди де не довбуть мізки дурнею

Ну от — інтерв’ю працюють і людина яка не підходить відсіяна ще на першому кроці.

отож, візьмуть кодінг-макуку, а не інженера,
про що і була мова.

Залишилося лише дочекатися поки цей не одобрений на ДОУ підхід до відбору людей не призведе контори які його практикують до програшу тим хто наймає правильно. Але поки що чомусь саме цей неправильний підхід дозволяє лідерам галузі набирати найкращих людей. ХЗ як воно так виходить.

Кому правильний, кому не правильний.
тільки 70% респондентів опитування недружелюбні до лайвкодінгу.

Лідери галузі, це ти про кого: ФААНГ, чи про нашу пісочницю з її Гілдіями та Асоціціями?

Лідери галузі, це ти про кого

Про того хто формує тренди, впливає на усю індустрію своїми технологіями та підходами, про тих хто заробляє найбільше своїми продуктами і послугами.

про нашу пісочницю з її Гілдіями та Асоціціями?

Ні, не про них. Якось пропустив, що тут конкретно про Україну йшлося.

так про них самих,
у ФААНГ і ТЗ і лайвкодінг навіть мертвий встане і погодиться

у ФААНГ і ТЗ і лайвкодінг навіть мертвий встане і погодиться

:D

Але поки що чомусь саме цей неправильний підхід дозволяє лідерам галузі набирати найкращих людей.

Наилучших для чего?
Компании, которым важны фундаментальные вещи — спрашивают их на собеседовании. Компании, которым важны технологии — спрашивают знания технологий. Каждый товар находит своего покупателя.
Я не согласен, что условный ЕПАМ конкурирует с условным Гуглом. Там работают принципиально разные люди, которые решают совершенно разные задачи. В Гугле создают очередной Android Jetpack. В ЕПАМ используют его для приложения для какого-то заказчика из США.
Это как КБ, которое создаёт станки и завод, который делает на них детали машин.

Наилучших для чего?

Для створення продуктів та сервісів які дозволяють заробляти більше ніж конкуренти.

Я не согласен, что условный ЕПАМ конкурирует с условным Гуглом.

Ні, не конкурує. Мені чомусь здавалося, що мова йде про взагалі, а не про умовний ЕПАМ.

В Гугле создают очередной Android Jetpack. В ЕПАМ используют его для приложения для какого-то заказчика из США.

Так, з такої точки зору процес найму має бути іншим.

Мені чомусь здавалося, що мова йде про взагалі, а не про умовний ЕПАМ.

Мы тут в Украине, у нас особо ничего другого и нет. И я считаю, оно тут не нужно.

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

Кстати да

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

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

Я в своё время в свитлу попал вообще без тех интервью. Вернее, мне позвонил менеджер и перечислил стек технологий проекта, спросив, работал ли я с каждой. Я сказал, да, работал. Он напротив всех поставил «+».

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

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

... Тепер лише в церкву, молитися.

С чего опять вернулась эта советская мода к месту и не к месту юзать слово «крайний»? Почему не сказать «на прошлой работе», если такой суеверный? Лет 10 назад этого ведь не было

Ви не в курсі про війну?
Чи ви нікого в «останній путь» не проводжали?

Провожал. И при чём это? Может, и слово «путь» запретить?

Уж ви мені повірте, в курсі. І в «последний путь» проводжав. От тільки від цього фраза «На моей крайней работе это API не юзалось» чи «Крайний день августа» ані краще, ані правильніше не звучать

нікого в «останній путь» не проводжали?

В деяких релігіях це таки буде «крайній путь».

Просто много свитчеров из саперов, парашютистов, пожарных.
Не обращай внимания.

Сказал филолог по образованию :-)))

У меня два верхних образования

Зато у меня, как у журналиста, есть корткоствол.
Если в Украине it через год всё, смогу крутиться и не приходить за зарплатой.

Зато у меня, как у журналиста, есть корткоствол.

Где то я уже это видел... А, вот где!
www.youtube.com/watch?v=U2aHvI5GTsA

Я то у більшості випадків погоджусь.
Але таки мінус такому працедавцю поставлю.
І посуну його в кінець списку потенційних працедавців.

Кандидат, який без пояснення причин відмовляється від livecoding — це як людина, яка говорить, що вона не вампір, але відмовляється їсти часник і виходити на сонячне світло.

Кандидат, який без пояснення причин відмовляється від livecoding

так же как и некоторые компании не дают фидбек после интервью

Є різні компанії.
Хтось надає фідбек, хтось ні. Якщо вам потрібен фідбек, ви можете перед співбесідою запитати — буде фідбек чи ні. І якщо ні, то просто відмовитися.

Цель любого интервью — за минимальное время оценить, как быстро кандидат сможет адаптироваться к новому проекту, и насколько его слова расходятся с реальностью. И с этим live coding прекрасно помогает.

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

У нас сейчас открыта вакансия JavaScript разработчика www.playtika.com/...​0.u1C_10B&t=1624607006571 приходите, и, возможно, мне удастся доказать, что live coding вовсе не страшен, и совершенно не направлен против кандидата.

Гарна антиреклама у вас вийшла

Standing_ovation.mp4

Похоже, что в отдел маркетинга мне интервью не пройти, что с live coding, что без...

Цель — проверить как человек справляется со стрессом. А зачем нужна такая работа где нужно пребывать в состоянии стреса? Добровольно сократить свою жизнь?

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

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

Мета livecoding — визначити як швидко і якісно кандидати справляються з вирішенням завдань і вибрати з них кращого

Интервью — это стресс

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

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

Вопрос был риторический. Интервью это не стресс. Задачу уже не помню, а сам процесс описал ниже.
dou.ua/...​ign=reply-comment#2164872

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

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

Всё ровно так и происходит в моём случае: кандидат находится дома, за своим компьютером, запрета на пользование интернетом нет (но он откровенно не нужен для решения), пишет код в jsfiddle.net, где я подключен как co-worker. Ну и он может делать, что угодно до момента, пока не скажет «готово». Звучит устрашающе?

то стрессанул только на одном, где был лайв-кодинг

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

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

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

Вот вы и ответили, как мне кажется, на свой вопрос. Не знание чего-то вызывает

«психологический стресс»,

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

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

Ой, однажды меня попросили написать код на Java на каком-то сайте при том, что это были мои первые и последние 10 строчек на Java в жизни: никакого стресса. А вот интервьюер-девушка с глубоким декольте и пятым размером, вот это был стресс! У всех по разному, почему вы считаете, что если у Вас это вызывает стресс, то другие не могут стрессовать по другому поводу?

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

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

Лучше обесните чувства тех, кто смотрит этот лайвкодинг. Особенно на твиче. В чем прикол?

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

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

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

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

Можна даже хакнуть хакальщика хакатона

Давай, расскажи [готовлю попкорн с крупной солью, предвкушая трагическую историю]

Я как раз хакатоны не очень люблю. Обычно мне неинтересна сама задача, и жаль на неё тратить время. А если мне что-то интересно, то и хакатон не нужен: сел дома и сам покодил.

Так хакатоны и не обязаны любить все. Это даже не 5%.
Но это удобная среда, где можно НАУЧИТЬСЯ оценивать навыки по кодингу в реальном времени. Просто потому, что люди не знают, что их оценивают, а если бы и знали, им было бы пофиг на оценку. Разумеется, в боевой оценке кандидатов этот фактор будет иметь место. Потому важно оценивать процесс, а не только и не столько результат.

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

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

Раз навіть по скайпу (без відео, в текстове вікно) якісь функції писав.
Вважаю, на співбесіді можна хоч верх ногами крейдою писати. Кумарять коли додому написати дають. Ще й коли роботи на годин 8, не менше.

не знаю как там на javascript но на плюсовых собеседованиях никто особо даже не спрашивает, прилетает ссылка на онлайн сервис и пошло поехало

К слову, есть еще такой милый подвид live-coding, как написание кода «на бумажке».
Казалось бы, какой толк с такой практики, кроме теста на степень терпения ?
Ан нет — до пандемии были любители на offline интервью такое устраивать.

На бумажке вполне можно, если там 1-3 строчки кода. Но ОЦЕНИВАТЬ стиль кодинга, полноту решений, и что ещё важнее, понимание телепатически ЧТО ИМЕННО оценивается (то есть что прописывать в деталях) — это даже не к психиатру, это пинками нахрен из профессии.

Даже если шлюху с панели нанять, её знание человеческого фактора окажется выше на 3 порядка. Она сразу спросить у работодателя, а что вы ХОТИТЕ получить? И соответственно, попробует получить именно это — не взирая на пол, возраст, или собственное самочувствие сегодня в 7 утра и плохой гороскопчик.

Почему HR никогда не тестят? Можно и на бумажке. А ещё проще — на людях. Берёшь уже существуюшего гребца — и в тест. Вы просто поразитесь процентовке отсева.

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

HR должен подвергаться столь же тщательному и постоянному тестированию. Чтобы процент ЛОЖНОГО отсева стремился к нулю. Гораздо дешевле обходится ошибка найма, чем ошибка не-найма. Уже нанятого можно отсеять в любой день испытательного срока, и если таковых 10-15% — это лучший результат, я бы сказал, целевой показатель. Потому что если меньше — значит не меньше половины нужных людей были отсеяны на предыдущих этапах.

К слову, есть еще такой милый подвид live-coding, как написание кода «на бумажке».

Ну... я вижу два плюса: нет непривычной среды/IDE, меньше внимания до технических огрехов.

Ахахахаха, на одном собесе у меня лайвкодинг занял два с половиной часа

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

Да.
У меня вообще нет проблем получить оффер

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

Ненавижу эту пытку. Мало того что находишься в определенном уровне стресса, что влияет на продуктивность, так еще дают кодить в какой то формочке, а не в своей IDE. И эта фигня почти без подсветки синтаксиса, не подсвечивает блоки кода, чтобы хоть скобки расставить, другая цветовая схема, нет автоформатирования, автокомплита и т.д, потому по сути я просто слепну и это все ровно, что код на Dou писать.
Так что если и прибегать к этой пытке, то в виде расшаривания экрана с IDE и никаких онлайн сервисов + ТЗ должно быть в письменном виде, а то в последние время бывает Skype издевательски подглючивает, играя на арфе в самые ответственные моменты. Да и постановка ТЗ на словах в принципе хромает и сразу понять что именно от тебя там хотят незнакомые люди не всегда просто.

Я ради интереса даже попробовал это пройти на DOU, решив в одном споре задачку из Литкода, которую я точно знаю как решать. Итого: 4 ошибки на 10 строк кода. Просто из-за человеческого фактора: в гуманитарной сфере мозг весьма толерантен к ошибкам, это нормально. В точной — толерантности к ошибкам не должно быть никакой. Перейти от точности к толерантности занимает менее минуты, обратный переход — от 2 часов и более.

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

Про то, как хромает ТЗ, и разговора нет. Задачку ведь дадут не по тому материалу, что надо знать. А по тому, что сами недавно выучили. И соответственно, думают что знают, что к чему и зачем — в то время как их свежие «знания» ещё не отсеяны от 99% ненужного хлама, который может быть когда-то раз в 20 лет понадобится, и тогда тупо откроют TFM.

Простой пример: школьный курс математики. Всё население страны учат, например, формуле площади треугольника, вписанного в окружность. И экзаменуют, требуя знать всё это по памяти. А что вы сделаете НА САМОМ ДЕЛЕ, когда вам эта формула понадобится? Варианты:
1) Будете судорожно вспоминать, надеясь что помните без ошибок.
2) Окей, гугл...
Вопрос более сложный: А ЗАЧЕМ всё это заставляют зубрить? И ответ вам не понравится: это преступление. Государство просто наказывает своих детей лишением свободы, потому что может, потому что так проще. Вместо того чтобы просто разрешить пользоваться общедоступными бесплатными знаниями, КРОМЕ помощи живого человека.

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

Xcode, буває, глючить і працює саме так, особливо бета-версії. Мабуть, Apple готує розробників до співбесід :D

Xcode, буває, глючить

А коли не глючить то тупить. З мого досвіду у цієї «IDE» є лише ці два режими — або глючити, або тупити.

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

В тестера має бути чуйка на таке

Ему просто жена вечером не дала.
Бiвает.

только не вечером, а летом

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

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

вменяемые интервьюверы создают репозиторий со «скелетом» проекта, тестами и информативным README: кандидату остается только дописать код, для которого тесты пройдут

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

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

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

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

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

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

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

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

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

P.S. Oh, I know that feel bro — 13-14 лет назад я ровно так же возмущался на вождении, т.к никакого урока чтобы научится ездить и обрести автоматизм в переключении этих штук не было, только садись вот газ, вот тормоз и езжай. Зато за знаки щемить начали сразу, а позже еще и с охренным подходом- три ошибки за урок вождения и иди гуляй, т.е. чтобы научится водить, тебе надо уметь водить :) Охрененный подход, если ты впервые сел за руль в автошколе, никто в семье не водил, а не как те, кто ездил на батиной машине, а в автошколу пришел только знаки подучить и корочку получить.

В гугль штоли собеседуешся? Ток у них помоему такая дичь, и они могут эт себе позволить.

В гугль штоли собеседуешся? Ток у них помоему такая дичь, и они могут эт себе позволить.

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

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

Мадам терпила?

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

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

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

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

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

Попросить провести код-ревью готового куска реального кода (а не с передподвыподвертом и указателями на него) — отличная практика. Жаль мало кто ее использует.

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

Хочешь пройти собес, — найми специально обученного человека.

А ЗАЧЕМ платить людям, которые проверяют умение проходить собесы — если можно тупо выкинуть их из уравнения? Если нужны HR, да возьмите ж таких, которые САМИ это умеют.

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

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

В Майкрософте? Серьёзно? Просто сохраните из Ворда документ в HTML страничку. А потом, читая этот образец вселенской лаконичности, вспомните: этот редактор старше любого HTML редактора на планете, у него было больше всех времени на совершенствование.

Единственное место, где Майкрософт точно не упрекнёшь в излишествах — так это сообщения об ошибках. Будет сообщение с текстом «Не удалось [то что вы пытались]» — и код ошибки 0×00213іѵ2148Ф884. После двухчасового гугления вы будете знать, что э