Comments 691
Могу предположить, что из-за бездумного подражания топовым компаниям западным.
Изначально они имели нестандартную сферу деятельности, которая значительно выбивалась из всего рынка. Это как пытаться найти разработчика в мире бухгалтеров. Приходится каждого оценивать как новичка.
А дальше — зачем придумывать новое, если мы можем позволить себе старое? Причем, доходит до абсурда — есть ТРЕНИНГИ по прохождению собеседования в google. лолчто. Это же явный симптом.
Но, предполагаю, это касается не всех позиций, а только тех, которые поставлены на поток. Там уже работает система, которую не остановить.
Вряд ли идеологическому лидеру по разработке ИИ, например, кто-либо задаст вопрос про big-O. За него говорит его опыт и разработанные проекты. И так должно быть везде.
И так должно быть везде.
Кому должно? Никто не мешает идти работать в компании попроще. Без бонусов и акций.
За него говорит его опыт и разработанные проекты.
Я опытный, но рассказать и показать ничего не могу. Вот такой я. Так???
Вряд ли идеологическому лидеру по разработке ИИ, например, кто-либо задаст вопрос про big-O.
Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.
Никто не мешает идти работать в компании попроще. Без бонусов и акций.
Если я правильно понял посыл "не можете пройти сложное собеседование, то идите куда проще", то в этом и заключается проблема и стереотип.
Такой формат собеседования не 'сложный и потому крутой', а просто глупый. С таким же успехом вас могли попросить пробежать марафон. И все бы сидели и готовились к марафону в гугл. Бред же.
Больше всего мне понравилось интервью в финансовый стартап elinvar — после технического интервью по скайпу, мы договорились о следующем интервью. В это время мне выслали задание, заготовку проекта без требуемого функционала — нужно было за 2 часа написать код и тесты, что я быстро сделал подключив к проекту apache camel. После проверки прислали мне job offer с отличной для Берлина суммой на руки. Не сложилось по личным причинам, отказался. Но подход к интервью отличный — знания, опыт и резюме интервьюверы проверили. Похожая coding session была и в cTrader на Кипр — но там нужно было еще поделиться своим экраном по скайпу и тоже оффер по завершению!
Общение же с HR, которые ко мне приходили в прошлом году всегда сводилось к шаблонным вопросам, а на тех. интервью рекурсивные задачки, обход деревьев, сложность алгоритмов и прочие вещи которые я хорошо делал на первом курсе. Что вряд ли возможно расценивать как адекватное интервью для senior dev позиций. Рекрутеры zalando и ali после такого идут лесом со своими предложениями.
Я опытный, но рассказать и показать ничего не могу. Вот такой я. Так???
Рассказывать можно и нужно, не знаю почему вы так решили.
Т.е. меня реально должны оценивать тестиками для зелёных джунов.
Один из самых одаренных и коммуникативных бывших коллег — семейный человек, адепт scala и активный собиратель увлекающихся технологиями вокруг себя в рабочее время.
Полчаса раз в пару дней определенно недостаточно. Чтобы иметь что-то нестыдное для показать, надо тратить хотя бы часа 2-3 ежедневно. Ну или больше, если вы хотите иметь это нестыдное через 5 лет, а не через 10. У подавляющего большинства людей такой запас времени просто отсутствует.
Другая сторона. Есть у меня довольно удобная хитрая табличка, облегчающая мне жизнь. Я бы ее выложил, но редко используемые функции там в виде лютейшего говнокода. Это все надо вылизать, причесать и тогда мб выложит. Мне в конце концов стыдно черт возьми такое выкладывать.
Я вам даже немного завидую. Гораздо лучше иметь пару проектов приносящих деньги, чем много статей)
С open source у нас еще более странная культура — все пользуются, спасибо не услышишь, но почти никто не предлагает pull request или патчи для bug fix. Да и еще спрашивают ETA!
Нужно ли выкладывать код, если он приносит вам деньги и вряд ли кто-либо поможет с улучшением его качества. Я бы не стал. CRM адаптеры — это не библиотеки для Android. Может быть есть еще что-то что нужно большому количеству людей и от вас не убудет поделиться…
на собственном велосипедном фреймворке.
Вот тут у меня проблемка. Много лет назад я написал себе простенький роутер, автолоадер, кучу компонентов. Т е с моей точки зрения те монстры что сейчас называются «минифреймворки» и есть велосипеды, и я с трудом понимаю зачем они.
Никакого DI, code review, TDD, BDD и прочего
Я конечно верю что бывает иначе в кровавом ынтырпрайзе, но не видел 8(
В этом случае чтобы развиваться и изучать новое можно выкладывать свои проекты для решения старых проблем на новом стеке технологий.
Любопытно. Надо подумать.
С open source у нас еще более странная культура — все пользуются, спасибо не услышишь, но почти никто не предлагает pull request или патчи для bug fix.
Я одно время репортил на разные сайты и сервисы десятки багов. Каждый второй мне с пеной у рта доказывал что они волшебные и какают радугой а это не баг а фича. Я добавил к багрепортам длинный дисклеймер о том кто я и почему это делаю. Стало лучше, но не намного. В итоге у меня сейчас стойкая лень к багрепортам и фиксам. Ибо я трачу время, а потом мне же и имеют мозг? Нет спасибо.
Может быть есть еще что-то что нужно большому количеству людей и от вас не убудет поделиться…
Есть, но руки никак не доходят довести до ума и причесать 8(
Есть у меня табличка которая умеет работать наподобие гуглодоксов, сортирофка, флоатин хедер и прочие плюшки на чистом js. Но этож надо сесть, выделить зависимости, красиво все сделать. А как раз вот с этим пунктом у мну проблемы всегда.
Небольшие проекты бывает грешат бюрократией: Как изменение двух строк кода может занять несколько дней
Популярные проекты крупнейшей китайской корпорации не спасают человеко-века — качество кода хромает. Да и функционал тоже не прорывной по сравнению с другими open source проектами.
Обычная демагогия.
Похоже на ваш излюбленный прием, когда нечего конструктивно сказать по теме обсуждения.
Я говорю про то, что за 30 минут, сесть и начать что то разрабатывать не получится, так как… выше уже написал.
Вполне получается при желании, уже ответил на это первым же комментарием, но вы даже не пытаетесь вникать.
В итоге что мы имеем в этой ветви обсуждения: 0xd34df00d и igor_suhorukov участвуют в open source проектах и делятся своим опытом (github1, github2) отвечают на вопросы, а evgenWebm не имея опыта активно спорит и даже не пытаетесь вникнуть в суть спора клеймя демагогией.
А вы не рассматривали вычисление производных через дуальные числа?
> часов за 50, из которых чистого кодинга часов 20, остальное время — думать, причём весьма оффлайново.
Так а почему вы «думать» не включаете в те «по полчаса в день»? Конечно же они должны включаться!
Для хорошего любительского уровня. В плане читать и понимать статьи с архива в интересующей области, например. С-но среднестатистический выпускник матфака на протяжении обучения зачастую может «ботать матан» и меньше получаса в день, если уж ровно распределить все…
> Хотя, некоторый опыт тыканья в гитару говорит, что за полчаса в день там мало что освоишь на должном уровне.
Ну почему, лет за 20-30 освоите вполне. Здесь как раз вообще рост времени занятий сродни закидыванию раб. силой у Брукса :)
Важна регулярность и концентрация, а пара занятий по часу часто лучше чем 1 но на 4 часа. Потому что задача (как к слову и в ботании матана) не сделать что-то, а прокачать скил. Короче это вещи несравнимые в силу того, что у процессов существенно разная цель.
А можно пример линейной ф-и из R в R, которая при этом не y = ax для какого-то a?
> Особенно, опять же, если вы хотите не только играть уже имеющиеся партии по табам, но и как-то худо-бедно генерировать что-то своё.
Умение играть что-то свое, к слову, скилл отдельный, и вы же можете свое придумывать, что не требует особой техники. Многие серьезной техникой не владеют но свое придумывают, в рамках того, что могут исполнять.
(f(x) = x, x in Q) не действует в Q? «Действует» в данном контексте — это что?
ЗЫ: а, в смысле (x in R => f(x) in Q), понятно
1. согласно тому определению, которое вы использовали для линейной функции — функция f(x) = ax + b не будет линейной!
2. функция, которая линейна в «R как векторном пространстве Q», совершенно необязательно будет линейна в R как поле.
Таким образом, линейность в R как поле — это более сильное требование чем линейность в R как векторном пространстве над Q.
В частности, построенная вами функция не линейна в поле R.
а доказать сможете?
Теперь берем и считаем: 0 = f(y) = f(y/x * x) = (y/x) * f(x) = y/x. Получили противоречие, следовательно функция не линейна в поле R.
Так я и говорю — поскольку «построить» объект невозможно, то единственный способ, которым вы о нем можете что-то доказать, это убедиться, что он не может данным свойством не обладать, то есть от противного.
> Этого вполне может оказаться достаточно.
Не может, т.к. вам нужно использовать факт того, что фильтр максимален, а а без аксиомы выбора существование такого фильтра доказать нельзя. То есть и самого противоречия без аксиомы выбора не существует.
Ну так я и говорю, приняли аксиому выбора — забудьте про изящество и доказывайте руками от противного :)
Ну и вторая: любое из «добавленных» множеств содержит пересечение А и некоторого множества из фильтра (по построению). Если мы пересечем это множество с некоторым множеством из фильтра, то получим надмножество множества, полученного пересечением А и пересечения с двумя множествами фильтра, каковое пересечение само является множеством данного фильтра, а значит, данная операция нас не выводит за пределы описанной совокупности.
Выносить из-под f можно только элементы Q, а y/x — не обязательно из Q. И вы не сможете доказать возможность выносить элементы R без непрерывности f, т.к. для этого надо сделать предельный переход внутри. Так что не работает ваше доказательство, есть другой вариант?
А вот от совместного просмотра зомби ящика — запросто…
можно ещё привлекать детей к совместному написанию opensource-а :)
Дополнять OSS проекты — это действительно сложно, так как ваш вклад будут оценивать по всей строгости, без скидок. Кроме того, нужно ещё и обоснование написать для ваших исправлений. Всё очень серьёзно.
Не всякий человек может и код написать так, чтобы ведущие разработчики популярного проекта его как за свой приняли, и чтобы аргументировать чётко что почему зачем. Это требует мозгов, времени и так далее.
Это ещё на GitHub просто — PR послал и всё. В других проектах нужно патчи по почте посылать, или ещё что интересное делать. Нет, не помогает это обычному человеку.
Если бы это было просто, то принятые PR были у каждого первого, правда же?
Так что я считаю, что со всем справляюсь.
И да, я потихоньку пилю всякие разные эксперименты и OpenSource проекты.
Если вам не хочется делать opensource проекты — это можно понять. Но говорить, что на это нет времени у нормального человека — это ерунда.
11 лет назад вы контрибутили в опенсорс?
Если да, то — вот 11 лет назад контрибутил, а сейчас уже нету сил и времени.
Если нет, то зачем вы вообще ребенка вспоминаете. Дело значит не в ребенке, а в том, что вы не имеете желания туда контрибутить.
Еще раз акцентирую, что я не считаю, что все должны контрибутить в опенсорс, я не понимаю, зачем прикрываться детьми, а не говорить, что просто не интересуешься этим.
Можно интересоваться, но интерес иметь не с высшим приоритетом для свободного времени (после физиологии, семьи, работы), например третий. Если как-то сложилось, что есть свободное время после удовлетворения первых двух, то можно что-то поделать. Но это может быть раз в месяц, а то и реже. Причём зачастую оказывается гораздо больше времени уходит не на фикс какого-то бага, а на пропихивание его в апстрим. А если фикс отклонили, то большой вопрос стоит ли свой форк оставлять в паблике в целях произведения хорошего впечатления на потенциального работодателя.
Если младенцу с рождения хватает внимания, то после трех лет он уже вовсю общается со сверстниками в садике, а к 10-12 уже плевать хотел на родительское общение. А деприванты наоборот продолжают висеть грузом на родительской или опекунской шее и требовать подкормки и полива. Так что не теряйте момент, общайтесь с «овощем», чтобы он реально в овощ не превратился.
Ну и у моего ребенка давно не овощной возраст, результатом воспитания и успехами вполне доволен.
Так что не теряйте момент, общайтесь с «овощем», чтобы он реально в овощ не превратился.
Отцы обычно лишены материнского инстинкта и редко испытывают желание общаться с "овощем", не говоря уж о получении удовольствия.
то после трех лет он уже вовсю общается со сверстниками в садике
Детские сады и школы — это только по будням в рабочее время. В остальное время общаться с ребёнком все равно придётся.
Отцы обычно лишены материнского инстинкта и редко испытывают желание общаться с «овощем», не говоря уж о получении удовольствия.
Ну, это ровнехонько как с женским оргазмом =) Тоже до недавнего времени считалось, что приличным леди не свойственно получать удовольствие от секса. А потом ничотак, разогрелись, втянулись.
Потому что когда условно приходишь уставший с работы, а тебя встречает кричащий комок плоти, а ты хочешь жрать, а жена говорит — свари себе лапшы.
Я с ребенком рядом, и он классный, и хочется с ним общаться. Потому что вижу его всё время, а не только когда я уставший а он орёт.
И вот это уже реально требует времени
Окей.
До 3-хлетнего возраста вы контрибутили в опенсорс?
А до рождения ребенка?
Да это все хрень про свободное время на самом деле. Я контрибьютить стал только после рождения. Сильно позже!
Оно конечно смешно, но обстоит именно так, без шуток.
Я делаювсё чтобы быть хорошим мужем, отцом и работником. И у меня остается время на OpenSource и на кучу других дел. OpenSource естественно не является приоритетом.
Вы делаете вывод о том, что я жертвую ребенком/женой, я утверждаю что ваш вывод — бред.
Ваш опыт ничего не стоит в контексте данного обсуждения, поэтому я прошу не использовать его как «довод».
А если их заводить, то кто по ночам ребёнка будет вставать и успокаивать — Пушкин или Дед Мороз? Я не знаю.
Короче, если вы каким-то образом всё успеваете, то напишите статью на Хабр. Это действительно суперполезная и интересная информация.
А женщины — существа хитрые. Женщины полуторогодовалыми детьми на руках, как правило, не пилят сук на котором сидят и не ссорятся основным кормильцем в семье. Вы бы тоже не стали на её месте. Т.е. показания получаются постольку-поскольку показательные, приходится разве что честному слову верить.
А по сути: Я 24 часа дома с женой. Отлучаюсь только чтобы съездить в магазин за очередрной телегой продуктов и шмотья. Его кровать в двух метрах от моего рабочего места. Так что мне не надо рассказов жены, чтобы знать что происходит с ней и моим ребенком.
Чем принципиально отличаются няня и детский сад? Но даже без этого на 3 года (считаем, что раньше никак) при двух родителях-айтишниках вполне можно не делать перерыв в карьере обоим для ухода за ребенком, только матери на беременность, роды и восстановление работоспособности. Варианты:
- удалённая или полуудалённая (раз-два в неделю в офисе) работа
- реально гибкий график
- работа на полставки
- их различные сочетания
Естественно, это предполагает, что оба родителя идут на такую смену режима работы и равной или почти равной степени, чтобы обеспечить уход, как говорится, 24/7. Оба работают, оба за ребёнком ухаживают с непересекающимся графиком работы, "пост сдал-пост принял".
Даже если рассматривать финансово самый невыгодный вариант "оба на полставки", то в вашей ситуации доходы просядут меньше, чем если вы три года работать не будете, а ваш мужчина альфонсом себя чувствовать не будет, если сейчас не чувствует — соотношение доходов не изменится.
Естественно, это предполагает, что оба родителя идут на такую смену режима работы и равной или почти равной степени, чтобы обеспечить уход, как говорится, 24/7. Оба работают, оба за ребёнком ухаживают с непересекающимся графиком работы, "пост сдал-пост принял".
Я отметил сразу, что я не про вариант "ты дорогой(ая) договорись на поставки удаленно, чтобы и деньги были, и за ребенком следить, а я буду работать как работал и по вечерам тебе помогать когда отдохну от работы".
Даже если рассматривать финансово самый невыгодный вариант "оба на полставки"
Почему? Вот не знаю, как так получается, но в Москве при работе на полставки зарплата довольно быстро вырастает до полноставочной. Видимо, дело в эффективности работы — КПД программиста снижается при увеличении продолжительности рабочего дня.
С ребенком надо сидеть лет до 3 пока он в сад не пойдет.Это кто вам такое сказал? А почему не 18ти?
А если у обоих родители далеко? Да и спихивать детей на чужих людей — так себе затея.А это — уже вопрос чего вы хотите. Если хотите сидеть с ребёнком до его совершеннолетия — да ради бога, найдите богатого мужа и сидите. Но тогда уж не нойте, что карьера не идёт.
А если хотите остаться на хорошем счету в фирме — найдите того, кто с ним будет сидеть. Можно домой работу брать, если фирма согласна.
Как я уже сказал: выход на работу через полгода, от силы год после рождения ребёнка — это то, что я практически наблюдал, это не какие-то теоретические изыскания. А уж кто там после этого сидит с ребёнком — тут вариантов много…
Найдете решение как и кто может сидеть с ребенком.
Cнять для родителей квартиру поближе? Поискать няню?
Договориться о работе удаленно в течение первого года?
P.S. Сотрудница — девушка-тимлид в декрете была около 6 месяцев.
С ребенком надо сидеть лет до 3 пока он в сад не пойдет.
А почему именно до трёх лет? Почему не до двух или четырёх?
И причём здесь вообще детский сад? В России нормальных детских садов нет — в государственных условия такие, что ребёнок будет больше сидеть дома, чем ходить в сад, а рынок частных садов развит очень плохо и сводится больше к садам на базе детских игровых центров.
Да и спихивать детей на чужих людей — так себе затея.
Почему? С точки зрения развития ребёнка, больше важен процент отказов во внимании, а не сам факт присутствия родителей рядом. А программист, который разрывается между работой и ребёнком, будет постоянно отказывать ребёнку во внимании.
P.S. У меня жена-программист с первым ребёнком тоже так считала (до 3 лет с ребёнком вместе), как оказалось — зря. Со вторым, скорее всего, будет уже сидеть няня, начиная с года.
А спихнуть их на «левых» людей рано или поздно все равно придется. Они же, ведь какой ужас, пойдут потом в школу (на том же Кипре с 6 лет, а в Нидерландах с 4 лет). Особого отличия школы от садика я не наблюдаю (мои дети успели походить и туда, и туда).
В Африке может и хуже, я там не был. А вот кипрские дети вполне довольны жизнью. Как-то я не замечаю, чтобы они страдали от такого положения дел по сравнению с российскими детьми.
с таким подходом вам не детей заводить надо, а тренироваться на рабках.
Яжемать, как это будущего заюшечку чужим людям доверю?
Самое сложное — первый год, когда ты не высыпаешься, когда ребенок не может подождать тебя 5-10-20 минут, если начинает кричать. Через полгода уже проще, через год еще проще. А когда с ним можно уже поговорить, то выделить себе 1 час непрерывного времени на опенсорс или другое хобби гораздо проще, чем в первые 1-2 года.
Плюс очень многое зависит от характера ребенка — кто-то в 7 лет вполне самостоятельный, кого-то и в 14 надо собирать в школу и на кружки.
Потом ребенка надо водить (чаще — возить) на кружки, забирать из школы и все такое.
Это ваши проблемы. Я не вижу особой необходимости в кружках для развития ребёнка, особенно если они требуют кучу времени.
Если мне вдруг нужно будет ребёнка возить в школу или сад, то я просто куплю/сниму квартиру возле школы — мне моё время дорого.
1) кружков просто нет. Так случается, если родители живут в некоей попе мира, деревне или депрессушном городке, где все буквально или умерло или разорилось. Shit happens
2) нет денег на кружки. Это случается гораздо чаще, и это печально.
3) родители забили на свое чадо. Что надо — выучит самостоятельно по самоучителю найденному в интернете (ага).
Школа без кружков дает лишь базовые знания и почти полное отсутствие навыков, поэтому, чтобы к 9 классу у ребенка не стоял мучительный выбор, чем хочется заниматься и к чему, у ребенка, собственно есть хоть какие-то склонности, к этому времени желательно каким-либо образом определиться с тем, что ребенку нравится и что у ребенка получается.
Учитывая, что школа себе такой задачи не ставит (ставится задача выдать необходимое количество часов по предметам и выставить оценки от троек до пятерок), то либо надо быть родителем-на-все-руки-мастером, либо должен быть гувернер (или гувернантка). Да и вообще нынче школа как ВУЗ, ибо на детей преподавателям пофиг. В логистическом смысле сильно повезет, если кружки будут или рядом с домом, или в школе (у школы). В остальных случаях — это головняк.
Поверьте мне, я рос тогда, когда мои родители не могли мне позволить кружков (правда тогда возить детей еще не было нужды, ибо люди были еще не настолько дикими) и максимум, на что их хватало — это на оплату дополнительных уроков в лицее.
Есть мнение, что желание родителей запихнуть детей в как можно большее количество кружков — это попытка оправдать себя: типа, мы занимаемся ребёнком.
Кроме того, не забываем, что речь идёт о высокооплачиваемом IT. Если оба родителя — программиста, то деньги вообще не являются проблемой.
И, кстати, с опытом приходит понимание, что иногда жена может сказать, что «все отлично, дорогой. Так и продолжай!». А сама на самом деле уже на пределе.
Короче, аккуратней с посиделками дома за компом, когда жена в поте лица носится с ребенком. Рекомендую на этот случай нанять дополнительно няню, которая будет вас заменять, пока вы котрибьютите в OpenSource.
И даже когда через 10 лет окажется, что вы несли херню — это всё равно значения иметь уже не будет.
Нужно садиться за комп, когда жена садится за комп, что-нибудь для себя попрогать. :)
А если у тебя не один ребенок, а 4 у тебя нет бабушек, нянь и т.д., Ты тратишь 2 часа на дорогу, 8 часов рабочего времени, причем все библиотеки уже добавлены и им больше 7-ми лет, по выходным ты подрабатываешь (ипотека и в отпуск хочется), код показывать нельзя да особо и нечего, пишешь в основном xml и for с if (все давно уже отлажено), читать бесполезно ( забываешь без использования через месяц, что прочел). И что говорить работодателю???????
Нахрена правда работать по 10 часов в день, если при этом приходится еще подрабатывать и даже при этом нет денег на туже няньку — для меня большой вопрос.
В дороге контрибутить?
P.S. хотел поставить смайлик, но по при желании вполне реально ведь в некоторых случаях.
Время и остальное вторично.
Понятно, что если тот же OpenSource интересен, но в списке на 50 позиции — не будешь контрибьютить. Понятно, что если занимаешься OpenSource или чем угодно другим — значит, жертвуешь чем-то в пользу этого дела.
Лично меня просто удивляет, что отсутствие проектов аргументируют — невозможно найти на это время!
Но это же не правильная формулировка. Правильнее «У меня есть дела и поинтереснее».
Ну, иногда может быть, что действительно обязательные дела занимают всё время. Максимум, какие-то слабопредсказуемые окна по 10-15 минут образуются несколько раз за день, но именно для опенсорса это как-то маловато, вот собрать их хотя бы в час непрерывно — другой разговор.
Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.
Их можно понять. Я сам такой. Много вещей, которыми хочу заняться, но понимаю, что если забью на самообучение — быстро сольюсь.
Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.А почему, собственно? Почему люди, объективно делая меньше они требуют такую же оплату? Почему работая 40 часов в неделю, как в России, хотят, чтобы платили им, как Корейцам, у которых работая неделя 68 часов (да, я в курсе, что месяц наза её сократили до 52 часов).
Всё-таки от разработчика в первую очередь требуется умение мыслить логически… а вот как раз эти желания логическому объяснению и не поддаются.
Погодите, но человек, который на работе чесал яйца и смотрел видосы про котиков, и потому после нее идет опенсорсить часик-другой — объективно делает МЕНЬШЕ, чем человек, который честно работает с 9 до 18.
При прочих равных надо сравнивать. Или оба чешут яйца, а потом один идёт контрибьютить, а второй валяться на диване, или оба честно работают, а потом один идёт контрибьютить, а второй валяться на диване.
В целом предполагается, что первый более эффективен, хотя бы потому что объективно больше опыта разработки "в часах" при равном стаже "в годах". Кроме того, некоторые работодатели считают повышенную оплату известных в узких кругах опенсорса разработчиков имиджевыми инвестициями, дополнительной рекламой.
При прочих равных не получится, потому что человек, который 8 часов работал, а не отдыхал с перерывами на работу, не будет в состоянии чего-то контрибьютить.
> В целом предполагается, что первый более эффективен, хотя бы потому что объективно больше опыта разработки «в часах» при равном стаже «в годах».
Так видите ли в чем дело, далеко не факт, что у него опыт действительно больше, и далеко не факт, что если он и больше — то это какой-то актуальный и полезный для работы опыт (в подавляющем большинстве случаев — как раз бесполезный, уже это обсуждали, что программирования для гитхаба и программирование для работы, процессы не связанные и друг другу буста скиллов не дают).
Зато вот то, что человек, который после работы идет плодотворно коммитит гитхабы, на работе работает спустя рукава — это уже факт.
При прочих равных не получится, потому что человек, который 8 часов работал, а не отдыхал с перерывами на работу, не будет в состоянии чего-то контрибьютить.
Спорно
Зато вот то, что человек, который после работы идет плодотворно коммитит гитхабы, на работе работает спустя рукава — это уже факт.
Откуда этот факт? Есть ссылка на исследование?
Прошу прощения, но что тут спорного? Все просто и логично — если человек пришел и контрибьютит, то он не устал. Если не устал — значит мог на работе работать с большей выкладкой. Он этого не сделал. На самом деле даже 8 часов работы с полной концентрацией — это нонсенс, после такого подавляющее большинство людей дорогу на светофоре с трудом перейти сумеет, не говоря уже о написании сколько-нибудь качественного кода. Просто на практике из этих 8 часов лишь часть приходится на эффективный труд. У кого-то, конечно, больше, а у кого-то — меньше.
Все просто и логично — если человек пришел и контрибьютит, то он не устал. Если не устал — значит мог на работе работать с большей выкладкой.Вывод неверный.
На самом деле даже 8 часов работы с полной концентрацией — это нонсенс, после такого подавляющее большинство людей дорогу на светофоре с трудом перейти сумеет, не говоря уже о написании сколько-нибудь качественного кода.Именно так. Вы можете заставить человека так работать… месяц-два, а потом он сбежит… или начнёт порождать такой код, что его можно будет сразу выкидывать.
В норме у человека остаются-таки ресурсы не только на переход дороги, а и на другие вещи… а дальше — каждый решает сам для себя на что из потратить. Кто-то мастерит себе мечи и изображает в парке эльфа, а кто-то контрибутит в опенсорс. Не вижу тут проблемы.
Как же это неверный? Если у человека остались силы — значит он их не потратил. А мог потратить.
> В норме у человека остаются-таки ресурсы не только на переход дороги, а и на другие вещи… а дальше — каждый решает сам для себя на что из потратить.
Ну так вот, один человек решает эти ресурсы потратить на работу, в рабочее время. А другой — решил потратить на опенсорс. Кто полезнее для работодателя? Уж извините, но я уверен, что первый. По-моему понятно, почему. А вот откуда у вас уверенность в том, что более полезным окажется второй? Мне непонятно.
Единственный вариант честной работы — прийти домой и лечь спать часов на 12, проснуться и идти на работу?
А вообще, ничего не мешает отдыхать занимаясь Pet проектом. Это совсем не таже эмоциональная и психологическая нагрузка как работа.
Конечно, нет! Но у него отсутствует выбор, приходится воспитывать и помогать со сниженной эффективностью. А вот не контрибьютить в опенсорс код заведомо низкого качества — у него выбор есть. И он не контрибьютит.
Но код ограничивается не только опенсорсом. В случае воспитания — мы сравниваем качество воспитания уставшим родителем с качеством существующего воспитания _в общем_.
В случае написания кода — мы сравниваем качество кода, написанного уставшим программистом, с качеством кода _в общем_ (в том числе, не опенсорс).
Так работодателю только хуже от того, что его работник контрибьютит в ОС, вместо того, чтобы работать. Логично, что у людей с большим гитхабом и зп должна быть по-меньше.
В нашем мире, правда, есть такие вещи как «тренировка», «адаптация» и другие вещи, но дык эта… тяжело инопланетянам на другой планете — это завсегда так.
Да нет, все гораздо проще. Если вы пришли после работы и контрибьютите, то вы могли бы эту энергию затратить на более качественное решение рабочих задач на работе (сколько бы этой лишней энергии ни было). Но вы этого не сделали. Что в этом хорошего для работодателя? Чем человек, который выкладывается на 100% хуже, чем тот, который старается сберечь силы на «надо же еще после работы в ОС пару коммитов сделать...»?
Если вы пришли после работы и контрибьютите, то вы могли бы эту энергию затратить на более качественное решение рабочих задач на работе (сколько бы этой лишней энергии ни было).Как я уже сказал — на вашей планете (не скажете, кстати, где она и как называется?) наверное да.
Чем человек, который выкладывается на 100% хуже, чем тот, который старается сберечь силы на «надо же еще после работы в ОС пару коммитов сделать...»?Тем что человек, у которого нет хобби не может быть нормальным программистом. Ну вот так как-то получается. Подход «если ты контрибутишь в опенсорс, сочиняешь стихи или тратишь время на Хабре, то ты теряешь время зря — давай работать… время поспать часов восемь мы тебе дадим, так уж и быть!» приводит к тому, что у вас остаются одни «китайцы», порождающие много-много бессмысленного кода.
Вот заставить таскать мешки с утра до ночи — получается (и то с оговорками: к концу 16-часовой смены производительность всё равно падает). А писать программы — нет.
А если у человека остаётся время на хобби, то непонятно чем работа на оперсорс хуже срачей на Хабре. Только не надо мне рассказывать про то, что программирование на работе и работа с опенсорс — это одно и то же. Я ещё ни одного работодателя не видел, где были бы готовы терперь пока вы «что-то такое» сделаете годами и обсуждать потом то, что вы сотворили месяцами (что и разумно, у них бизнес, у них планы, им не до вашего «полёта мысли»).
Земля, третья от Солнца.
> А если у человека остаётся время на хобби, то непонятно чем работа на оперсорс хуже срачей на Хабре.
Уровнем ответственности, уважаемый, уровнем ответственности. Треп на хабре — это просто треп на хабре, я никому тут ничем не обязан, и если напишу какой-то «плохой» пост, то, максимум, любой пользователь мне волен поставить минус в карму, риск чего я принимаю, принимая правила данного ресурса (ну а иначе просто и нефиг постить). И мне тут вобщем-то плевать устал я, не устал. Может, я вообще пьян? Да ради бога, это просто обычный разговор с людьми. Исключение составляют разве что посты, связанные с объяснением технических деталей — надо понимать, что их может читать человек, который не разбирается в вопросе, это следует учитывать и подходить к написанию таких постов более ответственно, чтобы не ввести такого человека в заблуждение.
С другой стороны, если я пишу код и его на всеобщее обозрение выкладываю, да еще потом и потенциально работодателю — то я неким образом гарантирую его качество. Которое я не уверен совсем, что смогу обеспечить, если устал. Точно также, я не пишу код, когда я пьян.
Ну вот например, надо вам сделать какую-то операцию, и у вас есть выбор — чтобы ее делал, при прочих равных, хирург, который только что закончил 8-часовую операцию, или другой хирург, который только пришел, свежий и отдохнувший. Кого выберите и почему?
А если надо написать код для решения какой-то задачи, то вы при прочих равных выбираете программиста, который уже отпахал 8 часов, или того, который свежий и отдохнувший выпил кофейку и готов к труду и обороне? Почему?
Ну, понимаете, я не являюсь профессиональным скрипачом и по-этому мне плевать, если я играю плохо (даже если кому-то по просьбе, а не себе), потому как это хобби.
Но я являюсь профессиональным программистом и мне лично кажется, что «WITHOUT WARRANTY OF ANY KIND» и все такое — это просто некая отмазка в данном случае и притом кривая. Профессионал выполняет работу профессионально, пусть там и «WITHOUT WARRANTY OF ANY KIND». А наговнокодить что-то там, под соусом «ну я устал, ну это ж не работа, ну я никому ничего не должен и вообще визаут варранти» как-то недопустимо с точки зрения, скажем так, профессиональной гордости. Вот мы вроде с вами обсуждали пример врачей, которые иногда работают в больницах бесплатно. Вы представляете, чтобы такой врач при этом работал спустя рукава, потому что ну бесплатно же и «без варрантей»? Ну я как-то нет. Точно также я не представляю, чтобы он пошел туда (без необходимости) работать уставшим, с риском допустить ошибку. Или мы такого врача назовем, ну, плохим врачом.
Но я являюсь профессиональным программистом и мне лично кажется, что «WITHOUT WARRANTY OF ANY KIND» и все такое — это просто некая отмазка в данном случае и притом кривая.
Тогда специально для вас в договор нужно добавить пункт что пожизненно вы отвечаете за все дефекты кода, который вы написали. И что все исправления вы будете, как ответственный профессионал, делать в течении дня с момента уведомления вас о дефекте и бесплатно. И это реальный пункт договора, который мне пытались дать на подпись.
Ну вот например, надо вам сделать какую-то операцию, и у вас есть выбор — чтобы ее делал, при прочих равных, хирург, который только что закончил 8-часовую операцию, или другой хирург, который только пришел, свежий и отдохнувший. Кого выберите и почему?Того, у кого больше опыта. Потому что хирург, сделавший за свою жизнь несколько тысяч операций, сделает всё лучше и качественнее, чем тот, кто сделал сотню или, того хуже, несколько десятков. Даже если он будет уставшим после 8-часовой операции. Амосов по 12 часов день оперировал — тем не менее к нему, уставшему и не отдохнувшему, люди старались пробиться… а к молодым аспирантам — нет.
То же самое — и в программировании. Хороший пример, кстати.
А если надо написать код для решения какой-то задачи, то вы при прочих равных выбираете программиста, который уже отпахал 8 часов, или того, который свежий и отдохнувший выпил кофейку и готов к труду и обороне? Почему?А нет прочих равных. Тот, кто «пашет» — имеет опыт и я, как правило, могу быть уверен в том, что он всё сделает. А Wally мне нафиг не нужен — пусть он будет суперотдохнувшим и «готовым к работе».
Причина — та же, что и с хирургами.
Я же говорю — «при прочих равных» Просто ответьте на вопрос.
Ну не могут быть два человека «прочими равными» за исключением одного показателя. Хотя бы потому что если человек уже «отпахал 8 часов» то эти 8 часов на него несомненно повлияли. Если это время он копался в кишках той подсистемы, которую мне нужно править — то я однозначно предпочту его, так как ему сделать изменение будет проще. А если мешки грузил и у него руки дрожат — тогда вряд ли.
И это если мы забудем об Open Source и о том, что у наших двух друзей очевидно разная квалификация в принципе (один — исповедует принцип «не высовывайся» и ничего нового не изучает, другой — обладает более широкими навыками).
Зачем вам ответ на вопрос который не имеет никакого отношения к реальной жизни?
Предположим, у вас появится семья, ремонт, вы (не дай конечно вселенная) чем-то очень серьезно заболеете. Будете ли вы готовы к тому, что вам тут же, моментально, сольют зарплату (или вообще «уйдут»)?
Будете ли вы готовы к тому, что вам тут же, моментально, сольют зарплату (или вообще «уйдут»)?Почему моментально-то? Что — зарплату поднимают на следующий день после того, как у вас появляется патчи в KDE? Нет же — это нужно довольно долго контрибутить, чтобы это заметили.
То есть речь идёт не об одномоментном «сливании зарплаты» (в наказание за то, что «посмели заболеть»), а том, что будет происходить несколько лет. А тут… у вас что — есть выбор? Нет, зарплату вам срежут, конечно, не за то, что вы больной или на ремонте занятый. А за то, что ваш сосед сделает больше. Но в сухом остатке — будет то же самое.
Почему бы тогда и в OpenSource не контрибутить раз в несколько лет?
Просто тут и вопрос как я понимаю ставится о том, чтобы делать это боле-менее постоянно. То есть, если ты занимаешься этим постоянно, то зарплата выше, если нет — то ниже. Разве не так?
В таком случае, как только работатадель видит, что в течении например следующего месяца вы не имеете возможность контрибутить в OS (задерживаться на работе, просто программировать для себя и т.д.), он снижает зарплату. Справедливо?
Я предложил 2 варианта — или работник занимается опенсорсом постоянно или время от времени
Скажите, а вы — негр или индеец? Выберите из двух.
Проясните свою позицию
Я дал вам ссылку на комментарий, где я поясняю свою позицию. Вы его прочитали? Если да, то почему задаете глупые вопросы?
Ссылку я прочитал. Там говорится о каких-то баллах и о том, что проект, сделанный вами 7 лет назад, приносит профит
Я не понял связи между количеством баллов и зарплатой.
Вот предположим, я хочу увеличить зарплату на x%. Сколько баллов для этого я должен набрать? И что вообще такое балл?
Да и вообще как-то странно, что баллы не имеют срока давности, но это уж ваше дело
> Люди, хотят работать с 9 до 18, и получать столько же, сколько те, кто любит дело и занимается им в своё свободное время, изучая новое и контрибьютя в OS.
Если рассматривать идеальные (несбыточные) мечты, то тогда уж большей инвестицией будет разработать инструмент (язык программирования и т.п.) который позволит за то же рабочее время писать более качественные продукты.
А повышать качество продукта (пусть и опосредованно) путем заимствования из личного времени — это по моему плохо.
Нет, ну реально, давайте мы все будем работать по 12 часов в сутки, тогда и продукты все будут мегаоптимальными, и жить все будем намного лучше (в том смысле, что новый айфончик будет более пафосным)
И это не говоря уже о том, что когда папа дома, то ребёнок требует, чтобы папа с ним играл, а не сидел за компом — реально скучает все дни без папы.
КАК можно найти время на OpenSource у нормального человека?
КАК можно найти время на OpenSource у нормального человека?
То есть у всех программистов всегда ребенок 1.5 года + жена еще одного родила?
Ответьте на вопрос, пожалуйста, до того, как жена родила первого, два года назад вы контрибутили в опенсорс?
Я не хожу в магазин каждый день, а езжу раз в пару недель и закупаюсь надолго. Сколько это еще мне времени экономит?
Ну и по остальным пунктам вопросы.
Вы сами себе устроили жизнь, в которой ни на что нет времени. Это ваша проблема, а не проблема всех людей.
А дороги с работы домой нет просто.
А мясо вы не едите? Или покупаете только замороженное? Клубника, арбузы, бабаны две недели тоже ждать не будут.
А дороги с работы домой нет просто.
Если дороги до работы нет, то можно совмещать прогулку с ребёнком с походом в магазин.
Нафига мясо то свежим хранить?
Бананы прекрасно живут две три недели. Особенно если покупать слегка недоспевшие. Арбузы клубника не являются продуктами на каждый день. Купили съели, захотели черз две недели опять купили. Но врядли.
Мяса мы покупаем кучу и замораживаем
Во, первое же, чему меня обучили (когда стал поваром в заведении), что приехавшее мясо надо разделать, окуратно очистив от лишнего, и порционно (под задачи… примерно по 500гр — стандартное кол-во мяса при заказе на «двоих») зафасовать в пищевую пленку. И в морозилку, на «мгновенную заморозку» (там капитальный минус был помнится).
Когда нужно, сразу достаются брикеты (штук по 10) и кладутся на поддон возле жаровни — весьма шустро размораживается. Далее уже идет готовка.
Дома процесс примерно сопоставим — проблем тут особо нет.
*Такие брикеты, если обернуть корректно, могут и месяца три пролежать, не «высохнув».
впервые я вижу полезный лично для меня комментарий
Эм… даже не знаю, честно говоря, как и реагировать (неужели я постоянно несу какую-то пургу?).
невероятно удивили
Так же смущен — чем же именно? Что я был поваром в прошлом? Или что худо-бедно знаю тонкости кулинарии, помимо эм… «программирования»?
на кулинарном поприще
Помнится не так давно ресурс (гиктаймс конечно, не хабр, но все же) был под волной «сам-издата». Многим очень сильно не пришлось по нраву.
А готовка категории «сложней, чем отварить пельмешков» — я даже не знаю, чем местные за такой разговор не по делу меня закидают.
Ну и да, есть один существенный нюанс из кулинарии — всем людям нравятся разные блюда, что требует разных подходов. И конечный результат зависит не только от исходного качества ингредиентов, но и от индивидуальных вкусовых ощущений. Иными словами один человек повторит и ему понравится, а другой повторит и потом захочет меня «отстранить от клавиатуры навечно (чтобы всякую пургу не нес)».
Ну а так да, я могу сделать «диетическую» (без мяса) версию борща за 30 минут с нуля. На курице за 40.
У нас в заведении был весьма жесткий регламент на горячие блюда — из холодильника борщ был под запретом, поэтому всегда свежим был.
UPD: Поэтому, с моей колокольни, надо просто идти на проф-форумы за всем этим.
/Разводя руками/ — банально не знаю, о чем стоило бы конкретно тут писать. Как делать Шоколадные блины и роллы с фруктами из них?
Это когда снаружи будет оболочка, хрустящая на зуб, а внутри мороженное на вкус заказа.
Но в домашних условиях такое не сделать — это и трата «кучи литров масел» + замызганная кухня от хорошего такого фритюра.
P.S. Блин, чего же я только не готовил то… иная жизнь была прям.
Вот примерно то, что и я делал:
![image](https://habrastorage.org/getpro/habr/comment_images/605/2e4/85a/6052e485a5cfc33fb6fb4d967fb90cfe.jpg)
По сути, основная трудность — это хороший фритюр. Чего обычно дома таки нет. Остальное можно при желании найти в крупных сетевых магазинах. К примеру METRO.
Раз уж тред медленно превратился в кулинарный форум, то может кто-нибудь подскажет: готовил пахлаву, но тесто получилось такое, как будто стекло жуешь.
Где я накосячил? Как сделать так, чтобы есть сладкое без крови? А то не кошерно, все таки.
1) «рыхлое» — «связанное»
2) «сухое» — «мокрое»
Обычно люди сталкиваются с проблемами вида «не пропиталось» что-то одно, что портит вкус от блюда в целом. Скажем вам необходимо иметь мягкую и сочную морковь в салате или достаточной мягкости болгарский перец.
В случае с пахвалой у людей чаще всего проблема в «пропитке орехов», что кстати далеко не всегда зависит от прямоты рук (как, впрочем, и во всей кулинарии) — бывают «плохие» орехи.
Вам необходимо «связанное» тесто (т.е. не рыхлое) + «мокрое» (т.е. не сухое).
На первое влияет по большей степени состав/качество исходников. На второе — процесс приготовления.
По ингредиентам общие советы — старайтесь избегать маргарина, не жадничаем на дорогое масло сливочное.
Мука — только высшего сорта. Яйца старайтесь брать свежие. Практика показывает, что чем больший по объему желток, тем лучше. Вам его надо по больше. Если партия яиц с мелким желтком, тогда возможным решением будет взять еще один желток сверх нормы (гугл показывает как бутылкой сделать отделение).
По режиму готовки — надо смотреть на оборудование. Т.е. какого типажа «печка/плита» и «тара». В зависимости от соотношения площади к объему тары возможны вариации тех-процесса. Типаж печи вносит так же свои тонкости в приготовлении.
Полчаса блаженно посидели ничего не делая
Скорее делая то, что более интересно, чем заниматься опенсорсом. Не знаю, может читали, может смотрели что, может музыку слушали. Но явно не копили силы на то, чтобы лечь спать.
Ваше сообщение один в один как то, что уже было выше.
Не интересно.
Вот смотрите, есть перекуры на работе. В момент перекура люди страдают херней, курят, болтают.
Я во время перекура забираю малышу у жены и таскаюсь с ним по дому разговаривая о какой нибудь ерунде. А она отдыхает.
На выходе — у меня перекур, у жены отдых, малыш развлекается.
Довод про «когда будет два» у меня во первых вызывает вопрос — нахрена мне два? И во вторых почему два, а не семь?
Ну и повторю свой овтет на предыдущий абсолютно такой же комментарий:
Вы сами создали себе невыносимые условия жизни, в которых у вас нет времени ни на что, кроме семьи и работы. Это ваш выбор, а не проблема человечества.
Если мне вдруг сейчас станет резко не хватать свободного времени, я просто стану работать 6 часов вместо 12 и у меня его появится куча. Станет меньше денег? Я и так зарабатывают несколько средних зарплат, да стану чуть беднее, но есть вещи и важнее денег.
Только полные задроты сидят бесплатно после работы в оупенсорсах и это медицинский факт.
Я не знаю, насколько это к вам лично относится, но есть много разработчиков, которые с радостью тащат опенсорсные библиотеки в свои рабочие проекты (потому что свой велосипед надо не просто написать, но и отладить, а потом поддерживать), но если им предложишь пофиксить багу в их же рабочем инструменте, то начинается всё это: жена, дети и апелляция к возрасту. Попробуйте лучше при случае убедите своего работодателя оплатить вам работу по улучшению чего-то опенсорсного из числа того, что уже используется в компании, вдруг получится.
В качестве альтернативного решения проблемы «у меня большой опыт, но мне нечего показать» могу предложить, ну не знаю, выступать на конференциях (хинт: это тоже можно делать за счёт работодателя, если повезёт) или статьи/книги писать. Но, возможно, с вашей точки зрения это тоже удел полных задротов, а опыт настоящих спецов можно заметить на глаз по свечению ауры.
В западных компаниях вообще подписывают документ который говорит о том что вообще любые наработки которые были сделаны во время работы в компании в том числе и у себя дома в 1 ночи принадлежат копании либо открыто разрешают вносить вклад в opensource и делать пет-проекты даже на работе. Довольно сложно определить что вы делали в компании а что нет. Единственный способ — тотальный контроль и слежка за сотрудником, но вот большинство сотрудников этого не любят и сваливают.
во время работы в компании в том числе и у себя дома в 1 ночи принадлежат копании
А это законно?
В принципе да, но над этим парятся только "серьезные компании"
Компании поменьше чаще всего над этим не парятся не у нас не на западе. Главное чтобы успевал по своим таскам, а что ты там делаешь — читаешь хабр, пишешь в twitter делаешь левак или катаешь в cs — всем как-то по барабану.
Возможно, это связано с повсеместной оплатой за жопочасы. Работник-то может и рад работать не 40 часов в неделю, а 20-30 часов, выполняя тот же объём работы, но тогда его зарплата упадёт. Вот и приходится страдать фигнёй на работе.
В такие моменты нужно стараться заставить себя не страдать фигней а подтягивать навыки.
Такой подход позволит покачаться и более эффективно выполнять работу в будущем. Когда я был джуном у меня уходило 3 дня на то что сейчас я делаю за пару часов. Причем 1:30 я думаю как это правильно сделать и 30 минут собственно набираю код. Такой скачок производительности естественно заметят руководители (если они есть) и грамотный руководитель пересмотрит оплату, если же нет всегда есть шанс сменить работу с повышением оплаты. Правда ответственность и сложность вырастают с ростом карьеры, если раньше я менял ссылки на сайте, то теперь мне могут кинуть важный но не срочный эпик который я буду делать пол года в одиночку и на который по хорошему нужно 2 отдела. Правда от таких фортелей начинаешь выгорать.
Именно в такой период стоит посмотреть другие технологии, которые внезапно помогут сдать проект быстрее. Для меня php быдлокодера такой технологией стал React и он позволил мне сэкономить кучу времени на верстку однообразных компонентов — ui киты просто замечательная идея!
Если же совсем выгорел то стоит посмотреть смежные области работы, например вместо кодинга можно вести курсы или стать тимлидом. Пара коллег так и сделали — один устроился на постоянную работу в универ, второй взял на себя отдел, пусть из всего 2-х людей но они реально тащат!
Сначала у тебя нет опыта, чтобы достойно работать над опенсорсными проектами. Через 10 лет, когда он появится — уже нет времени. Поскольку для того, чтобы был результат, ты должен серьезно вложиться в дело. Серьезно вкладываться получается только в основную работу.
Не достаточно? Нанимай меня, плати бабло и смотри всё что тебе нужно. Нет денег? Ищи студентов которые на гитхаб коммитят.
Ага, как ни глянь на гитхаб — одни студенты, бл…
А если человек имеет какие-то увлечения, не связанные с выжиганием глаз монитором? Я уж не говорю о семье, наличие которой на любых потугах в сторону опенсорса ставит крест, если только это все не делается в счет рабочего времени.
А если человек имеет какие-то увлечения, не связанные с выжиганием глаз монитором?
Так можно же без фанатизма — пол часа раз в пару дней.
Прошу прощения, на какой результат вы «пол часа раз в пару дней» рассчитываете и к какому сроку? По моим прикидкам вам с таким темпом придется потратить лет эдак 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летней давности до сих пор крайне положительно агукается на собеседованиях. Да даже клевую статью на Хабре можно кинуть перед собеседованием и обо мне уже сложится дополнительное впечатление.
Аналогично, когда я собеседовал десятками, если не сотнями ЖС-программистов — я заходил и на гитхаб, и смотрел единичные коммиты. Читал статьи, просматривал выступления. Да, я был лидом команды и ответственно подходил к своей работе, а отбор людей в команду был частью моей работы. И даже единичные коммиты на Гитхабе, которые я мог бы посмотреть были маленькими плюсами к моему решению.
buttons[i].onlick
Какой интересный event :)
Вот не согласен с парой багфиксов и в роли соискателя, и в роли представителя работодателя.
Как минимум, фиксы в фреймворк {frameworkName} на языке {languageName} показывают, что ты "{languageName}-разработчик, владеющий {frameworkName}", а не "{frameworkName}-разработчик". Даже если в пресловутый jQuery пару фиксов сделал, то это показывает, что ты JavaScript-разработчик, владеющий jQuery, а не jQuery-разработчик.
Поэтому настаивать на том, что опенсорс настолько важен, что нужно им заниматься каждому программисту в его свободное время — зачем?
Не хватает контрибьюторов? Значит проект умрет. Это не плохо и не хорошо, это так работает.
Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.
Получается, что лид должен начинать общение не со своего опыта и проектов, а с обхода бинарного дерева. Он же лид и сам знает, что его спросят в итоге)
Кому должно?
…
Лид должен сам всё выдать и так. С потрахами.
Кому должен?
А если он не хочет никого потрахивать?
Лид должен сам всё выдать и так. С потрахами.
Ошибка в слове как-то даже кстати.
Зачем задавать вопросы? Лид должен сам всё выдать и так. С потрахами. Он же лид, а не джуниор.
С "потрахами"? И кого он должен потрахать, чтобы пройти собеседование и получить работу? Боюсь, это явно не профильный навык для хорошего разработчика. Вот совсем не профильный. Тут какой-то другой специалист требуется.
Вряд ли идеологическому лидеру по разработке ИИ, например, кто-либо задаст вопрос про big-O.
И сразу вспоминается история про разработчика Homebrew
![](https://habrastorage.org/webt/v8/bj/b5/v8bjb55qmttcb0lv2olrm3wwebw.png)
На западе есть некая общепринятая система или поверье, что собеседование, это сакральный процесс. И если провести его за 5 минут, то это катастрофа — соискатель не будет серьёзно относиться к работе в компании. Хотя это бред.
Другой риск — взять не того. За что HR и команда будет раскритикован в изощрённой позе. Из-за чего перестраховка растёт из перестраховки.
Но это работает, потому что весь рынок так работает.
В России (в некоторых областях, где бешеный недобор) нет времени на серьёзную прокачку кандидата. Поэтому створ принятия решения — день собеседования. Дальше желательно показать кандидату заинтересованность. И выкатить предофер. Пока его не перебили.
Поэтому у нас в отделе — пробегаемся по истории кандидата, смотрим что делал и насколько это было ему интересно. Рассказываем и показываем что делаем — ловим опять же заинтересованность. Дальше — живой тест — кусок реального кода, смотрим как читает код и мыслит. Дальше внутреннее обсуждение и быстро в работу. Адекватов же и без нас рвут на части.
Ну как Вам сказать? ЕГЭ же. И как и в случае с ЕГЭ, прохождение таких тестов показывает способность проходить тесты и ничего более. Впрочем, это ещё лет 20 назад на себе испытал. Да, сейчас немного научился вешать лапшу на уши, чтобы пройти собеседование, но это так скучно, что до сих пор не всегда справляюсь с непрофильной задачей по рекламированию себя.
Пусть в первой куче нам попалось X решек, значит во второй их (20 — X).
Чтобы добиться равенства просто переворачиваем все монеты в первой куче, X решек превращаются в X орлов, а (20 — X) орлов в (20 — X) решек.
А если, например, в первой куче нет монет с решкой наверх? То получится в одной N, а в другой 20. Но логика правильная была.
А, неправильно про разделение прочитал. Тогда все правильно, извиняюсь.
80 орлов, 20 решек.
В первой куче (по вашим словам): 20 орлов и 0 решек
Во второй: 60 орлов и 20 решек.
Переворачиваем монеты в первой куче и получаем: 0 орлов и 20 решек
Видим что в обеих кучах по 20 решек. чтд.
посчитать, разделить, пощупать(лизнуть), перевернуть…
Мне почему-то сразу брутфорс на ум пришел:
- Собрать монеты в две кучи — в первой 10 шт., во второй остальные;
- Спросить, равное ли количество решек в кучах?
- Если нет, добавить в кучу#1 одну монету из кучи#2, вернуться ко второму пункту;
- Если да, можно собрать деньги и уходить.
А вы переворачиваете монеты
Вообще некорректная задача, не выдан инструментарий что можно что нельзя
Если их можно в темноте без проблем находить тогда можно просто 10 решек в одну кучу положить
(удалено)
А вы таки предлагали им его оплатить? Сегодня многие воспримут такой вопрос нормально (если он будет задан уважительно, конечно) и согласятся.
Это рынок. Бывает и выгодно делать. Если предложение достаточно высокое, например. Если бы разговор шел про 80$ час при успешном тестовом, то согласились бы попробовать?
На самом деле в последнее время появилась просто аллергия на потерянное время.
Когда пытаешься объяснить что этапы исследование-анализ-проектирование (а часто и реверс-инженеринг) стоят времени/денег, народ изумленно поднимает глаза и говорит что это вне бюджета.
Понятное дело выгодней, чтобы разраб сам спрашивал как надо и внося правки раз за разом приближался к идеалу.
А когда тебе дают тест, а потом, когда ты его выполнил, а тебе говорят, что у тебя запятые не там, и что ты применил не второй вариант решения, а пятый, а нам нужно было с промисами, а не с таймаутами, и ты нам не подходишь поэтому, то извините, это лотерея.
Да ещё и там у них очередь из десяток кандидатов, поэтому даже если ты написал всё правильно, то шанс быть выбранным стремится к нулю.
А потерянное время — это конечно, приобретённый опыт, но от большого количества опыта масло на хлебе не появится.
set_boring_mode(True)
У меня основная работа, 2 горячих проекта, 2 домашних проекта и очень хочется учиться новому.
20 лет назад, да, я бы с радостью взялся за тестовое задание и даже провалив его радовался, что бесплатно поимел опыт.
Но мир изменился (с)
Все на удаленке и все на аутсорсе. Время не просто деньги, у него есть названая ставка.
Раньше я думал, как круто будет переехать и работать в штатах. Теперь stackoverflow подсовывает вакансии с тэгом «Remote — ok» и я понимаю, что переехать-то можно но не обязательно навсегда и именно в штаты.
set_boring_mode(False)
Я даже самой постановки вопроса честно говоря понять не могу. Вы используете настолько сложный фреймворк что на его изучение нужно солидное время? С кучей неочевидных вещей? С ним нужно сражацо? И еще произносите слово хайлоад? Мне уже сразу с вами не по пути. По-моему если программисту показать названные наугад папочки и сказать: вот тут у нас шаблоны под такой то шаблонизатор, тут контроллеры итд итп, то уж сваять подобное он сможет запросто.
Но ведь это отлично, что сложившаяся ситуация такова. Потому что на этом фоне у компаний, которые сделают процесс найма лишенным перечисленных недостатков (да, у всех трех таких компаний )))) будет возможность нанимать устраивающих их сотрудников. Когда-то Генри Форд писал, что надо сделать, чтобы к тебе стояла очередь из лучших специалистов твоих конкурентов. А тут ситуация сама благоволит к этому )
Зануда мод
Наверное поэтому сейчас все покупают тайоты и хонды, лишь бы не сыплющиеся форды.
Посмотрите приложение маркета, фейсбука, мейлру почты, контакта, ютуба, альфа банка и так далее, и далее, и далее. Как впечатление?
Да, фиговенькие приложеньки, особенно по сравнению с продукцией вашей компании OOO «Хэндисофт», которая сделала для Департамента торговли и услуг города Москвы такие потрясающие продукты как… эээ… нууу… как что, кстати?
Я в этой компании 2 месяца проработал. Не знаю откуда инфа у вас.
А у нас будет собеседование?)
А вы сами не видите противоречия в том, что вы владеете потрясающим знанием о том, что ведущие мировые IT-компании неправильно ведут свои ключевые бизнес-процессы, но разработать приложение, которое не стыдно показать вам это не помогает?
Тогда прямо скажу: вы пытаетесь не узнать о моих приложениях, а просто повоевать в комментах.
Если вам действительно интересно, то с удовольствием расскажу и покажу в личке, когда сможете говорить без накала.
Это только иллюстрация того тезиса, что по какой-то причине, потрясающая идея о том, что гуглофейсбуки неправильно нанимают людей не вывела вас на какой-то качественно новый уровень разработки, верно?
А сам даже испыталку на руководителя не прошел (судя по цитате, что там 2 месяца отработал).
Знаем мы таких чудаков, вместо собственного развития начать писать на хабру, что все кругом плохие и собеседуют неправильно.
Видите же что юношеский бред, зачем лезть, пусть сам попробует просматривать по 10-20 резюме в день в режиме нехватки ресурсов на основную разработку, посмотрим как он тогда будет всякие левые приложеньки на айфоне запускать и «квалифицированно» собеседовать людей.
Все, что хотелось посоветовать автору — не идти в руководители, пока мозги не встанут на место (а встанут в тот момент, когда прочитав данный высер будет сделан вывод о синдроме графоманского бреда у автора статьи)
А прежде чем «катить бочку», могли бы показать себя с лучшей стороны, хотя бы ознакомившись с теми статьями, что написаны автором. Увидели бы, что он далеко не так зелен, как его вы тут обвиняете. Но это же сложно.
И если для вас «хреновый» руководитель тот, кто не носится с каждым кандидатом как с писаной торбой, то вынужден вас огорчить, это даже не входит в прямые обязанности. А вот формирование крепкой и эффективной команды без чванливых идиотов и прочих токсичных личностей, которые называют вопросы бесполезными или вообще сваливают посреди собеса.
И можете с моими статьями ознакомиться, с библией проектирования, я там много чего интересного писал, про техническое управление в частности. Без нытья и скидывания ответственности, как автор данного поста.
По поводу этой клятой квазилогической задачи (ненавижу их всеми фибрами души) — ответ какой? Собрать все монеты в одну кучу, и перекладывать по одной во вторую кучу, пока число монет решками вверх не сравняется в обоих кучах?
Хотя если честно — мой ответ на такую задачу с вероятностью в 80% будет «Сами лазайте по башням колдунов, а мне такое не интересно. Прощайте.».
https://habrahabr.ru/post/352246/#comment_10729978 — вот решение
Единственное решение для себя я видел в постановке на ребро.
https://www.youtube.com/watch?v=f1ZyHbKddUc — мультик с более внятной формулировкой задачи.
Выключается свет, но остается возможность определить сторону монеты.Решение этого не требует.
Но вариант с брут форсом тоже подходит)
не понимаю, каким образом эти задачи могут что-то сказать о кандидате.
Как минимум: насколько устойчива нервная система кандидата, насколько быстро кандидат включается в задачу, насколько готов принимать условия игры. Т.е. банально, вольется ли чел в коллектив. Ну и способность логично мыслить в любой обстановке — гораздо более ценное качество, чем даже продвинутые профессиональные навыки.
Это собеседование будущего сотрудника МЧС или программиста? Если где-то при трудоустройстве проверяют нервную устойчивость — значит надо сразу сваливать оттуда. Потому что это одна из основных задач работодателя — обеспечить такие условия труда, в которых эту устойчивость демонстрировать не придется.
Или вы пишете идеальные программы, которые никогда не ломаются?
Или ваши программы не настолько бизнес-критичные, что все задачи ставятся в бэклог, и спокойно чинятся в течение нескольких дней/недель/месяцев?
ПС: ничего личного конкретно к Вам и вашим скиллам, просто разбираю конкретную ситуацию.
Мне, например, на собеседовании сложно собраться с мыслями для решения задачи, но в случае поломки чего-либо в продакшне я вполне себе мобилизуюсь и решаю проблему.
Не вижу повода для стресса в описанных вами ситуацияхЯ в целом тоже(хотя падения бывают разными), но как видно из комментариев ниже, для некоторых это действительно стресс:
> Если предполагается что будет все падать и гореть — к черту это место работы
Сколько людей, столько и мнений. И господа не согласные даже не поленились в карму залезть на такой безобидный казалось бы комментарий.
Если предполагается что будет все падать и гореть — к черту это место работы, если только все эти падения и горения не будут оплачены (вместе с сеансами релаксирующего массажа и сеансами психотерапевта, для восстановления нервов). Если же такие ситуации являются исключительными, то тогда можно с тем же успехом требовать от сотрудника уметь добывать огонь трением. Мало ли, на необитаемый остров с ним попадете?
— когда коллега врет
— когда коллега троллит вместо нормального разговора
— когда коллега троллит влезая в «чужой разговор»
— когда коллега заходя кидает «здорово бандеровцы»
— когда коллега делает агитацию вида «наклейка на толчок 20!8»
Вот это вызывает реальный стресс. А паниковать при «упало приложение» это из разряда «волков бояться — в лес не ходить». ПО, это наша область. И профессионал по-хорошему отдает себе отчет о том, что факап возможен.
— когда коллеги в трех метрах от моего рабочего стола ведут беседу и ржут как кони, когда я наушниках пытаюсь общаться с заказчиком
— когда коллеги перекрикиваются через комнату с одного края до другого через мою голову
— когда коллеги в принципе вносят в рабочие диалоги темы политики/национальностей/религий/пола, еще хуже, если они шутят на эти темы
— когда коллеги опаздывают на митинги. особенно если планировался митинг на тридцать минут, а за ним встык начинается следующий
— когда коллеги, которые обладают вроде бы даже техническими знаниями, не умеют настраивать наушники и микрофон для работы в приложении для виртуальных совещаний (приложение используется фирмой больше трех лет)
— когда коллеги присутствуют на митингах, но потом ничего не помнят / не читают протоколов / не понимают сути и надо все повторять с нуля и с каждым отдельно
— когда считается, что если о необходимости выполнения задачи не напомнили три раза, то можно ее не выполнять. «ну если вам надо было бы, вы бы напомнили»
— когда вместо поиска решений и предовращения повторения факапов можно провести три часа в склоках, тыканиях пальцами и выяснении имен виновных
вот это бесит так, что аж кушать не могу. а быстро реагировать на проблему — это не стресс
— когда коллеги в трех метрах от моего рабочего стола ведут беседу и ржут как кони, когда я наушниках пытаюсь общаться с заказчиком
Последние год-полтора взял за правило: входя в наш опен-спейс (большой кабинет (есть и маленькие)), если там не один-два человека, то говорить стараюсь шепотом. Ну разве что если там не все до единого заняты обсуждением чего-либо (без концентрации над проектом).
— когда врут
— когда ложно обвиняют меня
А все остальное оно как погода, есть и все тут. Слегка подбешивает но так блин везде.
— когда коллеги, которые обладают вроде бы даже техническими знаниями, не умеют настраивать наушники и микрофон для работы в приложении для виртуальных совещаний (приложение используется фирмой больше трех лет)
Для меня это проблема. Вернее сказать, для моих собеседников вроде вас это, наверное, проблема. Основное использование аудиотракта моих компов (домашнего и рабочего) — это системные и подобные звуки. Когда мне предлагают аудиозвонок или видеозвонок, по работе или близким вопросам, то всё, что я могу сделать — это воткнуть шнур гарнитуры в гнездо (это при условии, что гарнитура вообще есть, если нет рассчитывать на динамик и микрофон, что по опыту значительно ухудшает качество связи) и проверить системные уровни громкости. Только после начала разговора я могу узнать нормально работает или нет. Если за пару минут не получилось методом тыка в разных менюшках настроить, то первый фолбэк — выйти из приложения на компе и воспользоваться им на телефоне в обычном режиме телефона (минус — не вижу что кто-то пишет или там скрины какие-то бросает), второй — попросить организовать телефонную конференцию.
И это с опытом коммерческой прикладной разработки ПО на разных языках и в разных средах больше 20 лет, с опытом диагностики и решения программных и аппаратных проблем самого разного уровня, вплоть до выявления пермаркированных процессоров. Ну вот никогда не интересовали возможности общения войсом через компьютер или через приложения на телефоне. Один раз лет 10 назад попробовал настроить работу аудиочата под вайн в убунте, дня три потратил с команием в конфига, пересборкой модулей из исходников и т. п., но приемлемых результатов не добился. Сейчас даже не знаю какая аудиоподсистема рабоает, алса или ещё какая. Если предлагаете мне общаться голосом через приложение, которое у меня из коробки не работает, то будьте готовы, как минимум, подождать пока я попробую методом тыка настроить.
— когда считается, что если о необходимости выполнения задачи не напомнили три раза, то можно ее не выполнять. «ну если вам надо было бы, вы бы напомнили»
А чего такого-то? Классика жанра — ПВО (Погоди Выполнять, Отменят)
Ну и плюс, habrahabr.ru/post/352246/#comment_10730912
лояльность к банальному несоблюдению условий труда, включающую в себя переработки и выполнение работы вне должностых обязанностей.
А вот объявления, подобные этому, вызывают хтонический ужас.
P.S. Кстати, часто под стрессоустойчивостью понимают простое умение подавлять агрессию при зачитывании техзадания, составленного заказчиком.
Но я-то человек женатый — к оскорблениям и унижениям привык. :) Домой вечером не тороплюсь.
Причем именно с хамством и криком. Спокойный и четкий ответ «нахер пошел» (уж простите) ввел собеседника в ступор.
Задачка для стажеров же, воу. Или для спорных случаев.
У любой задачи на соображалку, особенно в стрессовой ситуации, есть чудовищный разброс. Она имеет много ложно-отрицательных срабатываний и применяется, когда эти промахи можно себе позволить.
Вам в департамент безопасности.
Сами лазайте по башням колдунов, а мне такое не интересно. Прощайте.
Я думал я один такой остался.
Даже не понимаю как так получилось. Помню в школе все эти задачки были интересны, соревнования все дела. А сейчас никак. Недавно только задавали задачку из разряда «догадайся» и ничего: пустота, не знаю и знать не хочу. Может всему виной тот факт что я слишком часто вижу вред от «догадывания», а может тот факт что у некоторых таких задач бывает «задача сформулирована неверно» правильным ответом.
они просто готовы больше прогибаться на этапе отбора
Это ключевой момент в глазах рекрутера практически любой крупной компании. Не только при подборе IT-спецов, но и для вообще любой должности ниже директора-совладельца. Никакой супермегаспец не нужен, если не обладает т.н. «гибкостью». И да, большие конторы готовы мириться с ветром в голове у «гибких».
Фирмы не заинтересованы в высоком качестве продукта, их интересует только маржа и стопроцентная послушность персонала. Если спец не мирится с маразмом на собеседовании, значит и маразма в задачах не потерпит, и тогда придется или долго и нервно объяснять спецу политическую необходимость красных линий зеленого цвета, или заново давать объявления, устраивать собеседования и т.п. и т.д. Контора просто экономит себе ресурсы, выбирая прогибающихся и нетребовательных. Исключения редки, увы.
К тому же, не всегда группа профессионалов становится командой. Нельзя просто набрать кучу умных людей, посадить их в одну комнату и ждать что они сделают что-то великое. У крупных компаний много ресурсов, они могут позволить себе устраивать любой цирк с конями, пока к ним стоит очередь из желающих «работать в Дудле». Если у вас за дверью два кандидата, то ты можете позволить себе их детально расспросить об их опыте, потому что цена ошибки для вас существенно выше, чем для сферического Дудля. А Дудль, в свою очередь, может легко уволить неподходящего инженера. Плюс нельзя сравнивать компании в России и за рубежом, в условных Штатах уволить человека проще, в России — сложнее (это все добавляет к цене ошибки).
Согласен. Правда, я в такую крайность не впадал) Характер крайне важен. И ложно-отрицательные срабатывания крупные танки могут себе позволить за счет первой категории претендентов.
Будут ли они лучшими? Трудно сказать. Где-то была статья, что как раз наоборот, но тут без пруфов.
Придете в Дудль на должность разработчика — будете на собеседовании писать сортировку пузырьком, придете на должность тех дира — вас даже про язык программирования не спросят.
Начинаешь разговаривать, спрашивать про проекты, про достижения, прочие вопросы. И вроде все хорошо. Проходит час, начинаешь спрашивать технические вещи — и вдруг тишина. Кандидат не может ответить на простейшие вопросы. Даешь элементарную задачу — сделать разворот строки. Из «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 в цикле
— а вообще давайте спросим какая кодировка
— по опыту ответ наверняка «любая»
— вот тут совсем все становится грустно, ибо определение кодировки не самая веселая и очевидная задача
Свое решение можно написать банальное — дернуть toCharArray(), развернуть массив на месте, создать новую строку из массива. И я в упор не вижу, что тут сложного, и почему все порываются это нагуглить.
А вот уже потом идут все вышеописанные нюансы. 99% задач решится вышеописанным. Если человек про них знает, то совсем хорошо. Если нет, то разберется на месте.
Ну Яндекс — это просто средняя по предложению на рынке компания, далеко не топ, если не нижние процентили…
Вот и методы соответствующие.
Если разбивать рынок по предложению, то Яндекс в топ не попадет. Видимо, окружение в виде ооо Ромашка влияет. Или то, что у hr тоже не лучшие по рынку условия и следовательно, не лучшие hr идут в Яндекс.
Это пример плохих HR. Если они не управляют процессом найма и инженеры его проводят, как захотят.
Может. Можно провести двойное слепое тестирование на уже работающих работниках, например.
Вряд ли кто-то спустил. Яндекс — большой завод из кучи довольно независимых отделов и групп. Продукты мирового уровня делают одни, а вас собеседовали другие — вот и весь секрет.
Если хотя бы год отработал в Java стеке, StringBuilder должен уже в подкорке находиться. Это те знания, которые надо выдавать инстинктивно, а не лезть в гугл.
Я годик программировал на яве 5 лет назад, и то помню StringBuilder.reverse(). А если человек, претендующий на должность Java будет это гуглить — то сразу вопрос — в чем причина? И ответов на это обычно два — или у него память как у золотой рыбки, или он просто все свои N лет опыта тусил на кухне с кофейком и девочками из PR отдела, вместо написания кода, а значит грош цена его резюме.
> ИМХО этот метод там избыточный
12 лет писать и не знать про базовые вещи. Вот об этом и речь — по резюме — 12 лет опыта, а в реальности — отсутствие знаний о базовых библиотеках используемого инструмента. Спасибо что подтвердили мои тезисы своим примером. Тащите и дальше org.apache.commons.lang для простейших операций со строками.
Но вот если человек минут 15 пытается вспомнить о том, как заменить одну букву в обьекте типа java.lang.String — то это таки клиника и 5 лет работы это не компенсируют. Реальный случай, кстати.
Заменять буквы в объекте java.lang.String нельзя, это раз. Итерироваться по строке, это, внезапно, тоже нифига не просто, это два. Перекладывание строки туда-сюда это не то, чем люди на работе занимаются, это три.
Перекладывание строки туда-сюда это не то, чем люди на работе занимаются, это три.Не совсем так. Сладкая тройка (String/StringBuilder/StringBuffer) — это такой микрокосм всего того, чем «занимаются на работе» 99% времени (неизменяемый обьект/фабрика без синхронизации/фабрика с синхронизацией).
Если же вы этого не знаете — то, скорее всего, вы программируете похорошо известному принципу: если достаточно долго месить чан с перловой кашей, в синтаксическом мусоре можно рано или поздно узреть лик Ларри Уолла.
И вас нужно бы отсеять… несмотря на 12 лет работы и прочее. Вот оттуда все эти задачки и берутся.
StringBuilder это не фабрика, а билдер, лол. Я не знаю, где на это тратят 99% времени, у меня есть для этого AutoValue и AutoFactory. Это так, на всякий случай, чтобы руками не писать.
Кто вам сказал, что я не знаю чего-то? Я сказал, что итерироваться по строке это нифига не просто. И написать этот реверс на 100% правильно ещё сложнее. Я думаю даже, что почти никто в этом треде за день этого не сделает. И тут ниже говорят, что даже реверс стрингбилдера не на 100% правильно работает.
Если 12 лет и н слышал — очень даже показатель. Товарисч, наверное, и строки в цикле конкатенирует (2 новых объекта на каждую конкатенацию — тот самый StringBuilder и сама новая строка).
Если вы постоянно используете Builder то есть повод задуматься.
Возможно не знаете про темплейтные движки
Возможно вы не используете PreparedStatement-ы
Возможно вы генерируете XML руками
Возможно вы настолько некомпетентны что придерживаетесь мифа, что String s = «aad»+«sgfdds» это медленнее чем append.
И кстати ваш комментарий про циклы и новые объекты может говорить о том что вы не представляете как на самом деле происходит работа над перформансом в реальном проекте
Давайте рассуждать логически.
Не очевидно, что StringBuilder содержит реверс. Например ни Arrays ни списки не содержат на порядок более полезного reverse.
Поэтому если вы знаете про реверс в билдере, значит вы либо целенаправленно читаете по ночам Java API, либо использовали его. Но я, честно говоря, с трудом могу представить где он может понадобиться в реальной жизни.
А чтобы строку в массив превратить, нужно погуглить "js строку в массив", хотя ежу понятно, что нужно использовать split, а чтобы сделать из массива строку, .join('')
reverse() вы использовали в каком-то проекте или узнали когда изучали StringBuilder/готовились к собеседованию?
Я сейчас даже не вспомню, разврачивал ли я строку когда-либо в коммерческих проектах или нет.
Если иметь представление, как решить оригинальную задачу, любая производная не доставит проблем. Иначе «опытный» программист рискует застрять в гугле надолго.
— array[array.length] вызовет исключение
— что строки в Java иммутабельны
— что string1 + string2 даст новую строку, а не изменит старую
— что рекурсия потребляет память
— что char занимает 16 бит, а byte 8
и прочих банальных вещах.
В том то и проблема, что "банальные" вещи опытный разработчик держит в подсознании, на уровне инстинктов. И если спросить его внезапно и напрямую о такой "банальщине" — он вполне может и растеряться, хотя в спокойной обстановке мог бы книгу об этом написать с кучей примеров из личной практики. Со мной такое часто бывает, я часто решаю задачи вообще абстрагировавшись от тонкостей языка, и не считаю необходимым все это держать постоянно "в оперативке", иначе более важные и абстрактные вещи могу туда уже не поместиться. А еще опытные разработчики могут знать кучу всего того, чего не знаете вы, но вы даже не спросите их об этом, потому что ваши специализации не будут в точности совпадать и даже сформулировать вопрос правильно вы не сможете.
В том то и проблема, что «банальные» вещи опытный разработчик держит в подсознании, на уровне инстинктов.
Вот. Все описанное мной было написано этими «опытными разработчиками» при решении задачи. До окончания написания кода я их ни о чем не спрашивал. А вопросы задавал уже после. Получается, что у них нет ни инстинктов, ни знания.
А еще опытные разработчики могут знать кучу всего того, чего не знаете вы
В этом случае я за них буду только рад. Но мне нужно было найти человека в команду, который умеет делать хотя бы то, что умею делать я. Я Андроид разработчик. Мне не нужны специалисты в настройке компов, веб разработчики и люди играющие на пианино (было такое в резюме). Поэтому определенные задачи и определенные вопросы. Андроид разработчики, которые не знают 4 основных компонента из которых состоит приложение к сожалению мне ничем помочь в работе не смогут…
Но мне нужно было найти человека в команду, который умеет делать хотя бы то, что умею делать я.
Тогда, полагаю, ваш пример не особо годится для тотальной экстраполяции. Потому как хорошо сбалансированная команда состоит из членов взаимно дополняющих друг-друга в немного различных областях. Кроме того, и в разработке под одну платформу имеется куча специализаций, от работы с трехмерной графикой в играх до обработки изображений и CV. Все это требует немного разных навыков и подходов. Вы не поверите, но даже способность к игре на пианино может быть крайне полезной, если вы разрабатываете музыкальное приложение.
Более специфичные вопросы были дальше, и приводить их тут смысла нет.
"Базовые" — они только с вашей колокольни. Лично мне давненько не попадались задачи по развороту строк. Для меня "базовой" может быть теория графов или понимание того, что такое шейдеры и с чем их едят. Однако, это совсем не значит, что я не смогу довольно быстро стать лучшим в мире разворачивателем строк, если это потребуется. Такая способность (адаптироваться к задачам) — гораздо важнее того, что вам кажется базовым, и понять это можно только анализируя опыт кандидата, его реальные успехи и неудачи. Для начала — достаточно посмотреть на код какого-нибудь реального проекта, многое станет понятно даже если вы не будете вникать глубоко в детали. Тестовое задание — идеальный вариант, но, к сожалению, тестовые задания тоже очень мало кто умеет составлять.
Личный опыт когда «задачку» которую решал буквально вечером перед собеседованием(сисадминское про перечисление пользователей в AD на PS) на собеседовании отбило из памяти напрочь…
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 минут, а вот уже с учётом разных ужасов — это на «поговорить» с обсуждением дизайна и разных тонкостей.
Обе задачи хороши — хотя они сильно разные, конечно…
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
Наконец хоть кто-то сказал. А задачка-то перестаёт быть простенькой. Больше 5 лет пишу на джаве, и я вот так сходу не реверсну это строку на 100% правильно.
Даже если бы они и не развернули в этом случае строку :)
В задании кстати всегда давались в качестве примера только строки, в которых символ влезает в char.
что string1 + string2 даст новую строку, а не изменит старую
И по ходу дела ещё создаст пресловутый StringBuilder
Любому здоровому человеку очевидно, что если ставится задача перевернуть строку — то стандартными ф-ми пользоваться нельзя, даже если это явно не указано.
Серьёзно? С чего бы это? Видимо, я — нездоровый человек.
А когда завтра вашему "здоровому" человеку поручат на реальной работе набростать макетик сайтика он засядет на год за написание своего веб-сервера? Вдруг, он и на этот раз решит, что стандартными средствами пользоваться нельзя, полюс синдром NIH, ну, а задать прямой вопрос (и на собеседовании тоже!) ему религия "здорового человека" не позволяет. В шоппу такого здорового человека.
Это, конечно, с одной стороны верно. Но с другой — вам же не нужен на работе человек, который ничего не может сделать самостоятельно и на каждый чих будет «уточнять»? То есть подобное уточнение на собеседовании легко может сделать вас в глазах собеседующего полным дебилом, не способным к простейшим умственным операциям. Можно для полного образа еще слюну пустить.
Посмотрите, что такое архитектурная секция у фейсбука. Она вся про уточняющие вопросы т.к. исходно задают очень общий вопрос вида «напиши youtube».
Ну, а подумать совсем никак? А подумать и потом спростить? Если мне задают подобный вопрос, я, если знаю точно о существовании решения в библиотеке пересправшиваю, — можно ли его использовать. Если не знаю точно, переспрашиваю иначе, — а нет ли, случайно, в стандартной библиотеке какого-либо средства для решения этой задачи? — всегда такой вопрос вызывает у опрошающего положительные эмоции (и, возможно, плюсики в мою карму соискателя). Дальше — по-разному. Иногда говорят, — да, всё круто, молодец. — Иногда — нет такого нет, — или, — есть, но попробуйте ручками. — А вот если я показывают себя полным дебилом здоровым человеком и сходу бросаюсь переизобретать велосипед, они ведь так и думают, — ну и дебил здоровый человек! — Меня больше устраивает позиционирование себя в качестве ленивого и умного программиста, чем жизнерадостного трудолюбивого идиота. Ну, а если отказывают — значит им нужен был именно трудолюбивый идиот и это, определённо, не была работа моей мечты.
Быстрая сортировка тоже давно написана. Но ее часть может быть например использована для быстрого поиска К-го элемента в массиве (quick select). Опять же надо знать, как сортировка устроена.
Оба приведенных мною примера конечно можно нагуглить. Но когда-то люди их придумали именно на основе изучения других алгоритмов, в частности сортировок.
И пример из личной практики. Человек, явно не понимающий ничего в сортировках, умудрился делать вставку в сортированную коллекцию за O((N^2)*lgN), вместо O(lgN). Что при размере коллекции 1000 элементов дает примерно 7 000 000 (7 миллионов, Карл) операций, вместо 7.
А тут не работа, тут тестовое задание. И _здоровый_ человек учитывает контекст ситуации.
Могу только констатировать, что "в здоровом теле здоровый дух — редкая удача" и ваш здоровый человек весьма недалёк, если считает что на интервью оцениваются исключительно его навыки примитивного кодирования. Неужели кто-то всерьёз верит, что интервьюера в данном случае больше всего на свете волнует способность кандидата закодировать разворот строки? Нафига бы ему это было нужно? Как побочный эффект — да :). А так — нэт.
Его, конечно, еще волнует способность кандидата понимать очевидные вещи. Например те, что знание наличия ф-и в стандартной библиотеки его уж точно не спросят, а вот способность закодировать разворот строки — спрашивают весьма часто.
Даешь элементарную задачу — сделать разворот строки.
Не такая уж она и элементарная, если это корректный разворот UTF-8 или UTF-16 строк, а не просто массива из char.
Из «habrahabr» сделать «rbaharbah»то даже ваш пример с массивом байт подойдет.
стажеры такие животные, которые не обладают навыками. И ранее ничего полезного они не делали
Это пример, хорошего превентивного отношения к кандидатам, или шутка?
Про животных — шутка. Про навыки — это быль, как правило.
которые не обладают навыками. И ранее ничего полезного они не делали
Вот это вы мне сейчас живо напомнили приход на производство после техникума — «А теперь забудьте всё, чему вас там учили!»
А я и на ноуте от волнения по кнопкам не попадаю. Главное, что прохождение этого бумажного теста вообще ничего не говорит обо мне как о специалисте. Это проверка тупого навыка формирующегося из количества пройденных интервью а не решенных реальных задач.
arr = char[str.len]
for i = 0, i < str.len, i++
arr[str.len - i - 1] = str[i]
ret arr.join
Тут ведь проверяется базовое понимание computer science, можете ли вы вообще написать хоть какой-то код. К нам на синиора приходили люди, которые вообще код не писали. В резюме куча всякой всячины, а потом оказывается, что они кофе разносили, пару книжек прочитали и думали проскочить.
Лично я ничего плохого не вижу в коде на листочке или на белой доске. Сам попадал в такие собеседования — доска всего лишь инструмент донести идею.
Я обычно прошу любыми средствами объяснить мне алгоритм. Мне не важен синтаксис и подойдет все: псевдокод, блоксхема, какая-то адавая каша из C и Python, просто фразы на английском. При этом правда я все же прошу писать или слушаю и пишу сам со слов — иначе тяжело ориентироваться в ответе и углубляться в заковыки алгоритма.
Впрочем алгоритмические вопросы я обычно задаю персам низкого уровня. Ибо с ними обычно больше и не о чем говорить, а вот с более опытными я больше говорю о проектировании и подходах, предлагаю прикинуть как бы они реализовали с нуля какое-нибудь приложение, что выбрали в качестве платформы (фреймворка), какие слабые или узкие места они бы отметили у своего решения. И да, github я всегда смотрю, ибо положительный опыт найма по github уже есть.
Ибо с ними обычно больше и не о чем говорить, а вот с более опытными я больше говорю о проектировании и подходахПлохая идея. Проектирование и подходы — это хорошо, но оказывается что внушительный процент «более опытных» элементарно забыли как писать код. Вот для таких — «развернуть строку» в самый раз. Рассмеётся и развернёт — можно уже и о подходах поговорить… разведёт дискуссию о жизни на марсе, но код так и не родится — извините, но мы очень надеемся, что вы найдёте себе хорошее место работы…
Ну обычно в обсуждении на низкий уровень сваливаешься рано или поздно. А там все становится понятно.
Очень хорошая статья, хотелось бы, чтобы ее прочитало как можно больше эйчаров. Однако, корень проблемы таков, что у нее не существует простого, универсального и очевидного решения: "идеальный" процесс найма требует участия специалистов, которых просто нет (крайне мало) на рынке. Либо они заняты непосредственно разработкой и управлением и не могут выступать еще и в роли первичных и вторичных фильтров. Это рождает формальный процесс с формальными критериями, который кажется неадекватным, однако худо-бедно работает на больших числах. Но в частных случаях, ситуация конечно адовая, сам сталкивался не раз.
Чтобы написать что-то действительно новое и перспективное — нужно думать, много думать, много раз проверять возможные варианты, и даже возможно начинать с нуля на половине пути. Риски связанные с таким творчеством — достаточно высокие, но и выхлоп намного выше монотонной работы.
А для того чтобы выпустить новый продукт — нужен конвейер. Думать тут не нужно, достаточно правил и технического задания. Это у них в одну полную строчку помещается всего одна арифметическая или логическая функция — потому-что платят за текст.
бойкотируйте такие компании. Сейчас на рынке лютый голод, вы всегда найдете работу, даже отказавшись от пары лакомых кусочков.O rly?
Нет, серьёзно Вы правда в это верите?
По моему скромному опыту, вакансию займет как раз тот кто смог быстренько осилить дифуру. Потому что это максимум что может осилить проверяющий.
Иными словами поддерживаю в статью до момента предложенного решения проблемы.
Ув. Mehdzor давайте продолжим мысль. К примеру, я условный и даже дотошный(каких мало) владелец геймдев конторы и мне нужны реально хорошие фронт и бэк. Две вакансии. Даже если я
Тут уже серьёзная проблема. Причем настолько, что решением, я вижу, только переделку всей отрасли.
Работодатель, нанимая меня на работу, рискует: а вдруг я не справлюсь с возложенными на меня обязанностями?
Я, нанимаясь к нему на работу, тоже рискую стать бесплатной рабочей силой для затыкания очередной дыры.
Причем если на работу нанимается секретарша, токарь, или водитель, то все становится ясно в первый же рабочий день — кто и что тут из себя представляет.
А если инженер, разработчик берется за длительный проект… тут и через несколько месяцев не всегда можно понять — получается у него хоть что-то или не нет?
То есть основная цель собеседования — ответ на вопрос: подходят ли они друг к другу. Чтобы снизить возможные риски для нас обоих.
А для этого работодатель в ходе собеседования должен обозначить задачу, за которую мне предстоит взяться. А к сожалению, не у всех это получается.
Я же должен сделать вывод, смогу ли я эту задачу решить вообще, и какие ресурсы мне для этого потребуются.
А теперь вот вам первая реальная ситуация:
Я откликаюсь на вакансию (инженера-программиста, если что), прихожу на собеседование в кадровое агентство. Меня встречает очаровательная девушка. Приглашает «технического специалиста», которая начинает задавать мне вопросы, а все вопросы — из бухгалтерии. Точнее исключительно по программе 1С.
— Дык вам, оказывается, программист 1С нужен?
— Ну ведь у вас в резюме написано, что вы его знаете.
— Где это у меня такое написано?
Оказалось, что девушка просто не видела разницу между С++ и 1С…
Естественно развернулся и ушел. Что там в действительности требовалось работодателю — не знаю. Знаю одно — с такими кадровыми агентствами специалиста искать бесполезно — разве только вчерашний день найдешь.
После нескольких подобных встреч сделал для себя вывод — все предложения кадровых агентств лучше просто игнорировать, и не тратить время попусту.
На самом деле работник практически всегда рискует сильнее, нету никакого равного риска.
Почему работник? Если оформление белое, то как раз у работника риск максимум опять искать работу.
Чем рискует работник реально? Записью в трудовой о непрохождении испытательного срока? Свою зарплату за отработанное время он должен получить, даже если строчки кода написать не может.
Прихожу на собеседование. Меня встречает сотрудница отдела кадров. Ни слова не говоря, дает лист с тестовым заданием, отпечатанным типографским способом. Ну там какой-то хитрый запрос на SQL надо написать.
Тут же делаю для себя вывод: Если у вас такая текучка кадров, что вы не поленились отпечатать эти тестовые задания тиражом 1000 шт, то что я в такой организации забыл.
Развернулся и ушел.
Третья реальная ситуация:
Прихожу на собеседование. Разговариваем с главным инженером, примерно в таком ключе:
-Значит, мы делаем оборудование для пищевой промышленности. Например, есть у нас такая линия для изготовление маринованных огурцов. Вот таких. Попробуй. Вкусно? Так вот, все это давно нами производится, используется, но есть проблема, которую мы толком решить не можем. В последнее время наши заказчики (консервные заводы) хотят, чтобы…
Дальше пошел предметный разговор на темы «чего в щах не хватает?», «что делать?» и в
самом конце — «ну как, возьмешься?»
— Только я ни разу не знаток в консервном производстве, это ничего?
— Это все мы тебе расскажем. Главное, чтобы ты систему управления мог сделать.
То есть делаю вывод — В этом месте налицо понимание работодателем целей, задач. Надо браться. Взялся. Сделал. Причем с удовольствием.
А если бы мне вместо этого предложили головоломку решать… Скорее всего, тоже развернулся бы и ушел. Мозги тренировать — дело хорошее, но не на работе же!
Например, если в первой компании несколько тысяч сотрудников, то даже при низкой текучке 10-20%, тестовые задания уже можно печатать в типографии. И выдать базовое тестовое задание может сотрудник HR, а не высокооплачиваемый специалист, поскольку при таком количестве собеседований в день, это будет весьма много высокооплачиваемых человекочасов, которые можно потратить более эффективно.
А во втором случае — для меня непонятно, как с интервью с SQL запросом, человек переходит на решение бизнес-организационных задач по написанию системы управления — это не совсем техническая задача.
А во втором случае — для меня непонятно, как с интервью с SQL запросом, человек переходит на решение бизнес-организационных задач по написанию системы управления
Объясняю.
Конкретно 2 случай — SQL я, конечно, знаю. Но делать тестовое задание не стал. Понял, что я тут работать не хочу. Совсем не хочу.
Конкретно 3 случай — та система управления, которую от меня хотели, была совсем не бизнес-организационная. Напротив, это была насквозь техническая АСУТП. Система управления технологическим процессом, если вдруг кто не знает. Беседовали мы в основном про параметры ПИД-регуляторов, обратные связи, про устойчивость и робастность. То есть самая натуральная теория управления, есть такой раздел математики. На 4-5 курсе математических факультетов ВУЗов этот предмет изучают.
Без SCADA с OPC дело, конечно, тогда не обошлось. И без С++ с SQL, естественно, тоже. Но на собеседовании код С++ и SQL запросы меня никто писать не заставлял. (Раз уж программист, то должен это уметь).
Я просто хотел сказать, что (применительно к всяким инженерам-разработчикам-конструкторам) проверять навыки потенциального работника лучше начинать с внятного объяснения, чем ваша фирма вообще занимается, и какую задачу этому работнику, в частности, придется решать в первый же рабочий день. А дальше смотреть на ход рассуждений, что он, работник, собирается в этом направлении делать.
Вместо того, чтобы логические головоломки ему подсовывать или задачи из учебника по программированию для 1 курса.
А когда работодатель сам не может толком сказать, что ему требуется (к сожалению, это очень распространенная ситуация, особенно в больших организациях) то… неожиданно обнаруживается, что желающих решать задачи типа «сделай то, не знаю что» находится не очень много. А те, что находятся, быстро сваливают после появления дополнительного условия «если сделаешь неправильно, то пойдешь туда, не знаю куда».
И потом приходится слышать, что «Вот, все плохо, хороших специалистов сейчас не найдешь.»
Конкретно 2 случай — SQL я, конечно, знаю. Но делать тестовое задание не стал. Понял, что я тут работать не хочу. Совсем не хочу.
Причиной было тестовое задание отпечатанное типографским способом?
Вот сейчас вы написали нормальный комментарий с пояснением причин.
Ну там какой-то хитрый запрос на SQL надо написать.
Имхо где то кто-то когда-то выложил такие задачки. Ибо я подобное встречал уже не раз. Причем в стиле «мы запихнули в одну таблицу все что смогли и не смогли, а ты вот на, разрули»
Это все мы тебе расскажем. Главное, чтобы ты систему управления мог сделать.
Я вот на этом моменте почти умер от зависти.
― Steve Jobs
Задание, которое они делают дома, показывает, что навыками, заявленными в резюме, владеет меньше половины кандидатов.
Мы можем сколько угодно смотреть системы, в создании которых участвовал человек, но личный вклад с его слов понять очень сложно.
Наверное, хорошо тем, кто может написать приклад от и до в одиночку, там можно смотреть портфолио.
В нашем случае даже смотреть уже написанные человеком документы нет смысла, так как не ясно, кто делал ему шаблон, как происходил сбор и согласование информации, сколько человек участвовали в ревью, насколько этот документ актуален и адекватен реальности и что было в контексте.
Мы можем увидеть только то, что сделано красиво. Но насколько это правильно никогда не узнаем.
А когда мы просим нарисовать бизнес-процесс его собственной работы на прошлом месте или систему, которую он строил, у многих возникают непонятные заминки.
И что нам делать?
Вы сами все понимаете. Если человек не может внятно рассказать о собственной работе, то тут никакие тестовые задания не помогут. Таких перевертышей везде полно.
Что делать? Искать дальше. Может быть обратиться к агенствам, поковырять сообщества. Но серебренных пуль тут не вижу.
Как отказаться от теста при такой статистике лично мне не ясно.
Возможно, есть смысл обсудить, что в этом тесте быть должно для конкретной специальности и как делать выводы по результатам.
В таких случаях хорошо заходят практические задачи (устные). Например, как кандидат решит ту или иную проблему. У разработчика можно спросить как он будет бороться с лагами на экране, например.
В вашей сфере, уверен, есть похожие сценарии.
Устно можно сделать не все — не согласен.
Ну расскажет он подход, а потом выяснится что с доведением дел до конца, особенно с исправлением ошибок, у него проблемы и что?
Мне на практике не попадалось, что специалист последовательно описывает шаги решения различных ситуаций, но не может их воплотить на деле.
Если все настолько сомнительно, то можно узнать о предыдущего работодателя впечатление, например. В конце концов, если он опытный и работал больше, чем по месяцу в каждом месте, то значит руки есть.
В совокупности внятное и уверенное решение задач, рекомендации с прошлого места работы и хороший послужной список дает высокую вероятность профессионализма. И испытательный срок никто не отменял, если все же будет осечка.
Конечно. Тогда они отсеются уже на устных задачах, если опыта не набрались.
Про программирование, мне интересно: какую устную задачу вы рекомендуете вместо переворота строки чтобы понять, насколько человек владеет данным языком программирования?
Люди работаю годами и по навыкам остаются джуниорамиЭто прямое следствие нежелания работодателей оплачивать работу специалистов разного профиля для разных задач, а свалить как можно больше на одного сотрудника. В итоге такой человек-оркестр вынужденно лезет в смежные (и даже не очень смежные) области, вместо развития по основному профилю деятельности, и как специалист разбирается во многом понемногу, а глубоко не разбирается ни в чем.
Какой документ Вы от него ждете, приведите более менее формальное описание.
Спасибо.
Например, он должен уметь определять варианты использования системного и бизнес-уровня, различать их между собой, понимать связи и уметь их описывать.
Насколько это формально?
Моя специальность называлась «теория формальных систем», вот и спросил, про какие системы у Вас ведется аналитика.
Если это внутренне определение компании, то тогда вопросы кандидатам некорректны, откуда соискателю знать их. Если внешнее или общеизвестное — ну так будьте так добры дать пруф. Ну если внутренне — дайте, по возможности, если не секрет, формальное, пусть не строгое, но определение. Что в вашей компании называют системой и в чем состоит анализ?
Системы и их анализ нам нравится ))
Спасибо
Вот профстандарт СА: 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 — так это совсем неясно. Определил сценарий и название даже придумал — это и есть создание алгоритма?
С одной стороны это правильной документ и должно быть одинаковое понимание у всех. В этом darkboatman полностью прав.
Но я не вижу в этих документах разработку алгоритмов функционирования. Не обзательно новых математических алгоритмов.
Там конкретные действия — поди принеси отнеси составь справку и т.д.
Но кто составляет алгоритм работы предприятия? Все системы управления нынче компьютерные, полностью алгоритмизированы должны быть — компьютеры совсем не понимают неформальное общение.
Вот в недвижимости понятно, кто архитектор, кто проектировал, кто бетон клал и арматуру вязал.
А в IT, куда более формальном, по сути своей существенно формальном занятии, пропущен основной момент. Идет подмена составления алгоритма и его реализации.
Это как приглашаешь «питонщика» и говоришь: — ты, братец, подъезды строил? — Да, конечно, вот можно посмотреть. — Ну и молодец, давай нам тоже вот тут подъезд сложи на 22 этажа и покрасивше и что бы «богато».
В классификаторе не нашел пункта — попробую еще раз изучить внимательно.
Помогите, ткните пальцем в номер. Мне как то ближе H03.6 — определение ключевых сценариев. ТОлько нужно тогда дать хорошее определение понятия «сценарий»
03.6 — это откуда? я не нашел
— программист (разработчик) (алгоритмы работы ПО)
— архитектор ПО или систем (алгоритмы взаимодействия частей внутри больших приложений или систем)
— Системный аналитик (алгоритмы работы пользователей с системой, алгоритмы взаимодействия компонентов системы)
— бизнес-аналитик (алгоритмы выполнения деятельности)
Ни одна из этих профессий не занимается исключительно алгоритмами, так как функционирование неразрывно связано со структурой и методами ее «сборки» и доведения до рабочего состояния.
Чистые алгоритмы — это математик.
А рынок всегда в динамическом равновесии. Если вилка ЗП не устраивает, можно тест и не делать.
Ну и касательно вилки — ее все еще редко озвучивают до получения офера, а если и озвучивают, то часто без верхнего предела.
Среднее время выполнения данного задания для специалиста искомой квалификации обычно известно. Если видно, что тут многие часы работы и нет сомнений в своей квалификации, значит проверяют не технику, а лояльность, далее см. вилку ЗП и свое к ней отношение.
Вилку можно спросить в самом начале. Я так делаю всегда, никто еще не отказался назвать, многие мои знакомые тоже так делают.
Мы, когда ищем, тоже вилку сразу согласуем с кандидатом, так как тратить обоюдно время при несовпадении ключевого параметра смысла нет.
Если у вилки нет верхнего предела или ее не называют, можно самому назвать цифру и сказать, что ниже разговора не будет, если это ок, давайте тест.
см. вилку ЗП и свое к ней отношение
Сомневаюсь, что найдется вилка, которая заставит меня пересмотреть свое отношение к тестовым заданиям. Впрочем, может найтись тестовое задание, которое будет достаточно интересным, чтобы не думать о вилке.
Мы, когда ищем, тоже вилку сразу согласуем с кандидатом, так как тратить обоюдно время при несовпадении ключевого параметра смысла нет.
Это вы большие молодцы, на моей практике, компании с точной вилкой на входе адекватного диапазона не встречались.
Если у вилки нет верхнего предела или ее не называют, можно самому назвать цифру и сказать, что ниже разговора не будет, если это ок, давайте тест.
Многие HR даже не будут думать, сказав, ок, такое в принципе возможно, вот вам тестовое, после чего в офере предложат совсем неадекватную с точки зрения разницы цифру (со мной лично такого не случалось, но наслышан от коллег).
Сомневаюсь, что найдется вилка, которая заставит меня пересмотреть свое отношение к тестовым заданиям.
Ну тут хозяин-барин.
Многие HR даже не будут думать, сказав, ок, такое в принципе возможно, вот вам тестовое, после чего в офере предложат совсем неадекватную с точки зрения разницы цифру (со мной лично такого не случалось, но наслышан от коллег).
Быстро потеряют репутацию и надолго останутся кузницей кадров и полигоном экпериментов для студентов. Мир ИТ очень тесен
Минимально вменяемый менеджер, даже если он HR, не будет так врать.
При этом я встречал точку зрения, что это кандидат хочет Х денег, но на самом деле он прогнется, когда мы ему предложим меньше или впишем под Х оклад+премию.
Это случается, когда им кажется, что торг уместен. А кажется им это по тому, что предыдущие 10 прогнулись на такой офер. Если сразу сказать, что торга не будет, они не будут тратить как минимум свое собственное время.
А если они сильно за вас цепляются, то на офер можно сделать и встречное предложение с собственной цифрой. Все же это рынок и торг подразумевается.
Не надо сбрасывать со счетов то, что люди, которые много набирают сидят на статистике. Как раз HR не понимает ничего про вашу работу, но у него обычно отрощена интуиция на оговорки, лишнюю информацию в резюме, пропущенные запятые и подобные штуки. Они могут чувствовать вашу собственную неуверенность и слабости лучше вас.
В моем опыте меня пытались гнуть ровно до того момента, когда я просто перестал отгибаться вниз. Это потребовало в том числе отсеивать два приглашения из трех. К счастью рынок позволял.
А вообще надо понимать, что там сидят такие же люди со своими недостатками, но которые все же не ставят целью вам досадить — они решают свои задачи.
Не вижу никакой проблемы в том, чтобы выполнить тестовое задание за бесплатно. Более того, по тому, как именно составлено это задание, можно многое понять о будущих коллегах (обычно это делает какой-нибудь тимлид). Проблема тут скорее в составляльщиках самих заданий: у одних большие проблемы с адекватной оценкой объема и сложности работы, у других — с четкостью формулировок и смыслом, а третьи — вообще способны наделать кучи орфографических ошибок, после которых единственное что хочется сделать — это фейспалм. Но тестовое задание, как таковое, и его последующее обсуждение — это практически единственный способ лучше понять как человек мыслит и как он будет решать задачи. Мало у кого профиль в гитхабе годится на роль полноценной презентации этих качеств.
У меня в друзьях три системных аналитика, но ни один не может внятно объяснить, чем он занимается и что делает. А то может я тоже могу так? :)
Основная цель вида профессиональной деятельности:
Разработка, восстановление и сопровождение требований к программному обеспечению (далее — ПО), продукту, средству, программно-аппаратному комплексу, автоматизированной информационной системе или автоматизированной системе управления (далее — системе) на протяжении их жизненного цикла
Например: когда к программисту начинают ходить 10 человек и просить добавить-убрать-добавить-убрать-перевернуть-перекрасить или другим способом сделать 7 прозрачных перпендикулярных линий красного цвета, и все это одновременно в процесс вставляют системного аналитика, который поймет всех десятерых и даст полные и непротиворечивые требования, а потом поможет формально им доказать, что сделано все, о чем договаривались.
Методов и подходов к выполнению этой работы в зависимости от кучи параметров системы, проекта и окружения громадное количество.
Если еще и учесть, что между требованиями, входящими в проект и требованиями, спускаемыми программисту есть несколько циклов проектирования, то в деталях все ваши знакомые аналитики могут за всю жизнь не сделать ничего одинакового.
Так что теперь, если вижу опросники на психотипы, сразу извиняюсь и ухожу — все равно шанс около нуля, а время тратить — нет уж, спасибо, я найду на что потратить время.
Что касаемо кода на листочках — это полный швах. Сначала я был разочарован в себе и сильно подавлен подобными задачами. Но заметил одну закономерность: туплю при решении, но по приходу домой код с решением задачи пишется как по маслу. Может, сказывается то, что я думаю о решении после фейла, и задача для меня становится не свежей. А может и то, что обстановка не та, сосредотачиваешься на форматировании кода, кривом почерке и каляках-маляках из-за того что ручку в основном используешь при схематичном отображении чего-либо или когда надо расписаться. Решил вообще не париться и никогда не решать задачи на листочках, если только это не совсем какая-то элементарщина из одной функции. Всегда перед назначением собеседования спрашиваю про его формат, и отвечаю отказом если мне говорят о паре задач на листочках.
Тестовые задания же вообще очень ненадежная вещь. Встречался с тем, что делал тестовое задание дня три, потом мне назначили собеседование, и никто на нем не знал, что тестовое задание мной было выполнено. Т.е. hr тупо проверила наличие файла с результатом, а дальше никуда тестовое мое не пошло. Встречался с тем, что не спал четыре ночи и как угорелый проектировал архитектуру, вылизывал код, покрывал его тестами, а бизнес-задачу понял немного не так, и все мои труды завернули за минут 10. Самые приемлимые тестовые задания я получал только после успешных собеседований с теоретическими и практическими вопросами. Они были небольшие, на час-два времени, но при хорошем впечатлении о фирме после собеседования всегда была мотивация их сделать.
Я только один раз сталкивался с тем, что решение на листочке требует синтаксиса (и да, отказался). Во всех остальных случаях всех устраивал адовый псевдокод.
В любом случае, я никогда себя не чувствую комфортно при написании кода на листочке — руки под клавиатуру заточены. Даже если это элементарные sql-запросы. Вспоминаются курсы паскаля в старших классах сразу. Вот там нас за каждую пропущенную точку с запятой в тетрадке гнобили и занижали оценки :)
Но заметил одну закономерность: туплю при решении, но по приходу домой код с решением задачи пишется как по маслу. Может, сказывается то, что я думаю о решении после фейла, и задача для меня становится не свежей. А может и то, что обстановка не таТоже так бывает. У меня есть мысль, что это связано с переходом информации из оперативной памяти в долговременную. Когда она только появилась, для анализа нужно переключать фокус внимания на разные аспекты «вручную». Потом запомнятся основные моменты и установятся взаимосвязи, и при повторном обдумывании нейроны сами будут выдавать сигнал на знакомые паттерны.
Еще мне удобнее прочитать новую задачу до обеда, а не откладывать на час. Можно даже не думать о ней, но при втором прочтении анализировать требования проще.
Возможно также, что при этом задействуются разные отделы мозга. На собеседовании идет прямое общение, которое отвлекает внимание и не дает полностью переключиться на задачу.
Самые хорошие впечатления у меня от собеседований в форме диалога. Где людям был интересен мой опыт, и где по моему опыту задавались соответствующие вопросы из разряда «А как было это реализовано? А с какими проблемами при реализации столкнулись? А как бы сейчас сделали?». И соответствующие теоретические вопросы по стеку технологий, чтобы понять, насколько глубоко я погружен в ту или иную область. Сразу понимаешь уровень специалиста, который задает тебе вопросы и рулит собеседованием. И порой из-за одних вопросов и объяснений от таких людей уже возникает желание с ними работать.
А даже если не возникает то приятно провели время. Но все чаще встречаю каких то агрессивных айтишников. Причем если в первом случае, в ответ на мои увлеченные рассказы о небывалых приростах производительности, получив «ч0, индекс поставили» я просто удивился. То получив хамство на просьбу предоставить расчет сервера 1с на базе Postgre вместо MsSQL, я просто выпал в осадок.
В целом автора поддерживаю, но в крайности впадать не стоит. Просто инструмент должен соответствовать цели, а не высокопарным идеалам.
Я за последние три года отсобеседовал около сотни кандидатов, а уж сколько резюме просеял…
Но вот банальными тестиками не увлекался ни разу. На предыдущем месте у нас было три фильтра.
Первый — просмотр резюме и ссылок на работы, если есть. Много можно понять уже тут. Даже по тексту резюме…
Второй фильтр — собеседование. За жизнь, за опыт, чего знает, как может рассказать о своих прошлых успехах. Очень много проясняется, когда человек сам рассказывает о своём опыте. Многие не могут ничего внятно рассказать, кроме «ну, у нас там сайт был, к нему модули, и чего говорили, я там правил», ноль конкретики и фига толку… Немного пофилософствовать, например про паттерны, но только те, которые человек сам знает (точнее говорит, что знает). Немного про насущные технологии. Главное на этом этапе — оценить способ мышления, багаж знаний и т.п. (Забавно, когда говорливый тимлид наизусть диктует описание десятка паттернов, на не может объяснить, чем отличается адаптер от враппера и от декоратора, а на прямой вопрос отвечает, что вообще это одно и тоже, только названия разные). Потом про нас, про задачи, про технологии. Очень интересно, что человек в ответ спросит…
И уж третьи этапом, если после собеседования мы друг другу нравимся, был некий тестик на общую соображалку. Давали на дом. Суть теста — ряд вопросов на самые разные темы от sql до office interop. Пользоваться для ответов можно чем угодно. Хоть гуглом, хоть соседом Васей :). Реально его делать — часа два-четыре, мы давали кандидату день (на его выбор). Цель теста — понять, как человек будет решать проблемы. Сможет ли понять суть вопроса и найти хоть какое внятное решение. Но главное не количество правильных ответов, а подход… Ибо компания была маленькая, нам были нужны в достаточной мере самостоятельные разработчики.
Моё имхо: умного и желающего учиться многому можно научить, да и сам он освоит самое важное. А вот тот, кто не желает учиться… ну… code monkey… Иногда и такие нужны.
Хотя я признаю, что в зрелый проект на поток задач желательно (а иногда и нужно) брать того, кто уже знает большую часть нужного… И тогда, да, тест быстрее всего прояснит картину.
Кстати, по поводу помощи «соседа Васи» — у нас работает девушка, регулярно советующаяся с бойфрендом в случае каких-то затруднений с кодом. Он, похоже, неплохой специалист — т.к. результат нас вполне устраивает.
reduce — вывести строку "итого за год" по пришедшему с сервера массива данных по месяцам
map — преобразовать массив данных по месяцам сложной формы в массив плоских объектов из строк для <td>
Ну и довольно популярная задача — это различные калькуляторы и конфигураторы. Они, в целом, тоже веб-приложения почти целиком на фронте, и лишь иногда, в конце процесса, скидывают готовый заказ на сервер.
Поэтому ваши тезисы устарели года на 4.
Не тащите в одну кучу 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 не нужна.
Хм… Оказывается не так давно, только в 2009, в es5. Почему-то думал, что это es3, прошлое тысячелетие. И даже по факту это JavaScript 1.6, 2005-й год.
С вот этого: "Я собеседовалась на позицию фронтенд разработчика. За год работы я ни разу не использовала ни map, ни reduce, просто не было необходимости."
Собеседовались, значит хотели работать в другом бизнесе, или как минимум проверяли свои возможности для этого.
Любой js фреймворк изучается за 1 день беглого чтения туториалов.
Если бы это было так, вы бы давно его изучили и не высказывали недовольства по поводу неиспользования jquery.
Это вы, похоже (читал и следующие ваши комментарии) знаете процентов 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 млн евро)
И тот же работодатель, когда посмотрит на то сколько часов ушло на собеседование, будет всячески искать способ сократить количество потраченных ресурсов
А по поводу второго я совершенно согласен, нормальный работодатель должен быть заинтересован в максимальной эффективности процесса поиска новых сотрудников, вроде бы данный пост на эту тему и поднимает дискуссию.
Закон приняли, через 2 года вы должны ему соответствовать или штрафы на территории EU. А выполнять должны все, если работаете с даннымиграждан EU.
Билет на поезд Ульяновск-Самара с фамилией продали гражданину EU, всё приплыли. Причём у этого же гражданина может быть двойное гражданство, то есть вы даже не узнаете что он гражданин EU
Итого, на вас и свалилось +100% работы с жёстким дедлайном.
Вот что должно быть в консерватории, чтобы подобные шутки судьбы выдерживать?
Откуда вы знаете про большинство?
Сортировки и те же деревья самоучки вполне могут пройти уже к концу школы. Во всяком случае школьные олимпиадные задачи они про это.
Давайте конструктивно, какую универсальную область знаний вы можете предложить для разговора?
Из личного опыта, касающегося относительно крупных контор:
— Яндекс. Был как положительный, так отрицательный опыт общения с ними.
Положительный был давно. Душевно поболтали скайпом по поводу вариантов, как можно разрабатывать один из продуктов компании. Обе стороны остались довольны диалогом.
Отрицательный — пару лет тому как. Питерский офис. Началось с отсутствия первого интервьюера. Пригнали какую-то девочку, которая не вовремя оказалась на рабочем месте. Дальше — прогон по таким же случайным людям. Задачи, не имеющие отношения к реальной жизни. Попытка устроить стресс-тест — то ли у чувака действительно время поджимало, то ли хотел посмотреть реакцию. Печаль и омерзение. На всем протяжении собеседования не мог отделаться от ощущения, что интервьюеры относятся к этому диалогу исключительно как к экзамену. На какую позицию я собеседуюсь — не знала ни HR, ни интервьюеры. В конце это перестало быть понятным и мне. Резюме товарищи собеседующие скипанули.
Выводы для себя сделал.
В настоящее время у Яндекса поражает соотношение пропаганды и результата. Но, кажется, у них в последнее время было перетряхивание рекрутинга. Насколько успешно — не знаю.
— Dell EMC
“Работать в нашем банке — большая честь!”. Мы — крупная международная компания со всеми вытекающими. Отовсюду.
Три собеседования. На ин. язе. Не прочитано не то, что резюме, но даже краткая выжимка из него. Никем. Ни один из интервьюеров не смог внятно описать задачи, характерные для предлагаемой позиции. На третьем собеседовании качество связи было таким, что я слышал каждый второй слог каждого третьего слова. Как по оптике, так и по мобильной связи. Предполагаю проблемы на той стороне. Был бы и рад развить в себе дедуктивные способности заранее — но не предполагал, что будет предложена игра “Телепат”. Тем, кто возмущается решением задач на листочке или доске (я с вами заодно, кстати) — это не финал интересных вариантов! Обойдите в полночь бинарное дерево голосом без рекурсии (предположим, что Вы правильно поняли вопрос, невзирая на помехи в канале). Смогли? Классно! А я нет. Почему? Да потому что бинарные деревья не так часто растут на дороге современного разработчика, а держать в голове подобную белиберду и думать над ней в середине ночи — спасибо, нет. Надо будет — нагуглю за 5 минут, али сам придумаю. Кстати, для предлагаемой позиции эти знания совершенно не требовались.
Желаю компании Dell EMC успехов в развитии, а также закупки партии пар коробков, соединенных ниточками — для обеспечения комфортного общения интервьюера и интервьюируемого.
Выводы для себя сделал.
— JetBrains
Адекватный диалог. На удивление.
Странная статья. Хочется спросить: а если Яндекс, Гугл, и т.д. не умеют нанимать сотрудников и соответственно делать продукты, может вы покажете свои и мы сравним? А то обычно такие облечители сами никакую алгоритмическая задачу сложнее разворота списка решить не могут и соответственно у них и результаты такие же: плохо спроектированные, не расширяемые, глючные и медленные поделки с кучей костылей. Но зато много "опыта". Я вам по секрету скажу зачем тот же Яндекс на алгоритмы так внимание обращает: потому что им интересны люди с фундаментальными знаниями, потому что имея их можно сделать очень многое(знание некоторых принципов возмещает незнание некоторых фактов). А при подходе вашем вы просто смотрите насколько много фактов знает кандидат. При этом способность анализировать никак не проверяется. Проще говоря вас интересуют ремесленники, а Яндексу, Гуглу и прочим нужны учёные.
Мне кажется нужно создавать сообщество, которое будет бороться с такими компаниями, выставляя их задания на показ.
Тестовое задание обычно даётся на уже реализованную, работающую часть продукта. «Мы понимаем, как делать такие вещи, а поймёте ли вы?». Портфель — что портфель? Как вы его делали, этот портфель, мы не знаем. И работать нам нужно не с вашим портфелем, а с нашими задачами. И откуда вообще взялась мысль, что тестовые задания — это попытки скроить на оплате труда? Всё равно решение будет неидеальным, неполным, его надо доводить до ума, стыковать с другими частями продукта — и всё это без оригинального разработчика! Пфф, да проще написать самим, чем доводить до ума то, что сделал какой-то соискатель на коленке за пару часов.
2. Для проверки работника придуман испытательный срок
3. Работодатель хочет что бы ты решил идеально, иначе какой смысл давать такое задание.
4. Работодателю важно как можно быстрее выпустить продукт, не потратив много ресурсов.
В чем суть я сейчас объясню, продуктовые компании b2c, или b2b-b2c, применяют модель скорого выпуска продукта, график хайпа можете погуглить (Garther Hype Cycle for Emerging Technologies) маркетологи и бизнесмены фактически следуют этому, кто успел первый выпустить продукт, тот и молодец. Так же есть график продолжительности жизни компаний (Everage Company Lifespan) можно увидеть, как сокращается их жизнь, когда они не могут ничего нового придумать. Поэтому все эти тестовые задания на реальном продукте это пыль в глаза соискателю, все хотят сэкономить на ресурсах. Возможно кто-то им понравится, но остальное это сбор идей.
Так что не надо меня убеждать, что решать рабочий продукт, как тестовое задание — это круто для соискателя, попытка решить свои проблемы за счет других, это обман. А для соискателя сплошная трата времени. По такой логике, решив их проблему, можно спокойно создавать продукт без них или продать кому-то.
2. Воу-воу, зачем тогда собеседования? Нанимаем всех подряд на испытательный срок, у нас же денег много, времени на возню с документами — ещё больше, уволить по статье за несоответствие — в десять раз проще, чем не взять вообще.
3. Дискутировать с религиозным фанатиком не вижу смысла.
Тесты is only thing that matters
Потому что люди хотят тимбилдинги и душевную болтовню, а не работать.
По скайпу прислал этот 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).
попробуйте в уме прикинуть и дать ответ
я дико извиняюсь. Вот только для собственного развития интересуюсь: а нафига? У меня при просмотре этого мысли:
— лень
— воткнуть бы в иде да автоформатером
— а с другой стороны а пошли они со своими B extends A. Ни читать ни писать такое не желаю.
"… Благодарим за выполнение тестового задания.
К сожалению, вынуждены отклонить вашу кандидатуру, т.к. не выполнено указанное в задании требование использовать систему сборки cmake.
Желаем успехов в дальнейшей работе..."
Видимо cmake намного сложнее qmake что считается что на освоение потребуется неоправданно много времени, но я думаю исходники дальше hr не ходили — зря я написал в письме что не юзал cmake
Да код и не скомпилируется, но тот кто проводил собеседование мне минут пять рассказывал какой будет правильный ответ и почему и как static влияет на ответ, потом еще пару вопросов задал о вещах (наверно с хакотрона какогото ) которые за 7 лет ни разу не применялись в моей практике.
Наблюдения в качестве соискателя: самое главное пройти барьер HR. Как правило у них смутное представление о том что в действительности нужно компании. Лучше всего проходить собеседование с ЛПР. Как правило эти люди интуитивно чувствуют подойдет человек или нет.
Помню забавный случай, когда в конце 90-х проходил собеседование на программиста. Было много тестов, ряд из которых требовал просто запоминания, это раздражало. В результате после заключительной фазы с гендиром, когда он произнес: «программист из вас так себе...», я дал ему развернутую оценку его системы найма и ее кривизну.
В результате он предложил возглавить отдел программистов )
Автор статьи упускает один важный момент. У меня в арсенале есть задачи, которые я могу дать и junior'у и senior'у. Но вот оценивать я их буду по-разному и смотреть на разные вещи. Там не будет сложного алгоритма. Но её можно разбить на подзадачи, использовать нужные структуры данных или алгоритмы из стандартной библиотеки. Заметил ли кандидат граничные случаи? С senior'ом можно поговорить, как это протестировать. Можно обсудить особые варианты постановки задачи: ввести многопоточность, а что есть памяти мало а данных много, а если памяти наоборот много? И вообще, моя задача — найти сильные стороны кандидата. Я возьму простую задачу и буду от нее раскручивать беседу в разные стороны, нащупывая границы знаний.
Ну и это не отменяет того, что претендующий на senior'а получит и архитектурные задачи. Просто этот навык проверяется отдельно от навыка писать нормальный код.
Хочу сказать, что ничего, кроме стандартной 'findSubstringInString', в голову не приходит и не должно.
Кстати, недавно с вами(яндексом) общался ради интереса. Был в таком шоке, что пошел писать эту статью.
Итак, собеседование в яндексе это:
- Когда вас игнорирует HR по несколько дней.
- Когда на собеседование с вами никто не приходит. А в качестве извинений дают промо код на лапшу.
- Когда CTO проекта говорит, что тех. собеседования у вас бесполезные и он не видит в них смысла, но ничего не может с этим поделать.
- Когда на добровольное предложение сделать реальное живое тестовое задание объемом в пару рабочих дней(!!!) HR кидает ссылку на сборник математических задач с просьбой подготовиться.
Пусть вывод за меня сделает утка:
P.S. До тех. собеседования дело не дошло после этого.
Хочу сказать, что ничего, кроме стандартной 'findSubstringInString', в голову не приходит и не должно.
Ну задача все-таки была не найти фиксированную подстроку в строке, а найти подстроку, удовлетворяющую определенным свойствам. Готовой реализации в STL нет. Человек не смог решить задачу даже неоптимальным способом: перебрать все возможные подстроки и каждую проверить. В том числе не смог решить явно поставленную мной подзадачу: перебрать все подстроки в строке.
Если задача решается функцией из стандартной библиотеки языка и кандидат это знает — это большой плюс. У того же facebook'а есть целый кластер задач, которые легко решаются с использованием std::nth_element. Правда все равно попросят реализовать сам алгоритм.
По остальным пунктам: я ни в коем случае не говорю, что процесс хорошо налажен. Проблемы есть, их решают. Я не могу сказать ничего конкретного про Ваш случай, это вне моей компетенции. Но пункты 1 и 2 это про качество самого процесса, а не про подход в целом. Это не доводы за/против того, как устроено собеседование. Но да, это не нормально, это считается проблемой и это лечат. Третий пункт комментировать не могу, это пересказ личного мнения другого человека, которого я не знаю. А про четвертый… есть много причин, почему тестовое задание не может быть единственным критерием. Результаты интервью должны быть сравнимыми (заставить всех тратить пару рабочих дней на задание нельзя, это неуважение), оценивать должны несколько независимых человек (для получения объективной оценки), как проверить, кто именно выполнил задание?
P.S. Я даже не утверждаю, что типовые задачи с собеседований это идеальный вариант. Некоторые компании пытаются искать другие формы. В uber'е, например, практиковали тестовое задание на ноутбуке в onsite интервью. Но весь этот процесс значительно более сложный, чем Вам кажется.
Или «люди искусства» с тонкой душевной организацией, которым на собеседовании лень даже попытаться решить задачу.
В первую очередь, интересует Человек, который станет частью команды. И если всё, что он может — это обижаться на просьбу написать простенький алгоритм, то скорее всего, мы не сработаемся.
Такие персонажи попадаются, с такими запросами… извините все остальные, но я вам не верю. Никому из вас.
Хотел бы верить, и стараюсь с вами говорить о том, что вы типа знаете, мало ли чему-то полезному научите. Но чаще обламываюсь.
Но давайте прикинем.
Какой процент ВСЕХ программистов/разработчиков способен пройти собеседование, где задают задачки на алгоритмы (деревья, графы и т.п.)? Ну явно меньше половины. Мне даже кажется, хорошо, если таких будет процентов 20%. Хорошо это или плохо — это отдельный вопрос.
Итак, 80% не способны. Им это и не нужно. И скорее всего бОльшая часть из них вполне себе отличные разработчики.
К чему я веду? Да это уже далего не первая статья, где закидывают тухлыми помидорами гуглы и фейсбуки с их подходами. Догадываетесь почему? Потому что большинству такие собеседования не по зубам. Известно же, что при таком подходе ложно отрицательных решений (не берут отличного разработчика) очень много.
Вот из-за этого люди и любят такие статьи.
Ключевая мысль заключается в другом. Что такой подход дает к тому же ложно-положительные. И дает их слишком часто, судя по результатам работы таких компаний.
Задача большинства HR-ов и помогающим их техспецов по факту не найти лучшего кандидата, который согласится на имеющийся бюджет, а найти приемлемого за разумные сроки. Ложноположительные ошибки их волнуют куда больше чем ложноотрицательные, если положительный результат достигнут.
Проблема в том, что в нашей стране отсутствует понятие нормального HR. Давайте взглянем правде в глаза. Кто идет в HR? Девочки проучившиеся на социологов/экономистов/юристов/историков/маркетологов, но в реале ничего из себя не представляющих. Ведь даже в IT индустрии они отнимают минимум 1/3 рекрутингового процесса. А потом же, именно они растут по должности в HR отделах и, соответственно, так или иначе формируют эту порочную практику. HR и рекрутингом должны заниматься те, кто это действительно любит, а не вчерашние "мамины отличницы" неожиданно обнаружевшие, что их красные дипломы по политологии никому и даром не нужны.
Спасибо за статью.
А вариант анкеты от работодателя вида:
Вопрос N: <тема вопроса>
- Знаю хорошо, очень много раз использовал на практике во множестве различных кейсов;
- Знаю хорошо в теории, но на практике мало использовал;
- Остаточные, но глубокие знания: быстро восстанавливаются чтением манов/легким гуглением;
- Остаточные, поверхностные знания: уточняется углубленным чтением манов/гуглом, требуется время на «кэширование» этих знаний.
- Не знаю, никогда не работал с этой технологией
Пункты В и Г — это соответственно А и Б, но спустя некоторое время(год? два?)
И как можно точнее разбить весь стэк используемых технологий на такие подтемы, чтобы выяснить насколько кандидат подходит.
После анкетирования можно предложить кандидату сделать "тестовое задание" используя представленный стэк технологий: сделать что-то, используя имеющийся фреймворк/библиотеку/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, а понимать основы, уметь видеть подходящее и применять это для решения прикладных задач. Это гораздо важнее, на мой взгляд. Умение видеть и проектировать архитектуру на расширение и видеть лучшие эффективные и простые подходы к реализации чего-либо и конечно умение писать понятный сопровождаемый чистый код также очень ценно. Всё сказанное, конечно, не отменяет того, что разработчик хотя бы должен уметь оценивать сложность алгоритмов, это действительно может пригодиться даже при использовании готовых библиотек.
Всё сказанное, конечно, не отменяет того, что разработчик хотя бы должен уметь оценивать сложность алгоритмов, это действительно может пригодиться даже при использовании готовых библиотек.Дык вот тут, собственно, собака и порылась!
Как вот тут было написано: опытные разработчики используют его ежедневно, не задумываясь, на уровне рефлексов. Делают они это для грубого анализа кода, который читают, пишут или только собираются написать. Обычно быстрого анализа асимптотики достаточно, чтобы исключить случайное появление сильно неэффективного кода.
А как вы собираетесь это делать если вы понятия не имеете о том, из каких базовых кирпичиков строится ваш дом и сколько они стоят?
Я работаю в Tesla и меня иногда приглашают провести интервью. Всегда трачу не менее часа для детального изучения что делал человек до этого. Читаю его диссертацию (если есть), статьи, блог, смотрю проекты на GitHub. Т.е. к моменту интервью у меня может и не быть к кандидату вопросов — и так все понятно.
А теперь откройте и посмотрите продукты таких компаний. Посмотрите приложение маркета, фейсбука, мейлру почты, контакта, ютуба, альфа банка и так далее, и далее, и далее. Как впечатление? Эффективен подобранный ими персонал? Эти компании все славятся своими техническими собеседованиями.
Что с ними не так? Они все выполняют свою функцию и довольно удобные, особенно приложение 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 запустить кататься по вашей логике, тоже успех ведь. Лишь бы продали проект, кому нужно.
В Сбертехе есть то же самое.
Так что гигантизм и монопольное положение совершенно не гарантируют достойного продукта. Просто в какой-то момент взлетели в лидеры, либо уже достался действующий ресурс (как у Сбера)
Вот смотрите. У меня опыт в разработке программ 7 лет, если не больше.
А высокомерия на все 30.
а там сидят юнцы младше меня на 10 лет и начинают задавать умные вопросы.
Ну да, разве достойны эти глупцы задавать вопросы великому гению?
Они не читали моё резюме, не читали мой опыт — им это всё похрен.
Король отослал им листик, они должны принять решение и не задавать королю глупых вопросов.
Так вот, разговор о том, что прихожу я такой красивый, в шлёме, опытный путешественник, на собеседование, и начинают меня спрашивать про то, как же устроен велосипед, из чего он состоит, как всем этим управлять, как смазывать, как ремонтировать и т.д.
А я часто не знаю, как и называются эти детальки то
Серьезно? Вы профессионально ездите в горы на велосипеде в течении 10 лет и не знаете из чего он состоит, как его смазывать и ремонтировать? Что вы за ездок такой? А если он развалится в горах от удара — маме звонить будете?
А то, что у меня в дневнике написано, что я 30 дней путешествовал по горам, им похрен, им нужны формулы, Карл!
А еще в дневнике написано, что вы с Меган Фокс в одной палатке жили. А на самом деле у вас просто ее постер висел.
Я умею профессионально программировать, писать работающую программу, бизнес код, без багов, а вот рассказать, почему так, а не иначе, мне трудно, ибо я пишу код на подсознании уже давно, я не заморачиваюсь названиями и формулами.
Хуяк-хуяк и в продакшн!
Я ей тогда сказал, что я пишу без ошибок
Эгегей, народ. Я ошибся, это не король. К нам, смертным, спустился сам бог, сообственной персоной. Хотя даже боги допускали ошибки.
Я это терпеть не мог и у меня всегда по русскому была двойка или тройка с минусом
А, может, вы просто троечник, а не непризнанный гений?
Оказывается, имели в виду MVC. Попросили расшифровать. Представьте? Я, уже 7 лет применяющий эту уету на практике, сижу на собеседовании и наконец-то мне подсказали, как же оно называется!
Серьезно, за семь лет ни разу не поинтересовались, как расшифровывается MVC? Вот серьезно, MVC! Я бы понял, если бы не знали, что означает буква L из аббривиатуры SOLID — там много сокращений, расшифровывают ее редко, они сложные, но MVC? Вы вообще интересуетесь программированием, или со стековерфлоу примеры копипастите? Да еще и 7 лет не применяете на практике (из семи). То есть разделение отображения и данных — это для всяких теоретиков, вы тут код фигачите.
У вас спеси на десятерых, а уровень, по вашим словам, низкий. Типичный синдром Даннинга-Крюгера
Про название деталек — как вы с напарником разговаривать будете? Уверены, что он вас правильно поймёт, когда вы скажете "там железку, отвечающую за тормоз поменяй"? Кстати, "тормоз" — это тоже название "детальки". Будет "там железку, отвечающую за процесс остановки по желанию велосипедиста поменяй"?
Я специалист по vmware. На одном собеседовании в закрытую контору сначала пообщался с тех. специалистами. А потом специалист по кадрам дала мне листочек с тестовыми вопросами. И дело даже не в том, что в нем не было ни одного вопроса по vmware. Я погуглил эти странные вопросы. Оказалось что это вопросы 2004 года…
Не согласен со статьей.
Опыт работы не показатель, т.к. непонятно, чем именно он там занимался. Проекты тоже не показатель, т.к. неизвестна доля его авторства. Самые большие и красивые резюме я видел у соискателей из Индии, весьма слабых в техническом плане.
Не обижайтесь на тех, кто предлагает инвертировать односвязный список, отсортировать массив или написать функцию обхода дерева. Эта простая задачка позволят отсеять две трети кандидатов.
Умный кандидат, с профилем на гитхабе и выполненными проектами — это замечательно, но найти человека, который помнит школьный(паскаль) и ВУЗовский(теория графов) курс информатики — уже успех.
А дальше уже можно беседовать о технологиях, архитектурных решениях, процессах разработки...
Вот я помню школьный паскаль. И зачем это мне?)
Совершенно незачем, если вы дальнобойщик. Или строитель. Или журналист. Даже если вы программист, в стране полно программистов, которые пишут прикладной софт как умеют и имеют свою копеечку. Но речь же о лучших, о профессионалах, об элите :-)
Если что, я имел в виду не сам паскаль, а что дают к нему в нагрузку — базовые алгоритмы и структуры данных.
Если ваша задача отсеять, то спору нет — вопросы такие отлично подходят.
Если же ваша задача найти специалиста, который будет успешно решать сложные проблемы в вашей компании, то эти вопросы так себе помогают решить эту задачу. Найдете ли вы того самого человека с такими вопросами — нельзя сказать наверняка.
Впрочем, это и хорошо и выгодно что гранды по такому принципу собеседуют. Если у вас небольшая компания, то вы можете на меньшие деньги найти человека, который будет работать или не хуже, или лучше, чем те люди, которых не "отсеяли" тесты при приёмке у грандов. Другие вопросы только вам важны будут.
У меня там резюме и перевод и я добавил между ними FAQ по общению со мной ( мне подумалось что это намекает на повышенное ЧСВ ) в котором написал что в первом сообщение пришлите мне строчку типа: 202cb962ac59075b964b07152d234b70 и о чудо присылают от силы 20%, у остальных нет сил читать, они спамеры, они боты?
Существуют целые города ( небольшие ) где не найти программиста под Андроид, одни 1Сники.
выход из ситуаций в которые он не попадал.
На пары по алгоритмике?
По ходу, пора вторую статью писать, а то эта уже лагает.
С логическими задачами — это еще более широкая гарантия того, что человек не идиот в общем и целом и хотя бы будет в какую-то сторону напрявлять свою мысль, анализировать связь между входными данными неидеального реального мира и желаемым результатом.
UPD: недавно видел код парсера одного знаменитого сайта, который буквально ддосил запросами, пришлось переписывать. А все почему? Потому что написано в парадигме «как-то работает и окей»
Печально, что ничего не поменялось…
Дискредитация специалистов или современные собеседования