Pull to refresh

Comments 691

Максим, есть идеи, отчего сложилась такая ситуация?

Могу предположить, что из-за бездумного подражания топовым компаниям западным.
Изначально они имели нестандартную сферу деятельности, которая значительно выбивалась из всего рынка. Это как пытаться найти разработчика в мире бухгалтеров. Приходится каждого оценивать как новичка.
А дальше — зачем придумывать новое, если мы можем позволить себе старое? Причем, доходит до абсурда — есть ТРЕНИНГИ по прохождению собеседования в google. лолчто. Это же явный симптом.


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

И так должно быть везде.

Кому должно? Никто не мешает идти работать в компании попроще. Без бонусов и акций.
За него говорит его опыт и разработанные проекты.

Я опытный, но рассказать и показать ничего не могу. Вот такой я. Так???
Вряд ли идеологическому лидеру по разработке ИИ, например, кто-либо задаст вопрос про big-O.

Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.
Никто не мешает идти работать в компании попроще. Без бонусов и акций.

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

Зарплата программиста в гугле 150 000 + 100 000 акциями и бонусами. Давайте список компаний с такими условиями? Пойдем работать туда.
В фейсбуке, эппле, линкедине и во многих других компаниях все то же самое, но собеседования процентов на 50 более адекватные. Правда, самые адекватные интервью плана «тестового задания» и а давай ты вместо 6 часов каляканья олимпиадных программ на доске просто поработаешь часа три над реальным проектом встречались только в России, к сожалению.
UFO just landed and posted this here
А это вы с чего взяли?
UFO just landed and posted this here
Курицу изобразить не забудьте.
Максим, вы озвучили то что давно крутится на уме. Я был с двух сторон этих баррикад. И что самое интересное, я вникал в код который кандидаты указывали в резюме. Собеседования проводил — первое удаленно по телефону или по скайп, второе в офисе — небольшие упрощенные практические задачки на компьютере (проверял параллельно теорию, просил написать разные варианты сортировки и группировки коллекций с помощью lambda выражений, смотрел как кандидат работает в IDE, командной строке, как может найти в незнакомом коде нужные места, насколько понимает базовые фреймворки и т.п.). За свою карьеру я проводил сотню собеседований и скрининг интервью. Кроме теории нужно проверять что кандидат умеет писать код. И совсем не на бумаге и не блок схемы на доске.

Больше всего мне понравилось интервью в финансовый стартап elinvar — после технического интервью по скайпу, мы договорились о следующем интервью. В это время мне выслали задание, заготовку проекта без требуемого функционала — нужно было за 2 часа написать код и тесты, что я быстро сделал подключив к проекту apache camel. После проверки прислали мне job offer с отличной для Берлина суммой на руки. Не сложилось по личным причинам, отказался. Но подход к интервью отличный — знания, опыт и резюме интервьюверы проверили. Похожая coding session была и в cTrader на Кипр — но там нужно было еще поделиться своим экраном по скайпу и тоже оффер по завершению!

Общение же с HR, которые ко мне приходили в прошлом году всегда сводилось к шаблонным вопросам, а на тех. интервью рекурсивные задачки, обход деревьев, сложность алгоритмов и прочие вещи которые я хорошо делал на первом курсе. Что вряд ли возможно расценивать как адекватное интервью для senior dev позиций. Рекрутеры zalando и ali после такого идут лесом со своими предложениями.
Я опытный, но рассказать и показать ничего не могу. Вот такой я. Так???

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

Вот я себя, например, ощущаю так же. Опыт разработки специфичных приложений на достаточно закрытой платформе. Портфолио нет, код показать не могу — кровавый энтерпрайз…
Т.е. меня реально должны оценивать тестиками для зелёных джунов.
Да всегда, даже из кровавого энтерпрайза есть выход в open source в свободное время. Понятно что исходники с работы вы не имеете право показывать, но это не отнимает у вас опыта и знаний по решению задач. И интервью должно строиться вокруг требуемого опыта и знаний, а не вокруг теории и задачек для первокурсников или головоломок и прочей геймификации процесса интервью. Интервьювер и кандидат приходят туда не для того чтобы зачитывать шаблонные вопросы и получать на них шаблонные ответы, из книги по интервью в корпорацию зла/добра.
Хотя и я и согласен с мыслью в целом, но про оупенсорс — это какая-то чушь. Вы или не имеете жены и детей, либо на работе не заняты особо, либо забили на семью (но конечно же этого никогда не признаете). Видали мы таких. У человека 8 часов из которых эффективных 4-6 на разработку и ещё пару часов на общение и митинги. Всё. Остальное время мозг должен отдыхать. А на выходных есть домашние дела. Жена хочет внимания, дети с отцом поиграть, чтобы не вырасти мудаками и не сказали через 10 лет: «Слышь, дай прикурить, типа батя… хэ-хэ». Только полные задроты сидят бесплатно после работы в оупенсорсах и это медицинский факт. Нормальные специалисты получают достаточно бабла в энтерпрайзе и в ус не дуют. И уж точно ни я ни кто-то из моих бывших или текущих коллег или подчинённых не будем тратить свои вечера, чтобы удовлетворить какую-то там айчарку или четырёхглазого техлилда ссылкой на гитхаб «как я закоммитил в оупенсорс». Не тот возраст. Студенчество с беззаботной и ветряной жизнью кончилось у синьоров 10-15 лет назад. Хочешь узнать как я пишу код? Давай свою задачу сюда. Не достаточно? Нанимай меня, плати бабло и смотри всё что тебе нужно. Нет денег? Ищи студентов которые на гитхаб коммитят.
Кажется вы гиперболизируете сложность open source. Вопрос лишь желания и совсем небольшого времени. От получаса раз в пару дней вряд ли дети начнут курить. А вот от совместного просмотра зомби ящика — запросто…

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

Полчаса раз в пару дней определенно недостаточно. Чтобы иметь что-то нестыдное для показать, надо тратить хотя бы часа 2-3 ежедневно. Ну или больше, если вы хотите иметь это нестыдное через 5 лет, а не через 10. У подавляющего большинства людей такой запас времени просто отсутствует.
А можно я задам очеь непопулярный вопрос: а зачем? Вот у меня есть пачка штук помогающих мне получать денежку. И многие из этих штук выстраданы в отсутствии спецификаций/статей/итд

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

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

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

UFO just landed and posted this here
UFO just landed and posted this here

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

UFO just landed and posted this here
Ответов может быть много, у каждого своя ситуация. Например из жизни знакомых: легаси проект на работе jre 1.6 на собственном велосипедном фреймворке. Никакого DI, code review, TDD, BDD и прочего. Чтобы быть в тонусе и не деградировать он в свободное время пишет свои проекты. Или работа от забора до обеда без возможности влиять на core библиотеки и улучшать то, что отнимает много времени у каждого на проекте. В этом случае чтобы развиваться и изучать новое можно выкладывать свои проекты для решения старых проблем на новом стеке технологий.

С open source у нас еще более странная культура — все пользуются, спасибо не услышишь, но почти никто не предлагает pull request или патчи для bug fix. Да и еще спрашивают ETA!

Нужно ли выкладывать код, если он приносит вам деньги и вряд ли кто-либо поможет с улучшением его качества. Я бы не стал. CRM адаптеры — это не библиотеки для Android. Может быть есть еще что-то что нужно большому количеству людей и от вас не убудет поделиться…
на собственном велосипедном фреймворке.

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

Никакого DI, code review, TDD, BDD и прочего

Я конечно верю что бывает иначе в кровавом ынтырпрайзе, но не видел 8(

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

Любопытно. Надо подумать.

С open source у нас еще более странная культура — все пользуются, спасибо не услышишь, но почти никто не предлагает pull request или патчи для bug fix.

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

Может быть есть еще что-то что нужно большому количеству людей и от вас не убудет поделиться…

Есть, но руки никак не доходят довести до ума и причесать 8(

Есть у меня табличка которая умеет работать наподобие гуглодоксов, сортирофка, флоатин хедер и прочие плюшки на чистом js. Но этож надо сесть, выделить зависимости, красиво все сделать. А как раз вот с этим пунктом у мну проблемы всегда.
UFO just landed and posted this here
Да вряд ли разработчик… Раз за пол часа как-то получается предложить PR на небольшие улучшения в spring framework/spring boot или завести Jira ticket для ошибки там же, с информацией о контексте ошибки.

Небольшие проекты бывает грешат бюрократией: Как изменение двух строк кода может занять несколько дней
UFO just landed and posted this here
Как это все знакомо, респект! В студенчестве весь курс матана или спецглав изучался за неделю вечерами и ночами…
UFO just landed and posted this here
Согласен! Но в любом случае за неиспользованием весь университетский курс математик забылся. Все неиспользуемое — забывается, что еще один аргумент за разминку в open source.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
В контексте этой статьи мы говорим о open source и candidate visibility. И вклада по пол часа раз в пару дней может хватить для того чтобы на интервью показать свои навыки.

Популярные проекты крупнейшей китайской корпорации не спасают человеко-века — качество кода хромает. Да и функционал тоже не прорывной по сравнению с другими open source проектами.
UFO just landed and posted this here
Похоже вам нечего конструктивно ответить по существу обсуждения. Вам отвечают люди с опытом и знанием о чем речь, а вы утверждаете что все не так. Ваше право, конечно!
UFO just landed and posted this here
Обычная демагогия.

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

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

В итоге что мы имеем в этой ветви обсуждения: 0xd34df00d и igor_suhorukov участвуют в open source проектах и делятся своим опытом (github1, github2) отвечают на вопросы, а evgenWebm не имея опыта активно спорит и даже не пытаетесь вникнуть в суть спора клеймя демагогией.
Вполне получается при желании писать по 30 минут в день

Скорее всего у вас разное понимание проектов, для вас проект это Хеллоу ворлд, а для Евгения что-то уровня mp3 плеера.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Хоть бы несколько строк комментариев к своему предмету гордости написали.
UFO just landed and posted this here
UFO just landed and posted this here
Ну так вы несравнимые вещи сравниваете. По полчаса в день матана (или музыки, или спорт или еще там что) — как раз вполне достаточно (если регулярные занятия).

> часов за 50, из которых чистого кодинга часов 20, остальное время — думать, причём весьма оффлайново.

Так а почему вы «думать» не включаете в те «по полчаса в день»? Конечно же они должны включаться!
Ну так 50 часов — это всего три месяца по полчаса в день, никак не 50 лет.
UFO just landed and posted this here
> Смотря для чего. Ну, по крайней мере, с матаном, за музыку или спорт не скажу.

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

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

Ну почему, лет за 20-30 освоите вполне. Здесь как раз вообще рост времени занятий сродни закидыванию раб. силой у Брукса :)
Важна регулярность и концентрация, а пара занятий по часу часто лучше чем 1 но на 4 часа. Потому что задача (как к слову и в ботании матана) не сделать что-то, а прокачать скил. Короче это вещи несравнимые в силу того, что у процессов существенно разная цель.
UFO just landed and posted this here
> строить линейные функции из R в R, которые при этом неограничены на любом интервале.

А можно пример линейной ф-и из R в R, которая при этом не y = ax для какого-то a?

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

Умение играть что-то свое, к слову, скилл отдельный, и вы же можете свое придумывать, что не требует особой техники. Многие серьезной техникой не владеют но свое придумывают, в рамках того, что могут исполнять.
UFO just landed and posted this here
> Важно заметить, что такая функция действует в Q

(f(x) = x, x in Q) не действует в Q? «Действует» в данном контексте — это что?

ЗЫ: а, в смысле (x in R => f(x) in Q), понятно
UFO just landed and posted this here
Важные замечания:

1. согласно тому определению, которое вы использовали для линейной функции — функция f(x) = ax + b не будет линейной!

2. функция, которая линейна в «R как векторном пространстве Q», совершенно необязательно будет линейна в R как поле.
UFO just landed and posted this here
В первом случае линейность функции означает что f(kx+ly) = kf(x) + lf(y) для любых k и l из Q, во втором случае — для любых k и l из R.

Таким образом, линейность в R как поле — это более сильное требование чем линейность в R как векторном пространстве над Q.

В частности, построенная вами функция не линейна в поле R.
> В частности, построенная вами функция не линейна в поле R.

а доказать сможете?
Да запросто. Рассмотрим два числа из выбранного базиса — x и y, такие что f(x) = 1, f(y) = 0 (по построению такие числа всегда существуют).

Теперь берем и считаем: 0 = f(y) = f(y/x * x) = (y/x) * f(x) = y/x. Получили противоречие, следовательно функция не линейна в поле R.
UFO just landed and posted this here
Потому что f не является непрерывной функцией.
UFO just landed and posted this here
UFO just landed and posted this here
Вы же максимальный фильтр не сконструировали, а просто зафиксировали факт существования, иными словами, никаких фактов о нем, кроме того, что это фильтр, и что он максимальный — у вас нет (внутренняя структура неизвестна). По-этому никак иначе, кроме как от противного, вы о нем ничего и не докажете. Это верно для любых объектов, которые без аксиомы выбора не построить (потому ее некоторые и не любят).
UFO just landed and posted this here
> а дальше от противного показываете, что этот максимальный элемент является интересующим.

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

> Этого вполне может оказаться достаточно.

Не может, т.к. вам нужно использовать факт того, что фильтр максимален, а а без аксиомы выбора существование такого фильтра доказать нельзя. То есть и самого противоречия без аксиомы выбора не существует.
UFO just landed and posted this here
> Так в данном случае аксиома выбора как раз принимается.

Ну так я и говорю, приняли аксиому выбора — забудьте про изящество и доказывайте руками от противного :)
UFO just landed and posted this here
Не понял, что за 9 случаев. Предположим, что А с дополнением не лежит в фильтре, добавляем к фильтру все пересечения А с каждым из множеств фильтра и все надмножества, получаем новый фильтр, аксиомы для которого проверяются тривиально.
UFO just landed and posted this here
Ну третья аксиома следует из построения (мы добавили все надмножества руками), ее даже доказывать не надо. Первая (о непринадлежности пустого множества): если предположить, что пустое множество лежит в новом фильтре, то значит, что А пересекается с каким-то множеством из оригинального фильтра, и, следовательно, дополнение А лежит в оригинальном фильтре, чего быть не может.
Ну и вторая: любое из «добавленных» множеств содержит пересечение А и некоторого множества из фильтра (по построению). Если мы пересечем это множество с некоторым множеством из фильтра, то получим надмножество множества, полученного пересечением А и пересечения с двумя множествами фильтра, каковое пересечение само является множеством данного фильтра, а значит, данная операция нас не выводит за пределы описанной совокупности.
> f(y/x * x) = (y/x) * f(x)

Выносить из-под f можно только элементы Q, а y/x — не обязательно из Q. И вы не сможете доказать возможность выносить элементы R без непрерывности f, т.к. для этого надо сделать предельный переход внутри. Так что не работает ваше доказательство, есть другой вариант?
С какого перепугу? Откуда в определении линейной функции в поле R вдруг появилась буква Q?
А, ну да. Я забыл предыдущий пост и начал рассматривать линейность в поле над Q :facepalm.jpg:
А вот от совместного просмотра зомби ящика — запросто…

можно ещё привлекать детей к совместному написанию opensource-а :)

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


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


Это ещё на GitHub просто — PR послал и всё. В других проектах нужно патчи по почте посылать, или ещё что интересное делать. Нет, не помогает это обычному человеку.


Если бы это было просто, то принятые PR были у каждого первого, правда же?

У меня есть ребенок(полтора месяца), жена(считает что я хорошо забочусь о ребенке и о ней), работа(три дня назад на мой вопрос «устраивает ли моя работы» мне ответили «вполне» и повысили зарплату).
Так что я считаю, что со всем справляюсь.
И да, я потихоньку пилю всякие разные эксперименты и OpenSource проекты.
Если вам не хочется делать opensource проекты — это можно понять. Но говорить, что на это нет времени у нормального человека — это ерунда.
Вернемся к вопросу когда ребенку будет хотя бы лет 10
Почему? Потому что это удобный аргумент — «вы еще не доросли, судить не можете». Вариация апелляции к возрасту. Ребенок в таком возрасте еще не ходит ни в школу ни в садик, требует к себе тьму внимания и все такое. Ну и 10 лет — они раз в жизни. Бывают дети и старше и младше, а бывает детей вообще нету. Почему все прикрываются чужими детьми десяти лет?
Я прикрываюсь своим опытом и ребенком. Скажем так до года это спринтерская дистанция, дальше будет тяжелее, ребенок меньше внимания требовать не станет, времени больше не станет, здоровье и выносливость не вечные, жена будет все больше раздражаться на тему опять за компьютером и порчее.
Мне непонятно, почему аргумент про десятилетнего ребенка распространяется на всех айтишников? Ну то есть я не осуждаю за отказ контрибута в опенсорс, но зачем прикрываться 10-тилетним ребенком?

11 лет назад вы контрибутили в опенсорс?

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

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

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

Потому что до года ребенок это овощ, который не может ничего но и не хочет ничего. До трех он вроде уже не то чтобы овощ, может там ходить и чето говорить, но не мыслит толком и ему ничего особо и не надо. До 3 лет дети требуют времени чисто на покормить/убрать говно/одеть-раздеть и тд. А потом уже появляется подобие интеллекта и необходимость общения. И чем старше, тем больше этого общения надо. И вот это уже реально требует времени.
Чувствуется отцовский опыт =)
Если младенцу с рождения хватает внимания, то после трех лет он уже вовсю общается со сверстниками в садике, а к 10-12 уже плевать хотел на родительское общение. А деприванты наоборот продолжают висеть грузом на родительской или опекунской шее и требовать подкормки и полива. Так что не теряйте момент, общайтесь с «овощем», чтобы он реально в овощ не превратился.
Общение в саду и общение дома это совершенно разные вещи. Дети в саду не объяснят из чего мир состоит, не свозят по музеям/киношкам ну и прочее, смысл объяснять очевидное? Для ребенка (который еще не подросток) родители эталон всего и общаться он хочет именно с ними.
Ну и у моего ребенка давно не овощной возраст, результатом воспитания и успехами вполне доволен.
Так что не теряйте момент, общайтесь с «овощем», чтобы он реально в овощ не превратился.

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


то после трех лет он уже вовсю общается со сверстниками в садике

Детские сады и школы — это только по будням в рабочее время. В остальное время общаться с ребёнком все равно придётся.

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

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

Окей.
До 3-хлетнего возраста вы контрибутили в опенсорс?
А до рождения ребенка?

Да это все хрень про свободное время на самом деле. Я контрибьютить стал только после рождения. Сильно позже!

Смешно) А по сути на вопрос ответите?

Оно конечно смешно, но обстоит именно так, без шуток.

Значит, до рождения у вас детей в опенсорс вы не контрибутили, я правильно понял?
Именно. Но это никак не было связано с наличием или отсутствием времени. Просто с возрастом изменились желания.
Ну я же об этом и говорю, дети ни при чем, вы просто не хотели контрибутить, а детьми просто прикрываетесь
Я не прикрывался. Я как раз написал, что дети требуют все больше и больше времени в процессе их взросления (до определенного возраста конечно). Но это совсем не значит, что нельзя найти час-два-три в день на хобби, когда ребенок уже спит например. Было бы желание. А некоторые тут пытаются доказать обратное. Отцы-курицы встречаются конечно не так часто как матери-курицы, но как показывает тот же хабр, встречаются достаточно часто :)
Не интересно.
Я делаювсё чтобы быть хорошим мужем, отцом и работником. И у меня остается время на OpenSource и на кучу других дел. OpenSource естественно не является приоритетом.
Вы делаете вывод о том, что я жертвую ребенком/женой, я утверждаю что ваш вывод — бред.
Ваш опыт ничего не стоит в контексте данного обсуждения, поэтому я прошу не использовать его как «довод».
Вот мне, если честно, рожать страшно. Потому что муж всё время за компьютером, я всё время за компьютером, целый день работа-работа-работа, после работы учёба у обоих (институты давно окончены, но за современными технологиями надо как-то успевать, щупать их, верно?), свои проекты, и тут бы хоть выспаться или в кино вдвоем сходить. Безо всяких детей.
А если их заводить, то кто по ночам ребёнка будет вставать и успокаивать — Пушкин или Дед Мороз? Я не знаю.
Короче, если вы каким-то образом всё успеваете, то напишите статью на Хабр. Это действительно суперполезная и интересная информация.
А женщины — существа хитрые. Женщины полуторогодовалыми детьми на руках, как правило, не пилят сук на котором сидят и не ссорятся основным кормильцем в семье. Вы бы тоже не стали на её месте. Т.е. показания получаются постольку-поскольку показательные, приходится разве что честному слову верить.
Про честность я не буду ничего говорить и обсуждать. Тема специфичная, потому что у меня крыша на этом поехавшая. И здесь же на хабре лет так 6 назад мне уже объяснили что я идиот малолетний и «игра в честность» с опытом пройдет. Ну нет, 8 лет мы с женой вместе, игра в честность пока не закончилась. ТАк что я верю, что если она мне что-то говорит — это правда. Но это оффтоп, просто чтобы было понятно, почему я не буду обсуждать честность своей жены.

А по сути: Я 24 часа дома с женой. Отлучаюсь только чтобы съездить в магазин за очередрной телегой продуктов и шмотья. Его кровать в двух метрах от моего рабочего места. Так что мне не надо рассказов жены, чтобы знать что происходит с ней и моим ребенком.
UFO just landed and posted this here
Практически наблюдавшееся решение — бабушки. Вполне согласуется со всеми стериотипами общества. Если вы достаточно получаете — няня. Но да, это не «три года с ребёнком», а скорее «месяцев шесть, пока он ещё головку не держит».
UFO just landed and posted this here

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


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

Естественно, это предполагает, что оба родителя идут на такую смену режима работы и равной или почти равной степени, чтобы обеспечить уход, как говорится, 24/7. Оба работают, оба за ребёнком ухаживают с непересекающимся графиком работы, "пост сдал-пост принял".


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

Для программиста с ребенком удаленка-полуудаленка возможна лишь при условии, что второй программист в семье досконально понимает специфику профессии и специфику обращения с младенцами. Независимо от пола, тот программист, который берет на себя больше работы, переваливает на второго большую часть нянченья, а значит второй с большими шансами проседает как профессионал, потому что работать головой, когда деть не спит, нереально.
Естественно, это предполагает, что оба родителя идут на такую смену режима работы и равной или почти равной степени, чтобы обеспечить уход, как говорится, 24/7. Оба работают, оба за ребёнком ухаживают с непересекающимся графиком работы, "пост сдал-пост принял".

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

Даже если рассматривать финансово самый невыгодный вариант "оба на полставки"

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

С ребенком надо сидеть лет до 3 пока он в сад не пойдет.
Это кто вам такое сказал? А почему не 18ти?

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

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

Как я уже сказал: выход на работу через полгода, от силы год после рождения ребёнка — это то, что я практически наблюдал, это не какие-то теоретические изыскания. А уж кто там после этого сидит с ребёнком — тут вариантов много…

В сад берут что-то начиная с 2,6-2,8. Это так. Но это именно десткий сад, а не ясли.

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

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

Cнять для родителей квартиру поближе? Поискать няню?
Договориться о работе удаленно в течение первого года?

P.S. Сотрудница — девушка-тимлид в декрете была около 6 месяцев.
С ребенком надо сидеть лет до 3 пока он в сад не пойдет.

А почему именно до трёх лет? Почему не до двух или четырёх?


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


Да и спихивать детей на чужих людей — так себе затея.

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


P.S. У меня жена-программист с первым ребёнком тоже так считала (до 3 лет с ребёнком вместе), как оказалось — зря. Со вторым, скорее всего, будет уже сидеть няня, начиная с года.

А на Кипре например декрет 4 месяца. И ничего, выходят потом на работу. Детей или бабушкам, или в ясли. Если много денег, можно и няню.
UFO just landed and posted this here
Знаете, со своими детьми я уж как-нибудь сам разберусь :)
А спихнуть их на «левых» людей рано или поздно все равно придется. Они же, ведь какой ужас, пойдут потом в школу (на том же Кипре с 6 лет, а в Нидерландах с 4 лет). Особого отличия школы от садика я не наблюдаю (мои дети успели походить и туда, и туда).
В Африке может и хуже, я там не был. А вот кипрские дети вполне довольны жизнью. Как-то я не замечаю, чтобы они страдали от такого положения дел по сравнению с российскими детьми.
UFO just landed and posted this here
с таким подходом вам не детей заводить надо, а тренироваться на рабках.

Яжемать, как это будущего заюшечку чужим людям доверю?
А почему 10, почему сразу не 50?

Самое сложное — первый год, когда ты не высыпаешься, когда ребенок не может подождать тебя 5-10-20 минут, если начинает кричать. Через полгода уже проще, через год еще проще. А когда с ним можно уже поговорить, то выделить себе 1 час непрерывного времени на опенсорс или другое хобби гораздо проще, чем в первые 1-2 года.
Потом ребенка надо водить (чаще — возить) на кружки, забирать из школы и все такое. На это уходит прорва времени. При условии 1 кружка, от 2 до 3 вечеров в неделю у вас будет уходить на эти логистические упражнения, а с двумя кружками — от 2 до 6 вечеров.
Плюс очень многое зависит от характера ребенка — кто-то в 7 лет вполне самостоятельный, кого-то и в 14 надо собирать в школу и на кружки.
Потом ребенка надо водить (чаще — возить) на кружки, забирать из школы и все такое.

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


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

Поговорим, когда у вас будет ребенок в этом возрасте, а лучше — пара детей. Знаю три основным причины, по которым у детей нет кружков:
1) кружков просто нет. Так случается, если родители живут в некоей попе мира, деревне или депрессушном городке, где все буквально или умерло или разорилось. Shit happens
2) нет денег на кружки. Это случается гораздо чаще, и это печально.
3) родители забили на свое чадо. Что надо — выучит самостоятельно по самоучителю найденному в интернете (ага).

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

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

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

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

Кроме того, не забываем, что речь идёт о высокооплачиваемом IT. Если оба родителя — программиста, то деньги вообще не являются проблемой.
UFO just landed and posted this here
У меня другой опыт. Первый год — самый простой: желания ребёнка простые и легко удовлетворяемые, ребёнок много спит. Если ребёнок хочет телесного контакта — не вопрос, можно положить на колени и продолжить программировать.
Как верно заметили выше — интересно будет посмотреть на ваши суждения, когда ребенок подрастет и еще появится второй или третий.
И, кстати, с опытом приходит понимание, что иногда жена может сказать, что «все отлично, дорогой. Так и продолжай!». А сама на самом деле уже на пределе.
Короче, аккуратней с посиделками дома за компом, когда жена в поте лица носится с ребенком. Рекомендую на этот случай нанять дополнительно няню, которая будет вас заменять, пока вы котрибьютите в OpenSource.
Вот это вот «посмотрим что ты скажешь когда ХХХ» — очень любимый аргумент всеми. В основном потому, что можно строить из себя опытного дядьку, и аппелировать только к собственной «мудрости», и противопоставить то нечего.
И даже когда через 10 лет окажется, что вы несли херню — это всё равно значения иметь уже не будет.

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

А если у тебя не один ребенок, а 4 у тебя нет бабушек, нянь и т.д., Ты тратишь 2 часа на дорогу, 8 часов рабочего времени, причем все библиотеки уже добавлены и им больше 7-ми лет, по выходным ты подрабатываешь (ипотека и в отпуск хочется), код показывать нельзя да особо и нечего, пишешь в основном xml и for с if (все давно уже отлажено), читать бесполезно ( забываешь без использования через месяц, что прочел). И что говорить работодателю???????

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

Няня не всегда вопрос денег.

В дороге контрибутить?


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

ВСё всегда сводится к одному: либо хочешь, либо не хочешь.
Время и остальное вторично.
Понятно, что если тот же OpenSource интересен, но в списке на 50 позиции — не будешь контрибьютить. Понятно, что если занимаешься OpenSource или чем угодно другим — значит, жертвуешь чем-то в пользу этого дела.
Лично меня просто удивляет, что отсутствие проектов аргументируют — невозможно найти на это время!
Но это же не правильная формулировка. Правильнее «У меня есть дела и поинтереснее».

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

UFO just landed and posted this here
Вообще не удивительно.
Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.
Их можно понять. Я сам такой. Много вещей, которыми хочу заняться, но понимаю, что если забью на самообучение — быстро сольюсь.
UFO just landed and posted this here
Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.
А почему, собственно? Почему люди, объективно делая меньше они требуют такую же оплату? Почему работая 40 часов в неделю, как в России, хотят, чтобы платили им, как Корейцам, у которых работая неделя 68 часов (да, я в курсе, что месяц наза её сократили до 52 часов).

Всё-таки от разработчика в первую очередь требуется умение мыслить логически… а вот как раз эти желания логическому объяснению и не поддаются.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
> А почему, собственно? Почему люди, объективно делая меньше они требуют такую же оплату?

Погодите, но человек, который на работе чесал яйца и смотрел видосы про котиков, и потому после нее идет опенсорсить часик-другой — объективно делает МЕНЬШЕ, чем человек, который честно работает с 9 до 18.
UFO just landed and posted this here

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


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

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

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

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

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

Спорно


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

Откуда этот факт? Есть ссылка на исследование?

> Спорно

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

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

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

Как же это неверный? Если у человека остались силы — значит он их не потратил. А мог потратить.

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

Ну так вот, один человек решает эти ресурсы потратить на работу, в рабочее время. А другой — решил потратить на опенсорс. Кто полезнее для работодателя? Уж извините, но я уверен, что первый. По-моему понятно, почему. А вот откуда у вас уверенность в том, что более полезным окажется второй? Мне непонятно.
UFO just landed and posted this here
Если хотите там работать, по опыту общения на интервью с JetBrains на вопрос «кем видите себя через 5 лет» нужно отвечать «крутым техническим специалистом у вас в компании на всем стеке и на всех языках программирования» но совсем не правду о личных проектах в свое свободное время и дополнительном изучении не относящегося к текущей работе.

Единственный вариант честной работы — прийти домой и лечь спать часов на 12, проснуться и идти на работу?

«Это уже факт» — отлично. Давайте подтверждения этого факта.
А вообще, ничего не мешает отдыхать занимаясь Pet проектом. Это совсем не таже эмоциональная и психологическая нагрузка как работа.
UFO just landed and posted this here
UFO just landed and posted this here
> А плодотворно воспитывать детей и помогать жене он будет в состоянии?

Конечно, нет! Но у него отсутствует выбор, приходится воспитывать и помогать со сниженной эффективностью. А вот не контрибьютить в опенсорс код заведомо низкого качества — у него выбор есть. И он не контрибьютит.
UFO just landed and posted this here
«качество» — это понятие относительное. Поскольку подавляющее большинство дающих воспитание людей, с-но, работают, то при прочих равных это и будет «хорошим качеством воспитания». А если бы они же не работали — то качество было бы лучше. Назовем его «очень хорошим». Безусловно, если человек не приходит с работы уставшим, то он может заниматься воспитательным процессом более качественно, чем если наоборот.
«качество» — это понятие относительное. Поскольку подавляющее большинство коммитящих в опенсорс людей, с-но, работают, то при прочих равных это и будет «хорошим качеством кода». А если бы они же не работали в полную силу — то качество было бы лучше. Назовем его «очень хорошим». Безусловно, если человек не приходит с работы уставшим, то он может заниматься опенсорсом более качественно, чем если наоборот.
> с-но, работают, то при прочих равных это и будет «хорошим качеством кода»

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

В случае написания кода — мы сравниваем качество кода, написанного уставшим программистом, с качеством кода _в общем_ (в том числе, не опенсорс).

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

Но мы сравниваем со «средней температурой по больнице», а не с максимальной. По-этому те, кто имеет талант и т.п. не дают значимого вклада просто статистически.
> Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.

Так работодателю только хуже от того, что его работник контрибьютит в ОС, вместо того, чтобы работать. Логично, что у людей с большим гитхабом и зп должна быть по-меньше.
UFO just landed and posted this here
Потому что в том мире, откуда прилетел Druu у каждого индувидуума есть счётчик: на кодирование — 6 часов в день, больше никак. Так что если всё потратишь на работу — на opensource не останется.

В нашем мире, правда, есть такие вещи как «тренировка», «адаптация» и другие вещи, но дык эта… тяжело инопланетянам на другой планете — это завсегда так.
> Потому что в том мире, откуда прилетел Druu у каждого индувидуума есть счётчик: на кодирование — 6 часов в день, больше никак. Так что если всё потратишь на работу — на opensource не останется.

Да нет, все гораздо проще. Если вы пришли после работы и контрибьютите, то вы могли бы эту энергию затратить на более качественное решение рабочих задач на работе (сколько бы этой лишней энергии ни было). Но вы этого не сделали. Что в этом хорошего для работодателя? Чем человек, который выкладывается на 100% хуже, чем тот, который старается сберечь силы на «надо же еще после работы в ОС пару коммитов сделать...»?
Если вы пришли после работы и контрибьютите, то вы могли бы эту энергию затратить на более качественное решение рабочих задач на работе (сколько бы этой лишней энергии ни было).
Как я уже сказал — на вашей планете (не скажете, кстати, где она и как называется?) наверное да.

Чем человек, который выкладывается на 100% хуже, чем тот, который старается сберечь силы на «надо же еще после работы в ОС пару коммитов сделать...»?
Тем что человек, у которого нет хобби не может быть нормальным программистом. Ну вот так как-то получается. Подход «если ты контрибутишь в опенсорс, сочиняешь стихи или тратишь время на Хабре, то ты теряешь время зря — давай работать… время поспать часов восемь мы тебе дадим, так уж и быть!» приводит к тому, что у вас остаются одни «китайцы», порождающие много-много бессмысленного кода.

Вот заставить таскать мешки с утра до ночи — получается (и то с оговорками: к концу 16-часовой смены производительность всё равно падает). А писать программы — нет.

А если у человека остаётся время на хобби, то непонятно чем работа на оперсорс хуже срачей на Хабре. Только не надо мне рассказывать про то, что программирование на работе и работа с опенсорс — это одно и то же. Я ещё ни одного работодателя не видел, где были бы готовы терперь пока вы «что-то такое» сделаете годами и обсуждать потом то, что вы сотворили месяцами (что и разумно, у них бизнес, у них планы, им не до вашего «полёта мысли»).
> Как я уже сказал — на вашей планете (не скажете, кстати, где она и как называется?) наверное да.

Земля, третья от Солнца.

> А если у человека остаётся время на хобби, то непонятно чем работа на оперсорс хуже срачей на Хабре.

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

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

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

А если надо написать код для решения какой-то задачи, то вы при прочих равных выбираете программиста, который уже отпахал 8 часов, или того, который свежий и отдохнувший выпил кофейку и готов к труду и обороне? Почему?
UFO just landed and posted this here
> Вот в этом и вся разница. «THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND…»

Ну, понимаете, я не являюсь профессиональным скрипачом и по-этому мне плевать, если я играю плохо (даже если кому-то по просьбе, а не себе), потому как это хобби.
Но я являюсь профессиональным программистом и мне лично кажется, что «WITHOUT WARRANTY OF ANY KIND» и все такое — это просто некая отмазка в данном случае и притом кривая. Профессионал выполняет работу профессионально, пусть там и «WITHOUT WARRANTY OF ANY KIND». А наговнокодить что-то там, под соусом «ну я устал, ну это ж не работа, ну я никому ничего не должен и вообще визаут варранти» как-то недопустимо с точки зрения, скажем так, профессиональной гордости. Вот мы вроде с вами обсуждали пример врачей, которые иногда работают в больницах бесплатно. Вы представляете, чтобы такой врач при этом работал спустя рукава, потому что ну бесплатно же и «без варрантей»? Ну я как-то нет. Точно также я не представляю, чтобы он пошел туда (без необходимости) работать уставшим, с риском допустить ошибку. Или мы такого врача назовем, ну, плохим врачом.
UFO just landed and posted this here
Но я являюсь профессиональным программистом и мне лично кажется, что «WITHOUT WARRANTY OF ANY KIND» и все такое — это просто некая отмазка в данном случае и притом кривая.

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

То же самое — и в программировании. Хороший пример, кстати.

А если надо написать код для решения какой-то задачи, то вы при прочих равных выбираете программиста, который уже отпахал 8 часов, или того, который свежий и отдохнувший выпил кофейку и готов к труду и обороне? Почему?
А нет прочих равных. Тот, кто «пашет» — имеет опыт и я, как правило, могу быть уверен в том, что он всё сделает. А Wally мне нафиг не нужен — пусть он будет суперотдохнувшим и «готовым к работе».

Причина — та же, что и с хирургами.
> Того, у кого больше опыта.

Я же говорю — «при прочих равных» Просто ответьте на вопрос.
Мы тут «сферических коней» обсуждаем? Или реальных сотрудников?

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

И это если мы забудем об Open Source и о том, что у наших двух друзей очевидно разная квалификация в принципе (один — исповедует принцип «не высовывайся» и ничего нового не изучает, другой — обладает более широкими навыками).

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

То есть речь идёт не об одномоментном «сливании зарплаты» (в наказание за то, что «посмели заболеть»), а том, что будет происходить несколько лет. А тут… у вас что — есть выбор? Нет, зарплату вам срежут, конечно, не за то, что вы больной или на ремонте занятый. А за то, что ваш сосед сделает больше. Но в сухом остатке — будет то же самое.
несколько лет…
Почему бы тогда и в OpenSource не контрибутить раз в несколько лет?
Просто тут и вопрос как я понимаю ставится о том, чтобы делать это боле-менее постоянно. То есть, если ты занимаешься этим постоянно, то зарплата выше, если нет — то ниже. Разве не так?
В таком случае, как только работатадель видит, что в течении например следующего месяца вы не имеете возможность контрибутить в OS (задерживаться на работе, просто программировать для себя и т.д.), он снижает зарплату. Справедливо?
Нет, это не бинарное явление контрибутил-неконтрибутил. Почитайте ниже мой пост про игру. Потратили 100 часов на опенсорс — прилетело 5 очков в параметр «занимался опенсорсом», который в свою очередь повышает зарплату. Если ты перестал заниматься опенсорсом — больше очки в этот параметр не прилетают и именно он твою зарплату не повышает еще сильнее.
То есть, это не требование постоянной работы? Захотел повышения раз в год — потратил пару часов на опенсорс и все?
Вы выборочно читаете? Или вообще не читаете, а сами придумываете, а потом отвечаете сами себе?
Что я выборочно читаю? Проясните свою позицию. Я предложил 2 варианта — или работник занимается опенсорсом постоянно или время от времени. Вы ни один этот вариант не подтвердили. Тогда что?
Я предложил 2 варианта — или работник занимается опенсорсом постоянно или время от времени

Скажите, а вы — негр или индеец? Выберите из двух.

Проясните свою позицию

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

Ссылку я прочитал. Там говорится о каких-то баллах и о том, что проект, сделанный вами 7 лет назад, приносит профит
Ну вот представьте, что вы накапливаете баллы, когда коммитите в опенсорс, но когда делаете перерыв — эти баллы не исчезают
Ну это я примерно понял.
Я не понял связи между количеством баллов и зарплатой.
Вот предположим, я хочу увеличить зарплату на x%. Сколько баллов для этого я должен набрать? И что вообще такое балл?

Да и вообще как-то странно, что баллы не имеют срока давности, но это уж ваше дело
Формулы нету, я просто описал, как оно приблизительно работает. На образном примере. У вас есть хоть капля воображения? Нету никаких баллов и мы не в РПГ, я просто на их примере передал мысль.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Связь прозвучала здесь
> Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.
UFO just landed and posted this here
Тем не менее мысль именно такая. Вложили +2 часа в опенсорс, работодатель увидел, что оказывается, можно работать продуктивнее, у работодателя поменялась планка качества, вы отрезали себе пути к отступлению

Если рассматривать идеальные (несбыточные) мечты, то тогда уж большей инвестицией будет разработать инструмент (язык программирования и т.п.) который позволит за то же рабочее время писать более качественные продукты.
А повышать качество продукта (пусть и опосредованно) путем заимствования из личного времени — это по моему плохо.
Нет, ну реально, давайте мы все будем работать по 12 часов в сутки, тогда и продукты все будут мегаоптимальными, и жить все будем намного лучше (в том смысле, что новый айфончик будет более пафосным)
UFO just landed and posted this here
Давайте тогда определимся, вы отрицаете связь (в идеале) между вкладом в опенсорс и размером зарплаты?
UFO just landed and posted this here

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

UFO just landed and posted this here
Посмотрим, что будет, когда ребёнку будет полтора года и жена будет беременна вторым (или второй появится). Откуда время то? Утром в 6:00 проснулся, в 8:00 на работе, домой приехал в 18:00, сходил в магазин, поужинал — уже 19:30, искупали ребёнка и уложили спать — 20:30, поставили вещи стираться, погладили вчера постиранное, помыли посуду, прибрались — уже 21:30. Полчаса блаженно посидели ничего не делая и в 22:00 легли спать. И где-то ещё вечером нужно втиснуть непредвиденные занятия, игру с ребёнком (часто ему мамы недостаточно и нужен ещё и папа), готовку еды (если то, что сделали на выходных, закончилось). На выходных вообще кошмар и ужас — магазины, готовка, тотальная уборка, игра с ребёнком, поездка в парк, поездка к родственникам. К вечеру еле ноги таскаешь.
И это не говоря уже о том, что когда папа дома, то ребёнок требует, чтобы папа с ним играл, а не сидел за компом — реально скучает все дни без папы.
КАК можно найти время на OpenSource у нормального человека?
КАК можно найти время на OpenSource у нормального человека?

То есть у всех программистов всегда ребенок 1.5 года + жена еще одного родила?
Ответьте на вопрос, пожалуйста, до того, как жена родила первого, два года назад вы контрибутили в опенсорс?
У меня как у «нормального»(счиаю себя нормальным) нет траты времени на проезд на работу и с работы. Voila, два часа в день «лишних».
Я не хожу в магазин каждый день, а езжу раз в пару недель и закупаюсь надолго. Сколько это еще мне времени экономит?
Ну и по остальным пунктам вопросы.
Вы сами себе устроили жизнь, в которой ни на что нет времени. Это ваша проблема, а не проблема всех людей.
Если магазин по пути с работы домой (нулевой оверхед), то не вижу никаких проблем заходить в него раз в пару дней. Заодно можно будет покупать вещи, которые при затаривании на неделю-две вперёд купить попросту невозможно.
С тех пор как стали кисломолочку сами готовить и отказались от хлеба — продукты скоропортящиеся пропали.
А дороги с работы домой нет просто.

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


А дороги с работы домой нет просто.

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

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

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

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

Эм… даже не знаю, честно говоря, как и реагировать (неужели я постоянно несу какую-то пургу?).

невероятно удивили

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

на кулинарном поприще

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

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

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

UPD: Поэтому, с моей колокольни, надо просто идти на проф-форумы за всем этим.
/Разводя руками/ — банально не знаю, о чем стоило бы конкретно тут писать. Как делать Шоколадные блины и роллы с фруктами из них?
А это вопрос стилистики подачи) Я вот потихоньку экспериментирую с размягчением жесткого мяса инъекциями протеолитических ферментов, чтобы из подошвенной задницы получить стейк.
Увы, я только про «жаренное мороженное» могу поведать.
Это когда снаружи будет оболочка, хрустящая на зуб, а внутри мороженное на вкус заказа.
Но в домашних условиях такое не сделать — это и трата «кучи литров масел» + замызганная кухня от хорошего такого фритюра.

P.S. Блин, чего же я только не готовил то… иная жизнь была прям.
Как ни странно, но нет — если делать правильно, то мороженное не успеет растаять даже в кипящем масле.
Вот примерно то, что и я делал:
image

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

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

В кулинарии есть две шкалы:
1) «рыхлое» — «связанное»
2) «сухое» — «мокрое»
Обычно люди сталкиваются с проблемами вида «не пропиталось» что-то одно, что портит вкус от блюда в целом. Скажем вам необходимо иметь мягкую и сочную морковь в салате или достаточной мягкости болгарский перец.
В случае с пахвалой у людей чаще всего проблема в «пропитке орехов», что кстати далеко не всегда зависит от прямоты рук (как, впрочем, и во всей кулинарии) — бывают «плохие» орехи.
Вам необходимо «связанное» тесто (т.е. не рыхлое) + «мокрое» (т.е. не сухое).
На первое влияет по большей степени состав/качество исходников. На второе — процесс приготовления.

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

По режиму готовки — надо смотреть на оборудование. Т.е. какого типажа «печка/плита» и «тара». В зависимости от соотношения площади к объему тары возможны вариации тех-процесса. Типаж печи вносит так же свои тонкости в приготовлении.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Как минимум, экономить можно на глажке-уборке-стирке и прочих ритуалах.
еще можно экономить на чистке зубов, умывании, купании, стрижке и прочих ритуалах. Сказывают, на этом даже заработать можно.
Полчаса блаженно посидели ничего не делая

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

UFO just landed and posted this here
Я сначала подумал, что это шглюк хабра и мне повторно уведомление пришло о старом сообщении.
Ваше сообщение один в один как то, что уже было выше.
Не интересно.
Вот смотрите, есть перекуры на работе. В момент перекура люди страдают херней, курят, болтают.
Я во время перекура забираю малышу у жены и таскаюсь с ним по дому разговаривая о какой нибудь ерунде. А она отдыхает.
На выходе — у меня перекур, у жены отдых, малыш развлекается.
Довод про «когда будет два» у меня во первых вызывает вопрос — нахрена мне два? И во вторых почему два, а не семь?

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

Если мне вдруг сейчас станет резко не хватать свободного времени, я просто стану работать 6 часов вместо 12 и у меня его появится куча. Станет меньше денег? Я и так зарабатывают несколько средних зарплат, да стану чуть беднее, но есть вещи и важнее денег.
Согласен на 98% (ну бывают редкие «особые случаи»). В целом считаю, что вы правы — OpneSource, это легендарная отмазка на сегодня, когда лениво трудиться над собеседованием и нет желания выдавать кредит доверия разработчику из non public enterprise.
Только полные задроты сидят бесплатно после работы в оупенсорсах и это медицинский факт.

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


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

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

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

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

А это законно?

В принципе да, но над этим парятся только "серьезные компании"


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

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

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


Такой подход позволит покачаться и более эффективно выполнять работу в будущем. Когда я был джуном у меня уходило 3 дня на то что сейчас я делаю за пару часов. Причем 1:30 я думаю как это правильно сделать и 30 минут собственно набираю код. Такой скачок производительности естественно заметят руководители (если они есть) и грамотный руководитель пересмотрит оплату, если же нет всегда есть шанс сменить работу с повышением оплаты. Правда ответственность и сложность вырастают с ростом карьеры, если раньше я менял ссылки на сайте, то теперь мне могут кинуть важный но не срочный эпик который я буду делать пол года в одиночку и на который по хорошему нужно 2 отдела. Правда от таких фортелей начинаешь выгорать.


Именно в такой период стоит посмотреть другие технологии, которые внезапно помогут сдать проект быстрее. Для меня php быдлокодера такой технологией стал React и он позволил мне сэкономить кучу времени на верстку однообразных компонентов — ui киты просто замечательная идея!


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

У них — да, у нас — нет (в общем случае). Там много оговорок и формальностей надо выполнить, включая задания на разработку и ненормированный рабочий день + использование своего оборудования, чтобы это стало законным.
Резковато но согласен. Почему компании пытаясь нанять специалиста которого у них нет пытаются задавать тонны вопросов на которые ответ вне контекста даже и не вспомнишь? Не проще сформулировать текущую проблему или нанять человека на н времени или заключить контракт на решение н задач?
Найм специалиста — процесс долгий и сложный и нанимать его на одну задачу банально невыгодно.
По моему опыту компании понятия не имеют чем занять кандидата за пределами текущих проблем. Поэтому для меня вопросы в духе «кем вы видите себя через н лет». Да никем не вижу, если не на позицию руководителя устраиваюсь.
UFO just landed and posted this here
Люто плюсую как отец трех детей.
Сначала у тебя нет опыта, чтобы достойно работать над опенсорсными проектами. Через 10 лет, когда он появится — уже нет времени. Поскольку для того, чтобы был результат, ты должен серьезно вложиться в дело. Серьезно вкладываться получается только в основную работу.
UFO just landed and posted this here
я в 21 только из армии вернулся, какой тут soft skills. заморачиваться обязательно.
UFO just landed and posted this here
Не достаточно? Нанимай меня, плати бабло и смотри всё что тебе нужно. Нет денег? Ищи студентов которые на гитхаб коммитят.

Ага, как ни глянь на гитхаб — одни студенты, бл…
> Да всегда, даже из кровавого энтерпрайза есть выход в open source в свободное время.

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

Так можно же без фанатизма — пол часа раз в пару дней.
Я не понимаю, какую задачу можно решить погружаясь в неё «по пол часа раз в пару дней». Может это специфика работы моего мозга, но чтобы выдать более менее нормальное решение, мне сначала нужно подумать около часа, затем не меняя контекст дольше чем на пять минут, сесть и начать кодить на несколько часов выдать хоть какое-то решение. Затем этот цикл можно повторять. Что за решение (опять же, в моём случае) можно выдать «за 30 минут, пару раз в неделю» я понятия не имею.
> Так можно же без фанатизма — пол часа раз в пару дней.

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

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

Благо, Druu, ну это смешно ведь)) Опенсорс — это не булево «подходит/не подходит», это не черно-белое «хороший-плохой», это просто дополнительная интересная информация о потенциальном коллеге.

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

Такое впечатление, что кандидата я должен оценивать при помощи астрального шара. В резюме люди врут, серьезно.
* Пишут «писал хайлоад», а когда спрашиваешь — «все пишут, вот и я написал, но у нас было максимум 100 запросов в сутки».
* Пишут «паттерны проектирования», а когда спрашиваешь — они делают удивленные глаза и говорят: «а что это?». Блин, чувак, ты хоть свое резюме прочитай перед собеседованием, если тебе его друг-программист писал.
* Не могут рассказать, как бы они написали игру орел-решка (загадываешь сторону, комп подбрасывает монетку и отвечает, угадал ли ты). Ну да, такую что в 5 строчек пишется.
* Пишут «10 лет опыта, Senior JS Developer», а никогда не слышали терминов «прототип», «замыкание», не слышали о методе «bind» и не знают, какой баг будет в этом примере, а если им укажешь на баг — не могут придумать ни одного решения:

<button>0</button>
<button>1</button>
<button>2</button>
<button>3</button>

var buttons = document.querySelectorAll('button');

for (var i = 0; i < buttons.length; i++) {
    buttons[i].onlick = function () {
        alert(i);
    }
}


Серьезно, со всеми этими приколами я сталкивался, когда собеседовал народ в Wargaming на позицию Senior Javascript Developer. Они 10 лет вставляли пару снипетов на JQuery со StackOverflow в 5 разных конторах и так и жили и у них довольно неплохое резюме — куча контор, сначала Jun, потом Mid, а в последней уже Senior был, а уровень — максимум на очень слабого миддла.

Так ответьте мне, Druu, как правильно собеседовать столь ранимых существ, есил каждый вариант может кого-то обидеть, возмутить, что я, тварь дражащая, посмел задавать им столь возмутительные вопросы?
> Такое впечатление, что вы представляете потенциального работодателя/собеседующего такими себе мудаком

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

> Вот почитать всех комментаторов — непонятно как оценивать потенциальных кандидатов вообще.

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

> * Пишут… пишут… пишут…

А если у него три тудулиста на гитхабе, да еще и непринятый пр в мобх, то это, конечно, показатель. Что и в хайлоаде, и в паттернах, и кофе хорошо заваривает. Так что ли?
Вы опять в крайности впадаете. Гитхаб — это лишь маленький плюс, тема для разговора.

ревью какой-то уже выполненной задачи

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

Что и в хайлоаде, и в паттернах, и кофе хорошо заваривает

Вы так говорите (судя по шутке с кофе), словно я слишком много требую от кандидата. Разве «не врать в резюме» — это так много?

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

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

> Серьезно? Без понимания бизнес-требований? Без понимания существующей архитектуры проекта? Как вы себе это представляете?

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

> Вы так говорите (судя по шутке с кофе), словно я слишком много требую от кандидата. Разве «не врать в резюме» — это так много?

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

Хорошо. Я считаю, что любой вклад в опенсорс (любой, от самого маленького, до огромного) — это еще один кирпичик в понимание того, подходит ли кандидат. Даже большого недостаточно, чтобы сложить мнение и даже маленький может для какого-то кандидата стать недостающим плюсом. Потому не нужно впадать в крайности «или опенсорс на 50 лет, или ничего». Опенсорс — дает просто определенное количество, грубо говоря, баллов. Представьте, что это ролевая игра, где вы — персонаж игры и вкладываете часы в разные пункты. Вот вы вложили в 5 пунктов в семью, повысился уровень счастья, вот 2 пункта в опенсорс — увеличился уровень престижа и вероятность получить работу на 1%. А вложите 20 пунктов — вероятность увеличится на 5%. 100 пунктов — 10%. Я понимаю, что я сейчас идеализирую, но это лишь пример.

Мне мой вклад в опенсорс 7летней давности до сих пор крайне положительно агукается на собеседованиях. Да даже клевую статью на Хабре можно кинуть перед собеседованием и обо мне уже сложится дополнительное впечатление.

Аналогично, когда я собеседовал десятками, если не сотнями ЖС-программистов — я заходил и на гитхаб, и смотрел единичные коммиты. Читал статьи, просматривал выступления. Да, я был лидом команды и ответственно подходил к своей работе, а отбор людей в команду был частью моей работы. И даже единичные коммиты на Гитхабе, которые я мог бы посмотреть были маленькими плюсами к моему решению.
А что насчет тех, чей вклад в опенсорс отсутствует на гитхабе в силу отсутствия гитхаба и гита в те годы, когда у человека было время на опенсорс?
Тогда был гугл-код, а еще раньше — мейллисты. А вообще — это ведь только бонус. Нету вклада — нету бонуса. Зато, может, есть другие бонусы. Большинство людей, которые я тогда нанял были без вклада в ОС (просто именно с вкладом было довольно мало, к сожалению)
Offtop
buttons[i].onlick

Какой интересный event :)

Вот не согласен с парой багфиксов и в роли соискателя, и в роли представителя работодателя.


Как минимум, фиксы в фреймворк {frameworkName} на языке {languageName} показывают, что ты "{languageName}-разработчик, владеющий {frameworkName}", а не "{frameworkName}-разработчик". Даже если в пресловутый jQuery пару фиксов сделал, то это показывает, что ты JavaScript-разработчик, владеющий jQuery, а не jQuery-разработчик.

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

Не хватает контрибьюторов? Значит проект умрет. Это не плохо и не хорошо, это так работает.
UFO just landed and posted this here
Условие найма в виде ссылки на гитхаб и неоплачиваемые тестовые задания — это всё из одной оперы. Расчёт на одиноких гиков, у которых помимо работы есть куча свободного времени, которое некуда девать. Хобби, спорт, семья — всё ерунда.
Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.

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

Кому должно?

Лид должен сам всё выдать и так. С потрахами.

Кому должен?
А если он не хочет никого потрахивать?
Компетентный тим/тех лид должен уметь потрахивать. Это моё официальное заявление!

Лид должен сам всё выдать и так. С потрахами.

Ошибка в слове как-то даже кстати.

Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.

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

Вряд ли идеологическому лидеру по разработке ИИ, например, кто-либо задаст вопрос про big-O.

И сразу вспоминается история про разработчика Homebrew

Он же сам потом писал, что не прав был с жтим твитом.

Под пытками и землю плоской называют.

UFO just landed and posted this here
Недавно комментировал статью по найму. Чисто по моим ощущениям от чтения статей о собеседований в США и прочих буржуазиях.

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

Другой риск — взять не того. За что HR и команда будет раскритикован в изощрённой позе. Из-за чего перестраховка растёт из перестраховки.

Но это работает, потому что весь рынок так работает.

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

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

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

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

А если, например, в первой куче нет монет с решкой наверх? То получится в одной N, а в другой 20. Но логика правильная была.

А, неправильно про разделение прочитал. Тогда все правильно, извиняюсь.

Заголовок спойлера
Ок, пусть монет будет 100.
80 орлов, 20 решек.
В первой куче (по вашим словам): 20 орлов и 0 решек
Во второй: 60 орлов и 20 решек.
Переворачиваем монеты в первой куче и получаем: 0 орлов и 20 решек
Видим что в обеих кучах по 20 решек. чтд.
Если в условии написано, что монет-решек всего 20,
и если все они попали в первую кучку,
то во второй не 60 орлов + 20 решек, а просто 80 монет-орлов.
Ну например у вас в условиях вообще не указано, что в мешке — четное количество монет.
А это не влияет на решение, как ни странно =)
Это только если все монеты на ребро ставить
Да, но ведь и не указано, что кучи должны быть равными. Почему-то пытаясь решить эту задачу, очень многие (включая меня) откуда-то вот это несуществующее условие про «равные» в голове нарисовали. И всё, с этим условием — задача уже нерешаема.
По-этому просто сгребаем все в одну кучу, и перекладываем во вторую по одной, пока не освободимся…
Решение методом перебора. Мое любимое!!!
Да, берем и все монеты переворачиваем орлами вверх.
ОМГ, не ужели есть кто-то кто впервые видит эту задачку на хабре)
а что простые решения отменили?
посчитать, разделить, пощупать(лизнуть), перевернуть…

Мне почему-то сразу брутфорс на ум пришел:


  1. Собрать монеты в две кучи — в первой 10 шт., во второй остальные;
  2. Спросить, равное ли количество решек в кучах?
  3. Если нет, добавить в кучу#1 одну монету из кучи#2, вернуться ко второму пункту;
  4. Если да, можно собрать деньги и уходить.
А зачем? Задача явно математическая. А значит стороны монет отличаются столько цветом и ядовиты :D
Подождите. А если проще: делим кучу на 2 части и на ощупь отбираем решки поровну в обе кучи?
Сработает только если их больше или равно 40.
Ну как почему, представьте их 38, вы отделили 20 и вдруг в них оказалось все решки, в другой перевернете 18 орлов и будет уже неравное количество. Да и любой другой сценарий насколько я понял будет так же провален.
Если я отделил 20 и там оказались все решки — то после переворота этих 20 в друх группах будет одинаковое количество решек: 0 из 20 и 0 из 18.
И? решение то не такое предложено, а заранее не узнать как именно произошло разделение.
А заранее знать и не надо. Достаточно наугад выбрать 20 монет и перевернуть их, после чего среди этих 20 монет окажется столько же решек сколько среди всех остальных.
Значит пост про таких как я.
Так мы переворачиваем только первую кучу, не трогая вторую. 38 монет, отделили 20, оказались все решки, переворачиваем их, решек не осталось и во второй кучу, соответственно, их нет. Условие выполнилось. Допустим, что из этих 20 только 8 решек, а 12 оставшихся остались во второй куче. Переворачиваем все монеты в первой куче, у нас получается 12 решек и 8 орлов. Условие опять же выполняется.
В задаче сказано разделите монеты на две кучи
А вы переворачиваете монеты
Вообще некорректная задача, не выдан инструментарий что можно что нельзя
Если их можно в темноте без проблем находить тогда можно просто 10 решек в одну кучу положить
Прямо в точку. Тут были молодцы, которые просили сделать тестовое задание. Я спрашиваю «Сколько его делать по времени?». Отвечают: День. OMFG! День! При том что ставка в районе 25-30$ в час это выходит минимум 200$. Платить понятно никто не собирается.

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

Вопрос был задан и ответ был отрицательный.

Это рынок. Бывает и выгодно делать. Если предложение достаточно высокое, например. Если бы разговор шел про 80$ час при успешном тестовом, то согласились бы попробовать?

For sure. Но как я написал выше это все for free. Я бы и согласился и за 25$ в час при успешном тестовом. В таком случае это особо не отличается от обычного мелко-среднего контракта на фриланс-бирже где собственно этот контакт и был найден.
На самом деле в последнее время появилась просто аллергия на потерянное время.
На самом деле в последнее время появилась просто аллергия на потерянное время.
Куча контрактов где работодатели слабо или вообще не понимают что хотят.
Когда пытаешься объяснить что этапы исследование-анализ-проектирование (а часто и реверс-инженеринг) стоят времени/денег, народ изумленно поднимает глаза и говорит что это вне бюджета.
Понятное дело выгодней, чтобы разраб сам спрашивал как надо и внося правки раз за разом приближался к идеалу.

I know your pain!
Все так. И про тестовые тоже. Еще забавно, когда какое-то задание становится модным и уже в 4-5 раз его получаешь.

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

Иногда работает. Иногда приходится делать вид, «решая».
Если бы разговор шёл про тест, на который будут даны конкретные условия его выполнения, описаны все технические требования для его успешного принятия (по сути, чёткое ТЗ), то тогда без проблем, можно и выполнить задачу.

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

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

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

Да, есть риски. Каждый за себя решает, на мой взгляд, если предложения достаточно высокие, то затраченное время даже на 5 таких тестовых заданий с высокой вероятностью принесет 2-3 контракта, где можно работать ближайшие 1-3 года. Цена недели, а выгода годы.
Но каждый, конечно, за себя решает.

Задачу делать день или вам даётся день на задачу? Вы бы предпочли, чтобы вам дали 20 минут и секундомер? Я давал на тестовое задание… (сегодня четверг, ну значит, в понедельник, в первой половине дня вторника я жду ответ), хотя работы (с учётом набивания кода) там было на пару-тройку часов. Как раз потому, что люди все взрослые, занятые, текущая работа, семья, прочая личная жизнь.
Было сказано, что на выполнение задачи уйдет день. Как я уже сказал выше, у меня на потерянное время в последнее время дикая аллергия. Это мое чистое ИМХО разумеется. Возможно кто-то, как при поступлении в Шаолинь готов первый год мести полы в монастыре постигая безначальное ДАО.
Я - нет
set_boring_mode(True)

У меня основная работа, 2 горячих проекта, 2 домашних проекта и очень хочется учиться новому.
20 лет назад, да, я бы с радостью взялся за тестовое задание и даже провалив его радовался, что бесплатно поимел опыт.
Но мир изменился (с)
Все на удаленке и все на аутсорсе. Время не просто деньги, у него есть названая ставка.
Раньше я думал, как круто будет переехать и работать в штатах. Теперь stackoverflow подсовывает вакансии с тэгом «Remote — ok» и я понимаю, что переехать-то можно но не обязательно навсегда и именно в штаты.
set_boring_mode(False)

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

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

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

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

лишь бы не сыплющиеся форды

Ответный зануда мод
Так может быть вы не в курсе, но Форд то, «того», то бишь ушел в мир иной. И с текущим положением дел он вполне может и не иметь никакой связи. Ваш кэп.

Attention — я не Ford-fanboy, люблю иную марку.
Посмотрите приложение маркета, фейсбука, мейлру почты, контакта, ютуба, альфа банка и так далее, и далее, и далее. Как впечатление?

Да, фиговенькие приложеньки, особенно по сравнению с продукцией вашей компании OOO «Хэндисофт», которая сделала для Департамента торговли и услуг города Москвы такие потрясающие продукты как… эээ… нууу… как что, кстати?

Я в этой компании 2 месяца проработал. Не знаю откуда инфа у вас.

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

А у нас будет собеседование?)

Вряд ли. Мы не знаем как его проводить:(. Гугл с фейсбуком, оказывается не умеют собеседовать, а у их критиков нет значимых результатов, демонстрирующих преимущества их подхода.
А вы сами не видите противоречия в том, что вы владеете потрясающим знанием о том, что ведущие мировые IT-компании неправильно ведут свои ключевые бизнес-процессы, но разработать приложение, которое не стыдно показать вам это не помогает?

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

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

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

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

Все, что хотелось посоветовать автору — не идти в руководители, пока мозги не встанут на место (а встанут в тот момент, когда прочитав данный высер будет сделан вывод о синдроме графоманского бреда у автора статьи)
Ваша манера вести диалог говорит о, как минимум том, что вы «хреновый руководитель». По крайней мере из этой выдержки уже есть от чего делать такие предположения.
А прежде чем «катить бочку», могли бы показать себя с лучшей стороны, хотя бы ознакомившись с теми статьями, что написаны автором. Увидели бы, что он далеко не так зелен, как его вы тут обвиняете. Но это же сложно.
А потом такие люди еще и OpenSorce имеют наглости требовать — когда сами нифига не хотят взять и прочесть.
Даже интересно стало, про какие статьи «незеленого» автора вы говорите? Про то, как сделать плохой бекенд или про гайды по свифту и иосу для начинающих? Средненький миддл, возомнивший себя самым умным.
И если для вас «хреновый» руководитель тот, кто не носится с каждым кандидатом как с писаной торбой, то вынужден вас огорчить, это даже не входит в прямые обязанности. А вот формирование крепкой и эффективной команды без чванливых идиотов и прочих токсичных личностей, которые называют вопросы бесполезными или вообще сваливают посреди собеса.
И можете с моими статьями ознакомиться, с библией проектирования, я там много чего интересного писал, про техническое управление в частности. Без нытья и скидывания ответственности, как автор данного поста.
UFO just landed and posted this here
Большое спасибо за статью, за выводы в ней, и отдельное спасибо за картинку!
По поводу этой клятой квазилогической задачи (ненавижу их всеми фибрами души) — ответ какой? Собрать все монеты в одну кучу, и перекладывать по одной во вторую кучу, пока число монет решками вверх не сравняется в обоих кучах?
Хотя если честно — мой ответ на такую задачу с вероятностью в 80% будет «Сами лазайте по башням колдунов, а мне такое не интересно. Прощайте.».
Странное решение, для данного описания задачи. Выключается свет, но остается возможность определить сторону монеты. По условию даже нет уверенности, что можно переворачивать монеты.
Единственное решение для себя я видел в постановке на ребро.
Выключается свет, но остается возможность определить сторону монеты.
Решение этого не требует.

Но вариант с брут форсом тоже подходит)

Здраствуйте… я туплю или…
Проще известные 20 решек перевернуть и хаотично разбросать монеты на две кучи. В обеих кучах число решек одинаковое == 0, условие соблюдается — выпускай злой колдун!
Хотя и с пустыми руками…

Известно количество, но не расположение.

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

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

Это собеседование будущего сотрудника МЧС или программиста? Если где-то при трудоустройстве проверяют нервную устойчивость — значит надо сразу сваливать оттуда. Потому что это одна из основных задач работодателя — обеспечить такие условия труда, в которых эту устойчивость демонстрировать не придется.
А если всё упало и горит, вас просят подключиться и помочь решить проблему с программой, которую вы разрабатывали?
Или вы пишете идеальные программы, которые никогда не ломаются?
Или ваши программы не настолько бизнес-критичные, что все задачи ставятся в бэклог, и спокойно чинятся в течение нескольких дней/недель/месяцев?
ПС: ничего личного конкретно к Вам и вашим скиллам, просто разбираю конкретную ситуацию.
Это совершенно не то же самое, что собеседование. Реакции на разные ситуации могут быть абсолютно разными и сами по себе сугубо индивидуальны. Обобщать их не имеет никакого смысла.
Мне, например, на собеседовании сложно собраться с мыслями для решения задачи, но в случае поломки чего-либо в продакшне я вполне себе мобилизуюсь и решаю проблему.
Мне кажется, что вы под стрессоустойчивостью понимаете лояльность к банальному несоблюдению условий труда, включающую в себя переработки и выполнение работы вне должностых обязанностей.
Не вижу повода для стресса в описанных вами ситуациях.
Не вижу повода для стресса в описанных вами ситуациях
Я в целом тоже(хотя падения бывают разными), но как видно из комментариев ниже, для некоторых это действительно стресс:
> Если предполагается что будет все падать и гореть — к черту это место работы

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

Если предполагается что будет все падать и гореть — к черту это место работы, если только все эти падения и горения не будут оплачены (вместе с сеансами релаксирующего массажа и сеансами психотерапевта, для восстановления нервов). Если же такие ситуации являются исключительными, то тогда можно с тем же успехом требовать от сотрудника уметь добывать огонь трением. Мало ли, на необитаемый остров с ним попадете?
Хотите на самом знать деле от чего «я» испытываю стресс?
— когда коллега врет
— когда коллега троллит вместо нормального разговора
— когда коллега троллит влезая в «чужой разговор»
— когда коллега заходя кидает «здорово бандеровцы»
— когда коллега делает агитацию вида «наклейка на толчок 20!8»
Вот это вызывает реальный стресс. А паниковать при «упало приложение» это из разряда «волков бояться — в лес не ходить». ПО, это наша область. И профессионал по-хорошему отдает себе отчет о том, что факап возможен.
сюда же:
— когда коллеги в трех метрах от моего рабочего стола ведут беседу и ржут как кони, когда я наушниках пытаюсь общаться с заказчиком
— когда коллеги перекрикиваются через комнату с одного края до другого через мою голову
— когда коллеги в принципе вносят в рабочие диалоги темы политики/национальностей/религий/пола, еще хуже, если они шутят на эти темы
— когда коллеги опаздывают на митинги. особенно если планировался митинг на тридцать минут, а за ним встык начинается следующий
— когда коллеги, которые обладают вроде бы даже техническими знаниями, не умеют настраивать наушники и микрофон для работы в приложении для виртуальных совещаний (приложение используется фирмой больше трех лет)
— когда коллеги присутствуют на митингах, но потом ничего не помнят / не читают протоколов / не понимают сути и надо все повторять с нуля и с каждым отдельно
— когда считается, что если о необходимости выполнения задачи не напомнили три раза, то можно ее не выполнять. «ну если вам надо было бы, вы бы напомнили»
— когда вместо поиска решений и предовращения повторения факапов можно провести три часа в склоках, тыканиях пальцами и выяснении имен виновных

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

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

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

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


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

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


А чего такого-то? Классика жанра — ПВО (Погоди Выполнять, Отменят)
Боюсь, под стрессоустойчивостью нынче понимается умение молчать в тряпочку, когда на тебя орёт начальство — раз, и два — готовность не посылать всех на три буквы, а вджобывать в 3 часа ночи за спасибо — потому что ведь завтра дедлайн!

Ну и плюс, habrahabr.ru/post/352246/#comment_10730912
лояльность к банальному несоблюдению условий труда, включающую в себя переработки и выполнение работы вне должностых обязанностей.

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

А вот объявления, подобные этому, вызывают хтонический ужас.

P.S. Кстати, часто под стрессоустойчивостью понимают простое умение подавлять агрессию при зачитывании техзадания, составленного заказчиком.
По описанию ну никак не разработчик. Скорей руководитель, да еще решающий оперативные вопросы. А там есть более важные навыки, например умение разбираться со стеком задач на который совершенно точно не хватит времени.
Помню в Амазоне наряду к 8 интервью, на одном из них еще грубо наезжать пытаются — типа проверить как буду себя вести при стрессе.
Но я-то человек женатый — к оскорблениям и унижениям привык. :) Домой вечером не тороплюсь.
Если глава главного коллектива в жизни допускает оскорбления и унижения (к любому его члену), то грош цена такому руководителю. )))

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

О. Встречал такое 8)
Причем именно с хамством и криком. Спокойный и четкий ответ «нахер пошел» (уж простите) ввел собеседника в ступор.

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

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

Сами лазайте по башням колдунов, а мне такое не интересно. Прощайте.

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

Это ключевой момент в глазах рекрутера практически любой крупной компании. Не только при подборе IT-спецов, но и для вообще любой должности ниже директора-совладельца. Никакой супермегаспец не нужен, если не обладает т.н. «гибкостью». И да, большие конторы готовы мириться с ветром в голове у «гибких».
Фирмы не заинтересованы в высоком качестве продукта, их интересует только маржа и стопроцентная послушность персонала. Если спец не мирится с маразмом на собеседовании, значит и маразма в задачах не потерпит, и тогда придется или долго и нервно объяснять спецу политическую необходимость красных линий зеленого цвета, или заново давать объявления, устраивать собеседования и т.п. и т.д. Контора просто экономит себе ресурсы, выбирая прогибающихся и нетребовательных. Исключения редки, увы.
Но ведь должны быть и фирмы, в которых рисуют красные линии именно красным цветом?
По-моему, тут автор впал в другую крайность. Конечно, нельзя обесценивать опыт соискателя, но надо обязательно убедиться, что этот опыт релевантен новой работе. Плюс на рынке есть куча людей с откровенным враньем в резюме, не все делают пет-прожекты, на прошлой работе все проекты под NDA. Так что нельзя однозначно сказать, что текущий вариант всегда плох.
К тому же, не всегда группа профессионалов становится командой. Нельзя просто набрать кучу умных людей, посадить их в одну комнату и ждать что они сделают что-то великое. У крупных компаний много ресурсов, они могут позволить себе устраивать любой цирк с конями, пока к ним стоит очередь из желающих «работать в Дудле». Если у вас за дверью два кандидата, то ты можете позволить себе их детально расспросить об их опыте, потому что цена ошибки для вас существенно выше, чем для сферического Дудля. А Дудль, в свою очередь, может легко уволить неподходящего инженера. Плюс нельзя сравнивать компании в России и за рубежом, в условных Штатах уволить человека проще, в России — сложнее (это все добавляет к цене ошибки).

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

Так в том-то и дело, что в крупные компании не нужны лучшие. На должность условного «рядового программиста» в условный Дудль стоят, условные 10 000человек, на должность условного тим лида — 1000человек, а на должность тех дира или ведущего инженера всея Дудля — 10человек. Вот и получается, что более тщательно отбирают тех, чья потенциальная должность выше. Потому что на более высокой должности человек принесет больше пользы и у него будут более дорогие ошибки.
Придете в Дудль на должность разработчика — будете на собеседовании писать сортировку пузырьком, придете на должность тех дира — вас даже про язык программирования не спросят.
Про то, что мало кто переходит даже в github профиль (я уже не говорю про блог или pet-project) — полностью верно. Недавно менял работу и на каждом собеседовании упоминал свой блог или проект и смотрел на реакцию — как правило её не было. Причём все норовят всучить тестовое задание; и ладно бы оно было на полчаса-час или хотя бы интересным, так нет! К тому же твой 10-летний опыт разработки их вообще не волнует. С другой стороны это и плюс — сразу понятно отношение потенциального работодателя к разработчику.
У некоторых интервьюверов вызывало агрессию, когда спрашивал что они думают про мои доклады на конференциях, публикации на хабре и dzone, мои хобби-проекты из github которыми регулярно пользуются (хотя бы даже по статистике в maven central). Я расценивал эту злобу как зависть.
Довелось недавно участвовать в довольно большом количестве интвервью. И все кандидаты по резюме как на подбор — больше 3-х лет опыта, разные там проекты, специалисты во всем.
Начинаешь разговаривать, спрашивать про проекты, про достижения, прочие вопросы. И вроде все хорошо. Проходит час, начинаешь спрашивать технические вещи — и вдруг тишина. Кандидат не может ответить на простейшие вопросы. Даешь элементарную задачу — сделать разворот строки. Из «habrahabr» сделать «rbaharbah». И ведь не могут. Кто-то делает, но с кучей ошибок. И ни один не вспомнил про то, что в Java есть StringBuilder, который может это сделать из коробки, хотя никаких ограничений не ставилось.
Отсюда и появляется подход — вы мне сначала связный список разверните, а потом мы уже поговорим про ваши проекты. А то тратить впустую час на каждого кандидата несколько расточительно.
И ни один не вспомнил про то, что в Java есть StringBuilder, который может это сделать из коробки
Честно говоря, никогда не понимал, почему на собеседованиях требуют помнить вещи, которые обычно легко нагуглить, найти в документации или просто в списке методов.
А я и не просил никого вспоминать. Говорю же — ограничений не было. Хочешь — бери метод из коробки. Не помнишь такого — пиши свой. А уж сколько всего вылезло при написании… На пару часов гугления, что для написания примитивного метода как-то уж слишком.
А я и не просил никого вспоминать

И ни один не вспомнил про то


Говорю же — ограничений не было

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

Даешь элементарную задачу — сделать разворот строки. Из «habrahabr» сделать «rbaharbah». И ведь не могут

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

Мой кэш лучше потрачу на то то, как лучше мне написать очередную подсистему в ПО, что на нескольких языках программирования, ассинхронное и вперемешку монолит/микросервисы.
Фигней мозг забивать — себя не уважать.
Что я не вижу в предыдущем сообщении. Гипотетический вывод — вы врете. Где-то в чем-то, осознано или нет, но врете.

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

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

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

Ну «желания vs действительность», это уже кхм… короче не совсем объективно (в отличии от реальной потребности).
Как ситуация выглядит с моей колокольни? Гуглом в 95% случаев я базовую элементарщину найду быстрее, и, уже сделанную лучше, чем я буду что-то свое мастерить. Поэтому глупо помнить элементарщину — она не важна. Её ведь не продать. И задач, как таковых, она не решает. Задачи решают «решения». И эти «решения» почти всегда — это огромный массив кода (в том или ином виде).

Микро-оффтоп: в 2014-ом гугл не выдавал ничего в поисковом выхлопе на тематику «Java JSON query selectors». И я сел писать свое решение с нуля.
Это уже в 2017-ом, из спортивного интереса, нашел проект, что в 2014-ом стартовал. И, удивительно, мой велосипед, ровно как и тот проект .
Моя версия и эта библиотека оказались даже вполне совместимые друг с другом. Хотя писалось без взаимо-ведома. Ибо так очень сильно радует:
"$.cities.city[0].streets.range".

P.S. Еще раз извиняюсь за претензии.
Возможно стресс, возможно вопрос был задан среди сложных.
Знаете, хорошо проходит собеседования вовсе не тот кто хорошо работает. Хотя бывают исключения.

По вашему вопросу:
— наверняка есть функция которая разворачивает строку
— а работает ли она с юникодом?
— наверняка нет, значит mb_substr в цикле
— а вообще давайте спросим какая кодировка
— по опыту ответ наверняка «любая»
— вот тут совсем все становится грустно, ибо определение кодировки не самая веселая и очевидная задача
UFO just landed and posted this here
Поверьте, ни один из кандидатов не подошел даже близко к нюансам. А про юникод ни один не заикнулся. Их познаний в строках в Java не хватало даже на то, чтобы знать, что они иммутабельны. По сути, что я хотел бы услышать от кандидата 2 вещи. Попытку использовать StringBuilder.reverse() и затем свое решение. Первое показывает, что кандидат не будет писать свой велосипед и знает стандартную библиотеку. Вместо стрингбилдера можно и другую библиотеку, но попытки затащить guava в проект ради одного метода меня тоже не сильно радуют, пусть proguard и порежет все лишнее.
Свое решение можно написать банальное — дернуть toCharArray(), развернуть массив на месте, создать новую строку из массива. И я в упор не вижу, что тут сложного, и почему все порываются это нагуглить.
А вот уже потом идут все вышеописанные нюансы. 99% задач решится вышеописанным. Если человек про них знает, то совсем хорошо. Если нет, то разберется на месте.
На собеседовании в яндексе (на нескольких собеседованиях в яндекс в разные годы) меня спрашивали про параметры линуксовых утилит и про названия переменных для sysctl для выполнения тех или иных оптимизаций. Тут даже гугл не нужен, есть локальный ман. Но хотели именно не понимания что и зачем надо делать, а буковок. И это яндекс. И опыт работы в резюме на те моменты уже приближался к 10 годам, а мб и больше был, не в самых последних отечественных и не очень компаниях.

Ну Яндекс — это просто средняя по предложению на рынке компания, далеко не топ, если не нижние процентили…
Вот и методы соответствующие.

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

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

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

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

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

Может. Можно провести двойное слепое тестирование на уже работающих работниках, например.

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

Если вы начинаете гуглить на каждый пердеж, это тоже характеризует вас как специалиста… Хреновенького специалиста…

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

Я годик программировал на яве 5 лет назад, и то помню StringBuilder.reverse(). А если человек, претендующий на должность Java будет это гуглить — то сразу вопрос — в чем причина? И ответов на это обычно два — или у него память как у золотой рыбки, или он просто все свои N лет опыта тусил на кухне с кофейком и девочками из PR отдела, вместо написания кода, а значит грош цена его резюме.
Лет 12 на джаве пишу, но я не знал про StringBuilder и даже не догадался бы в нём посмотреть. Скорее бы смотрел в StringUtils. ИМХО этот метод там избыточный, там ему не место и реверс строк — это редкая задача.
> Лет 12 на джаве пишу, но я не знал про StringBuilder
> ИМХО этот метод там избыточный

12 лет писать и не знать про базовые вещи. Вот об этом и речь — по резюме — 12 лет опыта, а в реальности — отсутствие знаний о базовых библиотеках используемого инструмента. Спасибо что подтвердили мои тезисы своим примером. Тащите и дальше org.apache.commons.lang для простейших операций со строками.
Не писал на java ни дня, но совершенно случайно как раз про StringBuilder и reverse слышал. Вообще не показатель.
Как ни странно — соглашусь с обоими сторонами! Если человек не знает про StringBuilder.reverse — это вообще ни разу не минус.

Но вот если человек минут 15 пытается вспомнить о том, как заменить одну букву в обьекте типа java.lang.String — то это таки клиника и 5 лет работы это не компенсируют. Реальный случай, кстати.

Заменять буквы в объекте java.lang.String нельзя, это раз. Итерироваться по строке, это, внезапно, тоже нифига не просто, это два. Перекладывание строки туда-сюда это не то, чем люди на работе занимаются, это три.

Перекладывание строки туда-сюда это не то, чем люди на работе занимаются, это три.
Не совсем так. Сладкая тройка (String/StringBuilder/StringBuffer) — это такой микрокосм всего того, чем «занимаются на работе» 99% времени (неизменяемый обьект/фабрика без синхронизации/фабрика с синхронизацией).

Если же вы этого не знаете — то, скорее всего, вы программируете похорошо известному принципу: если достаточно долго месить чан с перловой кашей, в синтаксическом мусоре можно рано или поздно узреть лик Ларри Уолла.

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

StringBuilder это не фабрика, а билдер, лол. Я не знаю, где на это тратят 99% времени, у меня есть для этого AutoValue и AutoFactory. Это так, на всякий случай, чтобы руками не писать.
Кто вам сказал, что я не знаю чего-то? Я сказал, что итерироваться по строке это нифига не просто. И написать этот реверс на 100% правильно ещё сложнее. Я думаю даже, что почти никто в этом треде за день этого не сделает. И тут ниже говорят, что даже реверс стрингбилдера не на 100% правильно работает.

Я думаю даже, что почти никто в этом треде за день этого не сделает.
Ну если вы про учёт UTF16-чанков, то вы явно переоцениваете сложность задачи.
Еще надо символы-модификаторы учесть.

Если 12 лет и н слышал — очень даже показатель. Товарисч, наверное, и строки в цикле конкатенирует (2 новых объекта на каждую конкатенацию — тот самый StringBuilder и сама новая строка).

Я бы сказал по другому:
Если вы постоянно используете Builder то есть повод задуматься.
Возможно не знаете про темплейтные движки
Возможно вы не используете PreparedStatement-ы
Возможно вы генерируете XML руками
Возможно вы настолько некомпетентны что придерживаетесь мифа, что String s = «aad»+«sgfdds» это медленнее чем append.

И кстати ваш комментарий про циклы и новые объекты может говорить о том что вы не представляете как на самом деле происходит работа над перформансом в реальном проекте
UFO just landed and posted this here
Я, кстати, вообще не использую потоки, предпочитая printf.
Ну не нравится мне, как они реализованы в C++.
UFO just landed and posted this here
Я у вас могу спросить миллион «базовых» вещей в SDK которых вы не знаете, а то что вам совершенно случайно надо было узнать про реверс, ничего на значит.

Давайте рассуждать логически.
Не очевидно, что StringBuilder содержит реверс. Например ни Arrays ни списки не содержат на порядок более полезного reverse.
Поэтому если вы знаете про реверс в билдере, значит вы либо целенаправленно читаете по ночам Java API, либо использовали его. Но я, честно говоря, с трудом могу представить где он может понадобиться в реальной жизни.
Кстати, в JS есть Array.reverse()

А чтобы строку в массив превратить, нужно погуглить "js строку в массив", хотя ежу понятно, что нужно использовать split, а чтобы сделать из массива строку, .join('')

Я это загуглю одни раз или два, а потом буду писать это на автомате в своем проекте, где этот метод/утилита нужен часто. Задачи у всех узкие, никому не нужна вся стандартная библиотека каждый день.
reverse() вы использовали в каком-то проекте или узнали когда изучали StringBuilder/готовились к собеседованию?
Я сейчас даже не вспомню, разврачивал ли я строку когда-либо в коммерческих проектах или нет.
Потому что ваша задача решится любым опытным программистом за 2 минуты, просто погуглив нужный метод. В реальном проекте такое требование может встретится только в узком спектре задач и нет смысла держать в голове это решение постоянно.
Конкретно эту — да. Потому что это стандартная задача. Но для каждой стандартной задачи существуют ее нестандартные вариации. Например нам надо развернуть не всю строку, а каждые 7 букв, заменяя при этом среднюю на X (да, мне доводилось делать нечто похожее в реальном коде).
Если иметь представление, как решить оригинальную задачу, любая производная не доставит проблем. Иначе «опытный» программист рискует застрять в гугле надолго.
Для таких задач важно, что бы кандидат мог рассказать общий алгоритм, но требовать от него точной реализации на листочке — глупо.
Ну, не так уж и глупо. Например можно выяснить что кандидаты не в курсе о том что:
— array[array.length] вызовет исключение
— что строки в Java иммутабельны
— что string1 + string2 даст новую строку, а не изменит старую
— что рекурсия потребляет память
— что char занимает 16 бит, а byte 8
и прочих банальных вещах.

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

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

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

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

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

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

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

Безотносительно конкретного случая — чувак играющий(ая) на пианино мог бы саундтрек сделать в свободное время при желании для игрушки, а веб разраб бэкэнд написать в т.ч.)
расстрою вас, но в условиях стресса накосячат процентов 80% в результате вы упустили 8 из 10 нормальных спецов и один сам ушел посмотрев на фигню в задании.
Личный опыт когда «задачку» которую решал буквально вечером перед собеседованием(сисадминское про перечисление пользователей в AD на PS) на собеседовании отбило из памяти напрочь…
Накосячить может каждый. Не увидеть косяк, когда тебе на него показывают, может только тот, кто не знает, о чем идет речь.
Честно говоря, я не вижу тут проблемы. Мне давали ровно такую же задачку на собеседовании, правда на C#, которую решатеся в одну строчку:
string result = new String(inputString.Reverse().ToArray())

и нет, не потому, что у строки есть метод Reverse, а потому что я знаю, что строка это readonly коллекция символов, и с ней можно работать как с коллекцией символов. Далее, я знаю стандартный LINQ, о котором как мне кажется известно любому C# разработчику даже в универе, ибо это базовые вещи которые есть даже в Полном Руководстве (учебник для начинающих программистов). Ну и далее я знаю, что у string есть конструктор, который принимает массив сиволов. но даже если бы я не знал, я мог бы написать:
string result = String.Concat(inputString.Reverse().ToArray())

или более известный (хотя менее правильный) вариант:
string result = String.Join("", inputString.Reverse().ToArray())


Это очень базовые, которые я видел у 5 работодателей из 5, где я вообще работал. Ну и да, если ВДРУГ человек не в курсе всего этого (хотя возникают закономерные вопросы), то всегда можно просто взять и работать в стиле ANSI C с циклами и символами.

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

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

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

Обе задачи хороши — хотя они сильно разные, конечно…
В python символ занимает от одного до четырех байт. Это если в utf-8
Как видно из сообщения, речь идет про Java. char там является одним из примитивных типов и занимает 16 бит. А байт 8. Поэтому попытка разворачивать не символы в строке, а байты приведет к некорректному результату.
А как в java хранится utf-8 символ?
Специально никак. Но можно сделать
byte[] utf8Bytes = original.getBytes(«UTF-8»);
Где original это экземпляр класса String
Интересно, пришлось лезть в оракл доки.
Java использует по умолчанию utf-16 в которой символ может занимать два или больше байт U+10FFFF. Из текста не совсем ясно как эти символы обрабатываются
docs.oracle.com/javase/specs/jls/se10/html/jls-3.html#jls-3.1

Тоже хотел об этом сказать. Если оперировать просто char'ами, то сломаются строки с эмоджами в частности.
Кстати, StringBuilder.reverse защищает только от простых случаев, с точностью до одного code point.

Наконец хоть кто-то сказал. А задачка-то перестаёт быть простенькой. Больше 5 лет пишу на джаве, и я вот так сходу не реверсну это строку на 100% правильно.

Если бы люди мне все это рассказали на собеседовании, я бы всеми руками был за то, чтобы их взяли.
Даже если бы они и не развернули в этом случае строку :)
В задании кстати всегда давались в качестве примера только строки, в которых символ влезает в char.
Это, кстати, тоже опасно. У меня был случай, когда я взял человека приблизительно по этой логике. Пришлось расстаться через 2 недели — говорил красиво, а код писать не умел, разве что на собеседованиях.
Вы ещё хотите, чтобы utf-16 наизусть помнили и распозновали символы, написание которых совпадает? :) Или было оговорено явно, что нет символов, в utf-16 занимающих больше 16 бит?
Ни один человек на собеседовании не заикнулся про кодировки и utf-16. Поэтому они по сути пытались развернуть ASCII строку. И многие не смогли…
что string1 + string2 даст новую строку, а не изменит старую

И по ходу дела ещё создаст пресловутый StringBuilder

Зависит от версии Java и JVM, может и не создать.
> И ни один не вспомнил про то, что в Java есть StringBuilder, который может это сделать из коробки, хотя никаких ограничений не ставилось.

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

Серьёзно? С чего бы это? Видимо, я — нездоровый человек.
А когда завтра вашему "здоровому" человеку поручат на реальной работе набростать макетик сайтика он засядет на год за написание своего веб-сервера? Вдруг, он и на этот раз решит, что стандартными средствами пользоваться нельзя, полюс синдром NIH, ну, а задать прямой вопрос (и на собеседовании тоже!) ему религия "здорового человека" не позволяет. В шоппу такого здорового человека.

Как по мне так если такой вопрос задают, последнее о чем я подумаю что спрашивают энциклопедические знания стандартной библиотеки. Все уже давно приучены что все задачи на собеседования делать надо «ручками»
На мой взгляд, способность задавать уточняющие вопросы очень ценна для кандидата. В частности, я всегда уточняю, что из инструментария доступно, какая версия Java, какой JVM, какое окружение и могу ли я на это завязываться, выдавливая максимальный perfomance, или же по возможности не стоит, упираясь на максимальную переносимость.
> На мой взгляд, способность задавать уточняющие вопросы очень ценна для кандидата.

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

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

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

Вот хз, у меня к сожалению всего одно собеседование было, после которого меня и взяли, так что статистика так себе, но если погуглить такие задачки (а соискатель при подготовке 100% так и будет делать) то все статьи которые я видел на эту тему — всегда расписывают «велосипеды», а не методы стандартных библиотек. По моему вполне логично на них и ориентироваться. Так то и сортировка, и поиск давно уже реализованы, чем они принципиально отличаются от разворота строки что для них велосипеды писать надо, а для разворота не надо?
Из примеров про сортировку. Сортировка слиянием (merge sort) естественно давно написана. Но ее можно использовать не только для сортировки. Например, при ее помощи можно посчитать количество инверсий в строке/массиве. И это будет быстрее, чем считать в лоб. Но для этого надо знать, как устроена сортировка.
Быстрая сортировка тоже давно написана. Но ее часть может быть например использована для быстрого поиска К-го элемента в массиве (quick select). Опять же надо знать, как сортировка устроена.
Оба приведенных мною примера конечно можно нагуглить. Но когда-то люди их придумали именно на основе изучения других алгоритмов, в частности сортировок.
И пример из личной практики. Человек, явно не понимающий ничего в сортировках, умудрился делать вставку в сортированную коллекцию за O((N^2)*lgN), вместо O(lgN). Что при размере коллекции 1000 элементов дает примерно 7 000 000 (7 миллионов, Карл) операций, вместо 7.
Ну так и про разворот строки практически то же самое. Я к тому что я не вижу границы где бы разделялись задачи на которые ждут использование готовых библиотечных вещей, а где на реализацию своих велосипедов с целью мышление проверить. И почти во всех случаях обычно предполагается второй тип задач.
Дак и нет такой границы. В данном случае вполне логично спросить на счет библиотечной функции. Если говорят, что этого мало, то тогда уже пилить велосипед. И на самом деле я не встречал на собеседовании ни разу просьбы написать стандартный алгоритм (textbook algorithm). Но встречал задачки, которые им решались. И не только одним. На одном собеседовании я например использовал Дейкстру, хотя от меня ожидали поиск в ширину, так как он оптимальнее. Но интервьюер дискуссией все равно остался вполне доволен.
> А когда завтра вашему «здоровому» человеку поручат на реальной работе

А тут не работа, тут тестовое задание. И _здоровый_ человек учитывает контекст ситуации.

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

> Неужели кто-то всерьёз верит, что интервьюера в данном случае больше всего на свете волнует способность кандидата закодировать разворот строки?

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

Не такая уж она и элементарная, если это корректный разворот UTF-8 или UTF-16 строк, а не просто массива из char.

В формулировке «развернуть строку в Java» за разумное время без дополнительных ограничений на алфавит задача нерешаема (ибо есть как минимум эмоджи). Если рассматривать как ограничения
Из «habrahabr» сделать «rbaharbah»
то даже ваш пример с массивом байт подойдет.

Если как ограничение рассматривать это, то можно сделать проще(доведём до абсурда)


fun reverse(input: String) = if (input == "habrahabr") "rbaharbah" else throw IllegalArgumentException("$input not supported")
стажеры такие животные, которые не обладают навыками. И ранее ничего полезного они не делали

Это пример, хорошего превентивного отношения к кандидатам, или шутка?

Про животных — шутка. Про навыки — это быль, как правило.

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


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

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

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

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

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

arr = char[str.len]

for i = 0, i < str.len, i++
  arr[str.len - i - 1] = str[i]

ret arr.join


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

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

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


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

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

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

Но. Зачем? Проще потратить 10-15 минут на тривиальную задачку про кодирование, убедиться что кандидат на роль технического специалиста не годится — и дальше уже либо распрощаться, либо, возможно, собеседовать на роль PM'а.

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

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

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

А для того чтобы выпустить новый продукт — нужен конвейер. Думать тут не нужно, достаточно правил и технического задания. Это у них в одну полную строчку помещается всего одна арифметическая или логическая функция — потому-что платят за текст.
Да просто собеседовать должны те, кто потом будет с этим человеком работать. И подбирать эти люди должны кандидатов для тех задач, которые планируется выполнять. И если ему потом надо будет каждый день код на листике рисовать — пусть сейчас на листике рисует. А если ему потом надо будет, например, горы и горы легаси грести, то дайте ему сейчас немножко этого самого легаси и смотрите, умеет ли он его читать и понимать. А то как всегда — хотят каких-то абстрактных гениев во всем, чтобы и матан и алгоритмы и новый гуглодвижок мог бы написать, а реально ему потом надо формочки в вебе двигать…
бойкотируйте такие компании. Сейчас на рынке лютый голод, вы всегда найдете работу, даже отказавшись от пары лакомых кусочков.
O rly?
Нет, серьёзно Вы правда в это верите?
По моему скромному опыту, вакансию займет как раз тот кто смог быстренько осилить дифуру. Потому что это максимум что может осилить проверяющий.

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

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

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

А как нанять консультанта? По резюме, собеседования проводить? )

Замкнутый круг нарисовался)


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

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

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

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

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

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

А теперь вот вам первая реальная ситуация:
Я откликаюсь на вакансию (инженера-программиста, если что), прихожу на собеседование в кадровое агентство. Меня встречает очаровательная девушка. Приглашает «технического специалиста», которая начинает задавать мне вопросы, а все вопросы — из бухгалтерии. Точнее исключительно по программе 1С.
— Дык вам, оказывается, программист 1С нужен?
— Ну ведь у вас в резюме написано, что вы его знаете.
— Где это у меня такое написано?

Оказалось, что девушка просто не видела разницу между С++ и 1С…
Естественно развернулся и ушел. Что там в действительности требовалось работодателю — не знаю. Знаю одно — с такими кадровыми агентствами специалиста искать бесполезно — разве только вчерашний день найдешь.
После нескольких подобных встреч сделал для себя вывод — все предложения кадровых агентств лучше просто игнорировать, и не тратить время попусту.
> Имхо, очень часто при собеседовании обе стороны не могут (или не хотят) придерживаться принципа равного риска.

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

Почему работник? Если оформление белое, то как раз у работника риск максимум опять искать работу.

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

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

*Наверное это и есть «совесть».
Продолжаем. Вторая реальная ситуация.
Прихожу на собеседование. Меня встречает сотрудница отдела кадров. Ни слова не говоря, дает лист с тестовым заданием, отпечатанным типографским способом. Ну там какой-то хитрый запрос на SQL надо написать.
Тут же делаю для себя вывод: Если у вас такая текучка кадров, что вы не поленились отпечатать эти тестовые задания тиражом 1000 шт, то что я в такой организации забыл.
Развернулся и ушел.

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

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

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

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

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


Объясняю.
Конкретно 2 случай — SQL я, конечно, знаю. Но делать тестовое задание не стал. Понял, что я тут работать не хочу. Совсем не хочу.

Конкретно 3 случай — та система управления, которую от меня хотели, была совсем не бизнес-организационная. Напротив, это была насквозь техническая АСУТП. Система управления технологическим процессом, если вдруг кто не знает. Беседовали мы в основном про параметры ПИД-регуляторов, обратные связи, про устойчивость и робастность. То есть самая натуральная теория управления, есть такой раздел математики. На 4-5 курсе математических факультетов ВУЗов этот предмет изучают.
Без SCADA с OPC дело, конечно, тогда не обошлось. И без С++ с SQL, естественно, тоже. Но на собеседовании код С++ и SQL запросы меня никто писать не заставлял. (Раз уж программист, то должен это уметь).

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

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

И потом приходится слышать, что «Вот, все плохо, хороших специалистов сейчас не найдешь.»
Конкретно 2 случай — SQL я, конечно, знаю. Но делать тестовое задание не стал. Понял, что я тут работать не хочу. Совсем не хочу.

Причиной было тестовое задание отпечатанное типографским способом?

Вот сейчас вы написали нормальный комментарий с пояснением причин.
Так он и в первый раз нормально объяснил.
Тут же делаю для себя вывод: Если у вас такая текучка кадров, что вы не поленились отпечатать эти тестовые задания тиражом 1000 шт, то что я в такой организации забыл.
Развернулся и ушел.
Третий случай — моя тема) Здесь проблема скорее в отсутствии на предприятии толкового технолога. Если есть внятно сформулированное задание от технолога, то решить проблему уже не составит труда. Если на предприятии низкий уровень технологов, то его вынужден компенсировать программист АСУ, становясь и технологом тоже)))
Ну там какой-то хитрый запрос на SQL надо написать.

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

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

Я вот на этом моменте почти умер от зависти.
“If you wanna hire great people and have them stay working for you, you have to be run by ideas, not hierarchy. The best ideas have to win, otherwise good people don't stay.”

― Steve Jobs
Вот мы ищем системных аналитиков.

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

И что нам делать?

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

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

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

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

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


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

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

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

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

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

На мой взгляд, разница между вопросами и заданием надумана, если задание рассчитано на 10-15 минут.
Другой вопрос, зачем нам задачи про монеты и канализационные люки. Но тут ответ дал Паркинсон (Законы Паркинсона. Окончательный список, или принципы отбора кадров).
Люди работаю годами и по навыкам остаются джуниорами
Это прямое следствие нежелания работодателей оплачивать работу специалистов разного профиля для разных задач, а свалить как можно больше на одного сотрудника. В итоге такой человек-оркестр вынужденно лезет в смежные (и даже не очень смежные) области, вместо развития по основному профилю деятельности, и как специалист разбирается во многом понемногу, а глубоко не разбирается ни в чем.
В моей личной статистике кроме того, что вы сказали есть еще и отсутствие любопытства и желания знать чуть больше того, что задавали у сотрудника.
Какие ещё нафиг устные задачи? Например, задают какой-то вопрос, как сделать супер заговыристый вложенный запрос с кучей джойнов разных типов, группировками, аггрегированными функциями, промежуточными переменными. Как это всё делать в голове, когда не видишь промежуточного результата? Мозг может держать в голове максимум 3-5 объекта в «оперативке». А когда есть под руком комп, где всё видно. то можно сделать за пару минут. Такие вопросы задаются с единственной целью — загнобить разработчика и сбить зарплату. Вот они вообще никак не показывают может ли он решить эту задачу на практике.

Такой вопрос устно только плохие люди задают)

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

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

Насколько это формально?
Это совсем не формально, это же всё таки IT хабр. ))
Моя специальность называлась «теория формальных систем», вот и спросил, про какие системы у Вас ведется аналитика.
Если это внутренне определение компании, то тогда вопросы кандидатам некорректны, откуда соискателю знать их. Если внешнее или общеизвестное — ну так будьте так добры дать пруф. Ну если внутренне — дайте, по возможности, если не секрет, формальное, пусть не строгое, но определение. Что в вашей компании называют системой и в чем состоит анализ?
Системы и их анализ нам нравится ))
Спасибо
Это. простите, у вас словоблудие.
Вот профстандарт СА: classinform.ru/profstandarty/06.022-sistemnyi-analitik.html
Вот единственное полное русскоязычное описание, как работать с ВИ: www.ozon.ru/context/detail/id/8747662

Если для вас что-то звучит, как «сепульки» и «фигульки» — это может еще значить, что вы не в контексте.
На первый раз «словоблудие» Вам прощаю, но не заблуждайтесь и " базар фильтруйте" — целее будете.
За документ спасибо, повеселили от души.
Слишком уж неожиданно так СССР проявился во всей своей силе и мощи.
Но увы, base.garant.ru/71431038
Это только для гос контор.
Действительно, можете соискателей, которые зайдут, спрашивать, документ опубликован и они должны знать, раз уж пришли, свои потенциальнынъе обязанности.
Это не те системы.
И, если не секрет, как контора, где Вы собеседуете, называется?
У меня складывается ощущение разговора со стеной.
Давайте, раз не умеете смотреть профиль, в личных сообщениях вы мне свое резюме, а я вам свою контору. Чтобы в случае чего мы друг друга узнали и не мучались по новой.
Просьба есть большая, если уж Вы разбираетесь в этих стандартах, то как называется профессия составлять алгоритмы?
Как называется профессия человека, который составляет алгоритмы работы — завода, станка, прибора и т.д.
Стал своё резюме переделывать в соотвествии и для соответствия, но так и не понял.

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

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

У вас что по этим пунктам?
— Занимался от алгоритмов работы прибора до алгоритма работы предприятия.
— На входе обычно проблема.
— Методы интуиционистские. «Существует только то, для чего есть алгоритм создания»
— Сложность разная и риски разные. Сложность алгоритмов в формальной теории систем — моя специализация. Диплом писал о структуре сложности. Но всё зависит от предметной области, обычно там задаются граничные значения. Например придумать алгоритм возврата кредита так, что бы деньги вернули и никого не убили — в 90 долго решал такие. Или придумать алгоритм покупки предприятия с доходностью больше чем Х и не нарушая УК РФ — это в 2000. Или придумать алгоритм управления месторождением такой, что бы лицензию не отобрали, хотя на комиссию по отбору уже вызвали. Сейчас вот решал kaggle digit recognizer и toxic comments. В первой 0.99914 и передо мной не более 50 человек в зависимости от тестовой выборки, а в toxic от победителя отстал на 0.005 accuracy и 1800 мест. Как придумать алгоритм что бы сделать на toxic 0.99? И как его потом продать?

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

В указанном Вами документе не нашел ничего хотя бы отдаленно напоминающего мои занятия. Что мне написать в профессии? В системные аналитики, как специалист по формальным системам, я не гожусь. Архитектор систем — так там тоже, А-17/4 «предлагает описание алгоритмов», или «Определение ключевых сценариев для архитектуры программного средства» Н03.6 — так это совсем неясно. Определил сценарий и название даже придумал — это и есть создание алгоритма?
Мне кажется, это выходит математик. При доспециализации получится+разработчик ПО или +бизнес-аналитик.
Мы тут обсуждаем конкретный документ которым обязаны руководствоваться все гос учереждения. Вот похожий classinform.ru/profstandarty/06.003-arhitektor-programmnogo-obespecheniia.html
С одной стороны это правильной документ и должно быть одинаковое понимание у всех. В этом darkboatman полностью прав.
Но я не вижу в этих документах разработку алгоритмов функционирования. Не обзательно новых математических алгоритмов.
Там конкретные действия — поди принеси отнеси составь справку и т.д.
Но кто составляет алгоритм работы предприятия? Все системы управления нынче компьютерные, полностью алгоритмизированы должны быть — компьютеры совсем не понимают неформальное общение.
Вот в недвижимости понятно, кто архитектор, кто проектировал, кто бетон клал и арматуру вязал.
А в IT, куда более формальном, по сути своей существенно формальном занятии, пропущен основной момент. Идет подмена составления алгоритма и его реализации.
Это как приглашаешь «питонщика» и говоришь: — ты, братец, подъезды строил? — Да, конечно, вот можно посмотреть. — Ну и молодец, давай нам тоже вот тут подъезд сложи на 22 этажа и покрасивше и что бы «богато».

Алгоритмизацией, то есть формализацией уже имеющейся деятельности занимаются все: и программисты и аналитики разные. Проектирование нового состояния деятельности — это роль бизнес-аналитика и ответственность менеджеров, отвечающих за ее выполнение. Роль аналитика часто берет на себя в порядке совмещения программист, менеджер проекта или менеджер от пользователей.
Т.е. мне нужно в резюме указать «программист-аналитик»?
В классификаторе не нашел пункта — попробую еще раз изучить внимательно.
Помогите, ткните пальцем в номер. Мне как то ближе H03.6 — определение ключевых сценариев. ТОлько нужно тогда дать хорошее определение понятия «сценарий»
Если хочется именно создавать алгоритмы, лучше программист-математик.
03.6 — это откуда? я не нашел
Если вместо создания подойдет проектирование: выбор, адаптация и сборка из кубиков под стоящие требования, ограничения и доступную элементную базу, то вот варианты:
— программист (разработчик) (алгоритмы работы ПО)
— архитектор ПО или систем (алгоритмы взаимодействия частей внутри больших приложений или систем)
— Системный аналитик (алгоритмы работы пользователей с системой, алгоритмы взаимодействия компонентов системы)
— бизнес-аналитик (алгоритмы выполнения деятельности)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Методов и подходов к выполнению этой работы в зависимости от кучи параметров системы, проекта и окружения громадное количество.
Если еще и учесть, что между требованиями, входящими в проект и требованиями, спускаемыми программисту есть несколько циклов проектирования, то в деталях все ваши знакомые аналитики могут за всю жизнь не сделать ничего одинакового.
Благодарю, стало более понятно.
UFO just landed and posted this here
К сожалению — это рынок. Соискатели делают то же самое. Разница в том, что у компании профессиональные «закупщики» с неизбежно большим опытом и возможностями сбора широкой статистики, а работники крутятся, как могут.
По своему печальному опыту вывел правило: если мне дали опросник на психотип или что-то подобное, можно смело вставать и уходить. Еще не было случая, чтобы я, старательно ответив на 300+ вопросов, получил хоть какое-то предложение, пусть даже ниже рынка. При этом, эти опросники могут быть как с тестовым заданием (техническим), так и без него. Наверное все потому, что я социопат, склонный к беспричинной агрессии, подковерным играм, коварен и злопамятен одновременно, но я не уверен. Возможно там есть еще какие-то неприятные черты характера, которые я удачно «выбил» в очередном опроснике.
Так что теперь, если вижу опросники на психотипы, сразу извиняюсь и ухожу — все равно шанс около нуля, а время тратить — нет уж, спасибо, я найду на что потратить время.
Это просто в точку! Спасибо. Сам устал от таких собеседований.
Самые хорошие впечатления у меня от собеседований в форме диалога. Где людям был интересен мой опыт, и где по моему опыту задавались соответствующие вопросы из разряда «А как было это реализовано? А с какими проблемами при реализации столкнулись? А как бы сейчас сделали?». И соответствующие теоретические вопросы по стеку технологий, чтобы понять, насколько глубоко я погружен в ту или иную область. Сразу понимаешь уровень специалиста, который задает тебе вопросы и рулит собеседованием. И порой из-за одних вопросов и объяснений от таких людей уже возникает желание с ними работать.

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

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

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

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

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

личная история
Переставлял винду одному парню с 10 на 7. Там был скрытый раздел, и семерка не устанавливалась. Решил сначала стандартными средствами попробовать, потом если что через dd затереть с Ubuntu LiveCD. В процессе гуглил несколько вопросов. Парень общительный, что-то расказывает. Я между делом поддакиваю, и вот вроде все знакомо, но никак не могу сообразить, что же делать дальше. Внимание уходит с задачи на разговор. В итоге все-таки использовал dd, потом нормально установилось.
Рекомендую книгу «Думай как математик», или курс от того же человека «Learning how to learn», там как раз про такое много.
UFO just landed and posted this here
Самые хорошие впечатления у меня от собеседований в форме диалога. Где людям был интересен мой опыт, и где по моему опыту задавались соответствующие вопросы из разряда «А как было это реализовано? А с какими проблемами при реализации столкнулись? А как бы сейчас сделали?». И соответствующие теоретические вопросы по стеку технологий, чтобы понять, насколько глубоко я погружен в ту или иную область. Сразу понимаешь уровень специалиста, который задает тебе вопросы и рулит собеседованием. И порой из-за одних вопросов и объяснений от таких людей уже возникает желание с ними работать.


А даже если не возникает то приятно провели время. Но все чаще встречаю каких то агрессивных айтишников. Причем если в первом случае, в ответ на мои увлеченные рассказы о небывалых приростах производительности, получив «ч0, индекс поставили» я просто удивился. То получив хамство на просьбу предоставить расчет сервера 1с на базе Postgre вместо MsSQL, я просто выпал в осадок.
О! Любимый холиварчик :)
В целом автора поддерживаю, но в крайности впадать не стоит. Просто инструмент должен соответствовать цели, а не высокопарным идеалам.
Я за последние три года отсобеседовал около сотни кандидатов, а уж сколько резюме просеял…
Но вот банальными тестиками не увлекался ни разу. На предыдущем месте у нас было три фильтра.
Первый — просмотр резюме и ссылок на работы, если есть. Много можно понять уже тут. Даже по тексту резюме…
Второй фильтр — собеседование. За жизнь, за опыт, чего знает, как может рассказать о своих прошлых успехах. Очень много проясняется, когда человек сам рассказывает о своём опыте. Многие не могут ничего внятно рассказать, кроме «ну, у нас там сайт был, к нему модули, и чего говорили, я там правил», ноль конкретики и фига толку… Немного пофилософствовать, например про паттерны, но только те, которые человек сам знает (точнее говорит, что знает). Немного про насущные технологии. Главное на этом этапе — оценить способ мышления, багаж знаний и т.п. (Забавно, когда говорливый тимлид наизусть диктует описание десятка паттернов, на не может объяснить, чем отличается адаптер от враппера и от декоратора, а на прямой вопрос отвечает, что вообще это одно и тоже, только названия разные). Потом про нас, про задачи, про технологии. Очень интересно, что человек в ответ спросит…
И уж третьи этапом, если после собеседования мы друг другу нравимся, был некий тестик на общую соображалку. Давали на дом. Суть теста — ряд вопросов на самые разные темы от sql до office interop. Пользоваться для ответов можно чем угодно. Хоть гуглом, хоть соседом Васей :). Реально его делать — часа два-четыре, мы давали кандидату день (на его выбор). Цель теста — понять, как человек будет решать проблемы. Сможет ли понять суть вопроса и найти хоть какое внятное решение. Но главное не количество правильных ответов, а подход… Ибо компания была маленькая, нам были нужны в достаточной мере самостоятельные разработчики.

Моё имхо: умного и желающего учиться многому можно научить, да и сам он освоит самое важное. А вот тот, кто не желает учиться… ну… code monkey… Иногда и такие нужны.
Хотя я признаю, что в зрелый проект на поток задач желательно (а иногда и нужно) брать того, кто уже знает большую часть нужного… И тогда, да, тест быстрее всего прояснит картину.
Плюсую. Обычно кандидат раскрывается уже на первых предложениях — бывают джуниоры, могущие описать на доске архитектуру и даже обьяснить почему так а не иначе, и бывают сеньоры с описаниями по принципу «что говорили то и делал, как платили так и работал».
Кстати, по поводу помощи «соседа Васи» — у нас работает девушка, регулярно советующаяся с бойфрендом в случае каких-то затруднений с кодом. Он, похоже, неплохой специалист — т.к. результат нас вполне устраивает.
UFO just landed and posted this here

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

UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here

reduce — вывести строку "итого за год" по пришедшему с сервера массива данных по месяцам
map — преобразовать массив данных по месяцам сложной формы в массив плоских объектов из строк для <td>

Вот прямо сейчас пишу веб-игру целиком на фронте (т.е. никакого сервера и взаимодействия с ним). Все, что есть — это HTML5, vanilla JS, CSS. Все. Причем даже без jQuery. Никаких фреймворков. Это было специальное условие — не тащить за собой сотни килобайт фреймворков на каждый чих. И ничего, плюс-минус все работает, вся логика и весь интерфейс.
Ну и довольно популярная задача — это различные калькуляторы и конфигураторы. Они, в целом, тоже веб-приложения почти целиком на фронте, и лишь иногда, в конце процесса, скидывают готовый заказ на сервер.
UFO just landed and posted this here
Возможно я ляпну глупость, но теперь поддержка адаптивных сеток и прочих ништяков уже идет из коробки браузеров. TwitterBootstrap на сегодня уже не так, чтобы нужен. Далее, top-modern-vanilla-js из коробки на сегодня умеет в нормальные селекторы — jQ уже точно не нужен. Соот-но, если уметь писать код, React|Vue будут делать необходимое. А описываемое вами не приписано у этих фреймворков, ибо как-то глупо об этом писать. Все равно, что «человек может ходить в туалет — это супер достижение!».

Поэтому ваши тезисы устарели года на 4.
Хватит уже чушь писать, богатый функционал жиквери млин… Причем тут MVC вообще? Вообще знаете, что это такое? Если бы вы обладали нормальными знаниями по современным фреймворкам, давно бы поняли, что с ними jquery уже не нужен вообще, тк все тоже самое можно и средствами и плагинами фреймворков делать, причем удобнее и быстрее.
Ну, для справедливости, до уровня JQuery все эти плагины под тот же Реакт пока не дотягивают. Не по качеству кода, но по количеству фич — так точно

Не тащите в одну кучу jQuery и jQuery UI. Это очень разные продукты. И React c jQuery UI не пересекаются вообще по решаемым задачам. Для React есть библиотеки UI компонентов, включая тот же Bootstrap, но они не входят в React, как jQuery UI не входит в jQuery.


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


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

Ваше понимание устарело лет на 6.
Интересный у вас фронт-енд без массивов и map и reduce… jquery в 2018м?
UFO just landed and posted this here
Без работы? Да ведь полно проектов с нормальным современным стеком, но видимо если не знаешь, что такое map, приходится довольствоваться поддержкой древних жиквери проектов. Сочувствую.
UFO just landed and posted this here
UFO just landed and posted this here
Моднейшие технологии по работе с массивами под названием map и reduce. Лол. Вы живите нездоровыми иллюзиями, называя модными технологиями стандартные средства es. Это не модная технология, это уже давно стало стандартом языка, а вы всё это время с жиквери ковырялись и даже не заметили. Ну а в яндексе-то конечно дураки за пару дошираков массивы мапами и редьюсами гоняют.

Хм… Оказывается не так давно, только в 2009, в es5. Почему-то думал, что это es3, прошлое тысячелетие. И даже по факту это JavaScript 1.6, 2005-й год.

Да, во второй даже вы таки правы. Модным/молодежным map-reduce был в JS в 2005-м, с выходом Prototype.JS
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Надеюсь, когда программирование окончательно оформится, как отдельная профессия, математики и решатели задачек на смекалочку перестанут ее засорять.

Неужели мешают зарабатывать деньги, заставляя перебиваться дешевыми халтурками на JQuery?
Но ведь вы собираетесь работать в другом бизнесе, который не использует jquery, а использует фреймворки и map/reduce. И он тоже не хочет терять бабки, нанимая того, кто даже не хочет разбираться.
UFO just landed and posted this here

С вот этого: "Я собеседовалась на позицию фронтенд разработчика. За год работы я ни разу не использовала ни map, ни reduce, просто не было необходимости."


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


Любой js фреймворк изучается за 1 день беглого чтения туториалов.

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

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

Прочитал очень внимательно и подпишусь под каждым словом. Спасибо!



Lifestory из шизненного опыта:

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

Вот вам тестовое задание: Напишите класс, реализующий собственный функционал плейсхолдеров для запросов к БД MySQL.


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

Разумеется, я об этом сразу пишу: «Я не вижу смысла делать это тестовое задание, возьмите PDO, там все сделано до нас. Не нравится PDO — возьмите этот класс, этот или этот»

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

Через пару дней напоминаю о себе и пооучаю ответ: «Отказавшись делать тестовое задание вы не прошли КОНКУРС соискателей».

P.S. ЧСХ, веб-программиста эта контора ищет до сих пор…

P.P.S. Ах да, а еще в письме они предлагали скачать презентацию, рассказывающую о том, какая у них крутая фирма. Презентация — это PDF-ка на яндекс-диске. Весит она 54 мегабайта. ПЯТЬДЕСЯТ ЧЕТЫРЕ МЕГАБАЙТА, уважаемые читатели.

Я ради интереса её скачал. Внутри — ничего интересного. 7 страниц, фоном каждой сраницы монструозная картинка, немного текста (что-то там про первое место на рынке, печеньки в офисе и спортзал напротив).

Я сжал PDF-ку. Получился 1 (ОДИН) мегабайт.
Посмотрите на ситуацию с другой стороны.
На вакансию идёт поток соискателей, надо заполнить вакансию и при этом есть некоторые цели:
— Надо взять достаточно годного (точнее не пропустить негодного)
— Желательно взять лучшего из возможных
— Потратить поменьше ресурсов

И тут вы со своим кодом в виде Pet-project или код с прошлой работы. Этот код читать это тоже работа!!! Кто любит читать чужой код пусть первый бросит в меня камень.
Код может быть написан на малознакомом языке, наверняка в малознакомой области, очень часто по другим стандартам. Вот и получается вместо бегло глянул за 10 минут надо потратить полдня тяжёлой работы, чтобы посмотреть что же там у вас.
А там у вас форк чужого проекта и немного напильника. И информации получилось мало. Нет, оно работает как заказывали, вопросов нет, но информации для собеседующего мало.

Если же вас просят сделать задачу, то эту задачу смотрят уже раз 10 или 100. Все подходы известны (сами соискатели их на первых 5 решениях обозначили), это полностью ваше творчество (пусть и с копипастой со StackOverflow). Да, будет ваш язык и ваш стиль, но читать гораздо легче. Ну и тесты написаны, ошибки можно быстро ловить.
Задачу из жизни часто сложно сформулировать. «Напишите плагин для нашего проприетарного мониторинга» и что? Там врубаться 2 дня и 2 часа работы, это же невозможно давать людям.

Вторая пробема в том, что до вас разговаривали с человеком без кода, у него NDA на рабочий код и нет Pet project (или есть, но на Lisp/COBOL/ASM). Надо вас сравнить. Как?
Удобнее всего дать одинаковые задания и по ним сравнивать.

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

Резюме:
— Стандартные задачи сильно упрощают жизнь тем кто собеседует
— Олимпиадные задачки/деревья/сортировки те немногие области, которые знают большинство (потому что в ВУЗе учат)
— Умение коммуницировать очень важное и ценное

PS Я не HR, я искал в свою команду. Это такая редкость спросить что у нас! Да я готов к диалогу про нашу систему, я честно расскажу и послушаю какие будут вопросы. Большинство не может или не хочет распрашивать!
Плюсану.
Затраты на оценку решения и возможность сравнения кандидатов — это очень важно.
Если человек может выйти на работу за 1-10 контактов с разными компаниями, то нанимают кого-то выше джуниора обычно после 5-50 отсмотренных кандидатов. И это чудовищные затраты для технарей, участвующих в процессе.
Так всё ещё и хуже.
Если в компании уже есть открытая позиция (рост команды или кто-то ушёл), то в этот момент те кто собеседуют уже тянут за себя и за того парня! Им просто работать тяжело, и тратить много ресурсов на собеседование просто нет сил.

Ну а если берут «про запас» или как там гиганты делают, то тогда не очень понятно в какую команду попадёт соискатель и каким технарям его показывать. Тогда вообще не понятно какой опыт релевантен, какие задачи будут и т.д. Но ресурсы пособеседовать, наверное, есть!
Им просто работать тяжело, и тратить много ресурсов на собеседование просто нет сил.
Простите, а почему ресурсы тратят те, кто собеседуют? Ресурс должен тратить работодатель, если специалист условно «сегодня» занят собеседованиями, значит сегодня он не занят своей работой по проекту. В определенном смысле такой перерыв может иметь даже положительный эффект. А описанный случай – это явная неоплачиваемая переработка, где сотрудники решают проблемы работодателя за счет собственных времени и сил.
Ок, проект стоит, зарплату (даже с оплатой переработок) все получат, но вот бонусы за выполненный проект или рост акций компании не получат.
А иногда отложить проект просто нельзя (DGPR тебе с мая или штрафы от 10 млн евро)

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

А по поводу второго я совершенно согласен, нормальный работодатель должен быть заинтересован в максимальной эффективности процесса поиска новых сотрудников, вроде бы данный пост на эту тему и поднимает дискуссию.
Я же написал про DGPR (закон о персональных данных). Это изменения в законодательстве, причём в EU (в США нечто подобное тоже принимается).

Закон приняли, через 2 года вы должны ему соответствовать или штрафы на территории EU. А выполнять должны все, если работаете с даннымиграждан EU.
Билет на поезд Ульяновск-Самара с фамилией продали гражданину EU, всё приплыли. Причём у этого же гражданина может быть двойное гражданство, то есть вы даже не узнаете что он гражданин EU

Итого, на вас и свалилось +100% работы с жёстким дедлайном.
Вот что должно быть в консерватории, чтобы подобные шутки судьбы выдерживать?
А я вот люблю чужой код читать… В каком виде камень предпочитаете? :-)
В завёрнутом. В купюры. Камень поменьше, купюры побольше и поценнее :)
UFO just landed and posted this here
«83% статистики берётся с потолка во время разговора»
Откуда вы знаете про большинство?
Сортировки и те же деревья самоучки вполне могут пройти уже к концу школы. Во всяком случае школьные олимпиадные задачи они про это.

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

Из личного опыта, касающегося относительно крупных контор:

— Яндекс. Был как положительный, так отрицательный опыт общения с ними.

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

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

Выводы для себя сделал.

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

— Dell EMC

“Работать в нашем банке — большая честь!”. Мы — крупная международная компания со всеми вытекающими. Отовсюду.

Три собеседования. На ин. язе. Не прочитано не то, что резюме, но даже краткая выжимка из него. Никем. Ни один из интервьюеров не смог внятно описать задачи, характерные для предлагаемой позиции. На третьем собеседовании качество связи было таким, что я слышал каждый второй слог каждого третьего слова. Как по оптике, так и по мобильной связи. Предполагаю проблемы на той стороне. Был бы и рад развить в себе дедуктивные способности заранее — но не предполагал, что будет предложена игра “Телепат”. Тем, кто возмущается решением задач на листочке или доске (я с вами заодно, кстати) — это не финал интересных вариантов! Обойдите в полночь бинарное дерево голосом без рекурсии (предположим, что Вы правильно поняли вопрос, невзирая на помехи в канале). Смогли? Классно! А я нет. Почему? Да потому что бинарные деревья не так часто растут на дороге современного разработчика, а держать в голове подобную белиберду и думать над ней в середине ночи — спасибо, нет. Надо будет — нагуглю за 5 минут, али сам придумаю. Кстати, для предлагаемой позиции эти знания совершенно не требовались.

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

Выводы для себя сделал.

— JetBrains

Адекватный диалог. На удивление.

Странная статья. Хочется спросить: а если Яндекс, Гугл, и т.д. не умеют нанимать сотрудников и соответственно делать продукты, может вы покажете свои и мы сравним? А то обычно такие облечители сами никакую алгоритмическая задачу сложнее разворота списка решить не могут и соответственно у них и результаты такие же: плохо спроектированные, не расширяемые, глючные и медленные поделки с кучей костылей. Но зато много "опыта". Я вам по секрету скажу зачем тот же Яндекс на алгоритмы так внимание обращает: потому что им интересны люди с фундаментальными знаниями, потому что имея их можно сделать очень многое(знание некоторых принципов возмещает незнание некоторых фактов). А при подходе вашем вы просто смотрите насколько много фактов знает кандидат. При этом способность анализировать никак не проверяется. Проще говоря вас интересуют ремесленники, а Яндексу, Гуглу и прочим нужны учёные.

Яндексу, Гуглу и прочим нужны учёные.

Чтобы 99% времени поддерживать легаси код и править sql и json/xml конфиги.
UFO just landed and posted this here
Связь очевидно в том, чтобы уметь мыслить абстрактно. Просто выучив шаблоны, как попугай хорошим архтектором не станешь
Очевидность не очевидна.
Вот меня вообще смущают тестовые задания реальных продуктов, это называется — «как получить море бесплатных решений и идей». Есть компании, которые этим пользуются, вакансии не закрывают, якобы постоянно нужны сотрудники, что конечно п;;; ж. Насыщена такая фигня особенно в продуктовых компаниях, на тебя не смотрят, не смотрят твой порфель или скажут, портфель обязательный, а сами скидывают тестовое задание их рабочего продукта. Каким мать его образом можно идеально решить задание, если над продуктом месяцами работают с аналитикой (это касается дизайна) с созданием алгоритма (программинг) с версткой макета (ну тут понятно, верстка)
Мне кажется нужно создавать сообщество, которое будет бороться с такими компаниями, выставляя их задания на показ.
А тестовое задание у адекватного работодателя не нужно решать идеально.
Тестовое задание обычно даётся на уже реализованную, работающую часть продукта. «Мы понимаем, как делать такие вещи, а поймёте ли вы?». Портфель — что портфель? Как вы его делали, этот портфель, мы не знаем. И работать нам нужно не с вашим портфелем, а с нашими задачами. И откуда вообще взялась мысль, что тестовые задания — это попытки скроить на оплате труда? Всё равно решение будет неидеальным, неполным, его надо доводить до ума, стыковать с другими частями продукта — и всё это без оригинального разработчика! Пфф, да проще написать самим, чем доводить до ума то, что сделал какой-то соискатель на коленке за пару часов.
1. Посмотреть как соискатель решает задачи можно и не рабочем продукте
2. Для проверки работника придуман испытательный срок
3. Работодатель хочет что бы ты решил идеально, иначе какой смысл давать такое задание.
4. Работодателю важно как можно быстрее выпустить продукт, не потратив много ресурсов.
В чем суть я сейчас объясню, продуктовые компании b2c, или b2b-b2c, применяют модель скорого выпуска продукта, график хайпа можете погуглить (Garther Hype Cycle for Emerging Technologies) маркетологи и бизнесмены фактически следуют этому, кто успел первый выпустить продукт, тот и молодец. Так же есть график продолжительности жизни компаний (Everage Company Lifespan) можно увидеть, как сокращается их жизнь, когда они не могут ничего нового придумать. Поэтому все эти тестовые задания на реальном продукте это пыль в глаза соискателю, все хотят сэкономить на ресурсах. Возможно кто-то им понравится, но остальное это сбор идей.
Так что не надо меня убеждать, что решать рабочий продукт, как тестовое задание — это круто для соискателя, попытка решить свои проблемы за счет других, это обман. А для соискателя сплошная трата времени. По такой логике, решив их проблему, можно спокойно создавать продукт без них или продать кому-то.
1. Как соискатель решает НАШИ задачи. Те, которые он будет решать у нас.
2. Воу-воу, зачем тогда собеседования? Нанимаем всех подряд на испытательный срок, у нас же денег много, времени на возню с документами — ещё больше, уволить по статье за несоответствие — в десять раз проще, чем не взять вообще.
3. Дискутировать с религиозным фанатиком не вижу смысла.
В резюме можно написать всё что угодно, а рекомендации даст благожелательный коллега.
Тесты is only thing that matters

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

Потому что нужны не профессионалы, а команда.
Потому что люди хотят тимбилдинги и душевную болтовню, а не работать.
Вы работодатель? Работодатели все как один мечтают, чтобы на каждую их вакансию приходили только готовые профессионалы, способные в одно рыло работать за целую бригаду. И чтоб не пил, не курил, в отпуска бы не ходил, а только работал-работал-работал 24/7 с КПД 100%.
Добавь и что бы зп была как у джуна
Лучше чтобы сам доплачивал за право работать =)
Нет не мечтают они о профессионалах, они мечтают о рабах. Всегда у работодателя свое мнение как лучше/дешевле/быстрее/выгоднее в сфере в которой они не разбираются вообще.
Заметим что как раз критикуемые компании (за исключением Яндекса) как раз до сих пор под управлением людей, которые изначально из и сделали с нуля… то есть вроде как должны разбираться…
Очень сомневаюсь. Яндекс с завидной регулярностью втыкается в пни на каждом шагу. А уж отзывы работников яндекса заставляют волосы во всех местах вставать дыбом. Ну и кроме того иногда самый ценный опыт все таки не у выжившего.
Мой профиль разработчика виден в и интернете поэтому время от времени рекрутеры связываются со мной и тех специалисты проводят собеседования.
По скайпу прислал этот Java код и спросил что выведется на экран. И соответственно обосновать.
class A {
public static void print() {
System.out.println(«A»);
}
}

class B extends A {
public static void print() {
System.out.println(«B „);
}
}

public class C {
public static void main(String args[]) {
B b = new A();
b.print();
}
}

попробуйте в уме прикинуть и дать ответ. Потом кто хочет может в ide проверить.

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

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

B b = new A();
Да код и не скомпилируется, но тот кто проводил собеседование мне минут пять рассказывал какой будет правильный ответ и почему и как static влияет на ответ, потом еще пару вопросов задал о вещах (наверно с хакотрона какогото ) которые за 7 лет ни разу не применялись в моей практике.

попробуйте в уме прикинуть и дать ответ

я дико извиняюсь. Вот только для собственного развития интересуюсь: а нафига? У меня при просмотре этого мысли:
— лень
— воткнуть бы в иде да автоформатером
— а с другой стороны а пошли они со своими B extends A. Ни читать ни писать такое не желаю.

"… Благодарим за выполнение тестового задания.
К сожалению, вынуждены отклонить вашу кандидатуру, т.к. не выполнено указанное в задании требование использовать систему сборки cmake.
Желаем успехов в дальнейшей работе..."
Видимо cmake намного сложнее qmake что считается что на освоение потребуется неоправданно много времени, но я думаю исходники дальше hr не ходили — зря я написал в письме что не юзал cmake

B b = new A();
Да код и не скомпилируется, но тот кто проводил собеседование мне минут пять рассказывал какой будет правильный ответ и почему и как static влияет на ответ, потом еще пару вопросов задал о вещах (наверно с хакотрона какогото ) которые за 7 лет ни разу не применялись в моей практике.
Также приходилось участвовать по разные стороны баррикад: вначале как соискатель, потом как наниматель.
Наблюдения в качестве соискателя: самое главное пройти барьер HR. Как правило у них смутное представление о том что в действительности нужно компании. Лучше всего проходить собеседование с ЛПР. Как правило эти люди интуитивно чувствуют подойдет человек или нет.
Помню забавный случай, когда в конце 90-х проходил собеседование на программиста. Было много тестов, ряд из которых требовал просто запоминания, это раздражало. В результате после заключительной фазы с гендиром, когда он произнес: «программист из вас так себе...», я дал ему развернутую оценку его системы найма и ее кривизну.
В результате он предложил возглавить отдел программистов )
Я провожу такие собеседования. В Яндекс. И не единожды мне приходилось видеть людей, у которых в резюме senior или даже уже руководитель группы и которые при этому не могут программировать. Например недавно такой кандидат не смогу перебрать все подстроки в строке (два вложенных цикла, квадратичный алгоритм). Поэтому все навыки надо проверять.

Автор статьи упускает один важный момент. У меня в арсенале есть задачи, которые я могу дать и junior'у и senior'у. Но вот оценивать я их буду по-разному и смотреть на разные вещи. Там не будет сложного алгоритма. Но её можно разбить на подзадачи, использовать нужные структуры данных или алгоритмы из стандартной библиотеки. Заметил ли кандидат граничные случаи? С senior'ом можно поговорить, как это протестировать. Можно обсудить особые варианты постановки задачи: ввести многопоточность, а что есть памяти мало а данных много, а если памяти наоборот много? И вообще, моя задача — найти сильные стороны кандидата. Я возьму простую задачу и буду от нее раскручивать беседу в разные стороны, нащупывая границы знаний.

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

Хочу сказать, что ничего, кроме стандартной 'findSubstringInString', в голову не приходит и не должно.


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


Итак, собеседование в яндексе это:


  • Когда вас игнорирует HR по несколько дней.
  • Когда на собеседование с вами никто не приходит. А в качестве извинений дают промо код на лапшу.
  • Когда CTO проекта говорит, что тех. собеседования у вас бесполезные и он не видит в них смысла, но ничего не может с этим поделать.
  • Когда на добровольное предложение сделать реальное живое тестовое задание объемом в пару рабочих дней(!!!) HR кидает ссылку на сборник математических задач с просьбой подготовиться.

Пусть вывод за меня сделает утка:
image
P.S. До тех. собеседования дело не дошло после этого.

Хочу сказать, что ничего, кроме стандартной 'findSubstringInString', в голову не приходит и не должно.

Ну задача все-таки была не найти фиксированную подстроку в строке, а найти подстроку, удовлетворяющую определенным свойствам. Готовой реализации в STL нет. Человек не смог решить задачу даже неоптимальным способом: перебрать все возможные подстроки и каждую проверить. В том числе не смог решить явно поставленную мной подзадачу: перебрать все подстроки в строке.
Если задача решается функцией из стандартной библиотеки языка и кандидат это знает — это большой плюс. У того же facebook'а есть целый кластер задач, которые легко решаются с использованием std::nth_element. Правда все равно попросят реализовать сам алгоритм.

По остальным пунктам: я ни в коем случае не говорю, что процесс хорошо налажен. Проблемы есть, их решают. Я не могу сказать ничего конкретного про Ваш случай, это вне моей компетенции. Но пункты 1 и 2 это про качество самого процесса, а не про подход в целом. Это не доводы за/против того, как устроено собеседование. Но да, это не нормально, это считается проблемой и это лечат. Третий пункт комментировать не могу, это пересказ личного мнения другого человека, которого я не знаю. А про четвертый… есть много причин, почему тестовое задание не может быть единственным критерием. Результаты интервью должны быть сравнимыми (заставить всех тратить пару рабочих дней на задание нельзя, это неуважение), оценивать должны несколько независимых человек (для получения объективной оценки), как проверить, кто именно выполнил задание?

P.S. Я даже не утверждаю, что типовые задачи с собеседований это идеальный вариант. Некоторые компании пытаются искать другие формы. В uber'е, например, практиковали тестовое задание на ноутбуке в onsite интервью. Но весь этот процесс значительно более сложный, чем Вам кажется.

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

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

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

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

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

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

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

Проблема в том, что в нашей стране отсутствует понятие нормального HR. Давайте взглянем правде в глаза. Кто идет в HR? Девочки проучившиеся на социологов/экономистов/юристов/историков/маркетологов, но в реале ничего из себя не представляющих. Ведь даже в IT индустрии они отнимают минимум 1/3 рекрутингового процесса. А потом же, именно они растут по должности в HR отделах и, соответственно, так или иначе формируют эту порочную практику. HR и рекрутингом должны заниматься те, кто это действительно любит, а не вчерашние "мамины отличницы" неожиданно обнаружевшие, что их красные дипломы по политологии никому и даром не нужны.

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

А вариант анкеты от работодателя вида:




Вопрос N: <тема вопроса>


  1. Знаю хорошо, очень много раз использовал на практике во множестве различных кейсов;
  2. Знаю хорошо в теории, но на практике мало использовал;
  3. Остаточные, но глубокие знания: быстро восстанавливаются чтением манов/легким гуглением;
  4. Остаточные, поверхностные знания: уточняется углубленным чтением манов/гуглом, требуется время на «кэширование» этих знаний.
  5. Не знаю, никогда не работал с этой технологией

***

Пункты В и Г — это соответственно А и Б, но спустя некоторое время(год? два?)




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


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

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

Недавно как раз читал про отчёт и впечатления парня, который год готовился к собеседованиям в Google, Facebook, etc. Он пишет так, словно всё так и должно быть, словно все так должны делать и это норма. Полтора года решать какие-то оторванные от жизни олимпиадные задачи на LeetCode или InterviewBit вот это всё… Ему кажется, что это правильно. Но ведь это же какой-то идиотизм, если подумать. Полтора года своей жизни потратить непонятно на что ради того, чтобы потом "делать сайты" в google? :) То, чем он занимался, это даже не Computer Science, это фигня какая-то, "синтетические знания" исключительно ради прохождения собеседования в IT гигант.


В общем, кому интересно, почитайте :)
http://telegra.ph/google-03-22-2

То, чем он занимался, это даже не Computer Science

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

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

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

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


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

Ха-ха, так ведь о том и речь! Решать олимпиадные задачки — это совсем не то, чем приходится заниматься на работе 99% времени, так почему тогда им отдано столько времени на собеседованиях?

Ха-ха, так ведь о том и речь! Решать олимпиадные задачки — это совсем не то, чем приходится заниматься на работе 99% времени, так почему тогда им отдано столько времени на собеседованиях?

Все зависит от компании. Где-то алгоритмы нужны больше, где-то меньше. И цена ошибки разная.
Я уже приводил где-то выше пример. Продублирую тут.
«И пример из личной практики. Человек, явно не понимающий ничего в сортировках, умудрился делать вставку в сортированную коллекцию за O((N^2)*lgN), вместо O(lgN). Что при размере коллекции 1000 элементов дает примерно 7 000 000 (7 миллионов, Карл) операций, вместо 7.»
В моем случае это приводило всего лишь к умершему Андроид приложению. Поиск и фикс кстати заняли почти день, так как спагетти код был еще тот. А теперь представьте такой баг на серверах гугла. Будет гораздо больнее.

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

Всю свою разработческую жизнь работаю в компаниях, которые не сайты делают, всякая разная обработка изображений, машинное зрение, томография, системы управления и т. д. Недавно deep learning вот начали осваивать в дань моде. За всю свою карьеру мне не пришлось писать самому ни сортировку, ни другие алгоритмы "из Кнута", ни какие-то специфические, типа триангуляции или Вороного, или алгоритмы на графах, или какие-то глобальные оптимизаторы и т. п. потому что всё это уже есть достаточно хорошего качества в Open Source библиотеках. Естественно, всё это используется в ПО, которое мы пишем, поэтому основная задача не уметь решать заковыристые задачки из computer science, а понимать основы, уметь видеть подходящее и применять это для решения прикладных задач. Это гораздо важнее, на мой взгляд. Умение видеть и проектировать архитектуру на расширение и видеть лучшие эффективные и простые подходы к реализации чего-либо и конечно умение писать понятный сопровождаемый чистый код также очень ценно. Всё сказанное, конечно, не отменяет того, что разработчик хотя бы должен уметь оценивать сложность алгоритмов, это действительно может пригодиться даже при использовании готовых библиотек.

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

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

А как вы собираетесь это делать если вы понятия не имеете о том, из каких базовых кирпичиков строится ваш дом и сколько они стоят?
UFO just landed and posted this here
Ситуация конечно зависит от компании, специфики конкретного бизнеса и продукта. Но самое главное — тех кто проводит собеседование.
Я работаю в Tesla и меня иногда приглашают провести интервью. Всегда трачу не менее часа для детального изучения что делал человек до этого. Читаю его диссертацию (если есть), статьи, блог, смотрю проекты на GitHub. Т.е. к моменту интервью у меня может и не быть к кандидату вопросов — и так все понятно.
Мне кажется логику лучше проверять чем-то вроде задачи Эйнштейна (с карандашом и бумагой естественно). Заодно и проверка на умение излагать свои мысли.
Вы этим проверяете не логику, а умение решения конкретных задач. Все-равно, что дать тест на ICQ пройти
А задачи вроде этой с монетками в N% случаев проверяют Luck кандидата.

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

Подобные задачи имеются в виду, а не одна и та же, в которой 5 домов и т.п.
Согласен со статьёй, но поясните один момент:
А теперь откройте и посмотрите продукты таких компаний. Посмотрите приложение маркета, фейсбука, мейлру почты, контакта, ютуба, альфа банка и так далее, и далее, и далее. Как впечатление? Эффективен подобранный ими персонал? Эти компании все славятся своими техническими собеседованиями.

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

Разберу только парочку.


Яндекс-маркет
Часто зависают экраны, при этом имея блокирующие загрузчики. То есть, нельзя уйти, нет pull-to-refresh, экраны грузятся целиком или вообще никак. И сидишь такой и надеешься, что в этот раз ты увидишь страничку.
Много багов: выбираешь несколько фильтров, а у тебя экран вправо уезжает в бесконечность. Как так. И это еще не говорю про всякую неотзывчивость интерфейса, забытые human interface guidelines, когда все приложение — одна большая самодеятельность.


Фейсбук
300 мб приложение. Просто — выход там. Про лаги и говорить нечего. Ощущение, что у тебя не iPhone 7, а 4s. Кто смотрел разбор классов фейсбука, знает какая там помойка. Куча мертвого функционала, который даже вырезать поленились.


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

Да, Youtube еще обожает забывать, что есть экраны меньше, чем XXL. Попробуйте открыть его на iPhone 5/5S/SE. Половина кнопок выпадает за пределы экрана.


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

Добавлю:
1) Youtube. Зачастую лейбл в коментах не помещается на экране (iPhone SE). Видимо используют frame вместо autolayout, при это делая что-то не правильно(может тупо выключили autoresizing mask).
2) Vk. При открытии комментария к видео, фото, посту, автоматически открывается клавиатура. Но при скролле вниз, она не закрывается. Нужно было тупо проставить UIScrollViewKeyboardDismissMode в interactive. Ну на крайняк onDrag.
Зато те, кто это писал, смогут в сортировку не O(n^2), или обойти дерево вширь.
Все это
а) не является оценкой работы кодеров, а скорее UX дизайнеров.
б) не является оценкой продуктов в целом, так как главный критерий оценки продукта — сколько денег он приносит. Прибыль — единственная цель создания продукта. У перечисленных с этим все хорошо. Значит, эти компании все делают правильно и продукты их хороши.
Я с вами не соглашусь. Это прямая обязанность разработчиков и тестировщиков проверить то, как будет вести себя приложение в крайних ситуациях(на маленьких устройствах). Также разработчик обязан знать, как ведёт себя библиотека графических компонентов, которыми он пользуется каждый день. Про деньги можно долго рассуждать — но деньги это не задача программиста. Задача программиста качественный продукт. В последнее время почему-то любят путать и подменять понятия. Не надо так делать.
Задача программиста качественный продукт.

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

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

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

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

Технари находятся в процессе разработки сверхсложного продукта. Такие ситуации — крайне грустные, но, увы, неизбежные.
UFO just landed and posted this here
Конкретно по Яндексу: годами висят очень заметные баги. Есть такие баги, которые, очевидно, были задеплоены не от большого ума: либо всем пофиг, либо не понимают, что делают. И это при таких огромных ресурсах компании.
В Сбертехе есть то же самое.
Так что гигантизм и монопольное положение совершенно не гарантируют достойного продукта. Просто в какой-то момент взлетели в лидеры, либо уже достался действующий ресурс (как у Сбера)
Вот смотрите. У меня опыт в разработке программ 7 лет, если не больше.

А высокомерия на все 30.

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

Ну да, разве достойны эти глупцы задавать вопросы великому гению?

Они не читали моё резюме, не читали мой опыт — им это всё похрен.

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

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

А я часто не знаю, как и называются эти детальки то

Серьезно? Вы профессионально ездите в горы на велосипеде в течении 10 лет и не знаете из чего он состоит, как его смазывать и ремонтировать? Что вы за ездок такой? А если он развалится в горах от удара — маме звонить будете?

А то, что у меня в дневнике написано, что я 30 дней путешествовал по горам, им похрен, им нужны формулы, Карл!

А еще в дневнике написано, что вы с Меган Фокс в одной палатке жили. А на самом деле у вас просто ее постер висел.

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

Хуяк-хуяк и в продакшн!

Я ей тогда сказал, что я пишу без ошибок

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

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

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

Оказывается, имели в виду MVC. Попросили расшифровать. Представьте? Я, уже 7 лет применяющий эту уету на практике, сижу на собеседовании и наконец-то мне подсказали, как же оно называется!

Серьезно, за семь лет ни разу не поинтересовались, как расшифровывается MVC? Вот серьезно, MVC! Я бы понял, если бы не знали, что означает буква L из аббривиатуры SOLID — там много сокращений, расшифровывают ее редко, они сложные, но MVC? Вы вообще интересуетесь программированием, или со стековерфлоу примеры копипастите? Да еще и 7 лет не применяете на практике (из семи). То есть разделение отображения и данных — это для всяких теоретиков, вы тут код фигачите.

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

Про название деталек — как вы с напарником разговаривать будете? Уверены, что он вас правильно поймёт, когда вы скажете "там железку, отвечающую за тормоз поменяй"? Кстати, "тормоз" — это тоже название "детальки". Будет "там железку, отвечающую за процесс остановки по желанию велосипедиста поменяй"?

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

Не согласен со статьей.


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


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


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


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

Вот я помню школьный паскаль. И зачем это мне?)

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


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

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

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


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


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

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

У меня там резюме и перевод и я добавил между ними FAQ по общению со мной ( мне подумалось что это намекает на повышенное ЧСВ ) в котором написал что в первом сообщение пришлите мне строчку типа: 202cb962ac59075b964b07152d234b70 и о чудо присылают от силы 20%, у остальных нет сил читать, они спамеры, они боты?

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

На пары по алгоритмике?

По ходу, пора вторую статью писать, а то эта уже лагает.

Такими темпами можно ограничить знания, например, бэкендеров до границ IDE. Зачем знать как работают сокеты, протоколы, веб-сервер в связке с твоим кодом? Сейчас от всего этого можно абстрагироваться: открыл гугл, настроил nginx (или вообще докер-образ скачал и запустил) и все вроде бы работает. Но нормальные работодатели предпочитают нанимать сотрудников, которые имеют понятие, как это все устроено внутри. И это нормально, потому что при таком подходе есть надежда, что человек сможет разобраться и сделать то, что выходит за его обыденные компетенции.

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

UPD: недавно видел код парсера одного знаменитого сайта, который буквально ддосил запросами, пришлось переписывать. А все почему? Потому что написано в парадигме «как-то работает и окей»
Гы, я ещё в 2007 году проводил такой эксперимент с переходами. Я был ещё аспирантом, но имел ряд живых расработок, включая автопилот БПЛА. Они были на моём сайте. Я давал ссылки на эти проекты в резюме. Ни одного перехода не было.
Печально, что ничего не поменялось…
Манифест — дело яркое. Еще где заявляли о себе?

Articles