Подробнее
даныд @stdan¡lka Во время собеседования: - Алгоритм Дейкстры - Развертывание односвязного списка - Бинарные деревья, паттерны Первый день на работе: - Фон корзинке поменяй - Кнопочке углы закругли - Вместо ссылки иконку сделай
it-юмор,geek,Прикольные гаджеты. Научный, инженерный и айтишный юмор,собеседование,программирование
Еще на тему
- была
- надо ERP-систему написать, мы тебе даже книжку по программированию купим
BDSM ещё тот.
Лучше бы понимание паттернов спрашивали и знание соглашений по оформлению кода, если уж говнокодеров не хотят набрать.
Если чувакам от человека с 15+ годами опыта нужны паттерны, то они могут только идти лесом.
Если я не прав, приведи пример правильного собеса.
Если же это галера, где верх проблем - это как применить паттерны, то они не нужны мне, а я не нужен им. Им нужны миды и джуны для иекущих задач. А я писать фабрики фабрик для очередного веб-портала заказов просто не хочу, имею такое право. Даже если у них за это платят нормально, что тоже скорее исключение.
А в быту названия паттернов полезны не столько самому (т.к. сам применяешь интуитивно), сколько для того, чтобы ДРУГИМ пояснить, почему ты написал именно так, а не иначе. Тут-то и пригождаются идеологии продукта, лучшие практики, названия паттернов и т.д. Если ты терминологией не владеешь - объяснять такие абстрактные куда дольше, и не факт что дослушают.
Проблема в том, что те, кто делает упор на паттерны и формализм(на удивление, они же ярые фанаты срама по книжке), выглядят зачастую как те, кому дали молоток, а потому для них всё вокруг - гвозди.
Спрашиваешь, нахуя тут сделано вот так и так? Ответ: нуу, это ж паттерн "ххх".
Да блядь я вижу, что ххх, а нахуя?
Мычание в ответ.
Я к чему. Если знание пары десятков готовых приёмов, на которых ничего не заканчивается, ставится важнее, чем обычный здравый смысл, и если этому знанию паттернов придаётся сакральное значение, то мне с этими людьми не по пути.
Так для этого же и делает, чтобы ты видел, что это xxx, и не тратил время на разбирательство, что вообще происходит.
Наебеним для всего, чего можно, фабрик, нагородим нахуй не нужную иерархию, прилепим фасады там, где они логически и не всрались, так как не отображают никакую логическую сущность, и получим 300 классов три тысячи строк и тысячу абстракций там, где можно было обойтись одним классом на 50 строк.
На вопрос "а нахуя" - "а на будущее", "у нас гибко зато". То, что на эту гибкость тратится время и силы при написании, тратится в десять раз больше времени при чтении, и она так никогда никому и не пригодится, всем насрать.
Да, это на самом деле никакого отношения к самим паттернам не имеет, это имеет отношение к идиотам. Паттерны в конце концов, это всего-лишь приёмы, которые можно применять.
Просто любители паттернов очень любят раздувать ими архитектуру просто потому что могут, усложняя всем жизнь.
Сначала учатся просто названия и суть.
Потом на практике стараться обращать внимание на их применение в чужом коде, внедрять самому аккуратно - ловить грабли на то, где они не нужны были, анализировать.
Потом еще раз перечитывать, особенно делая акцент на "где применимо", потому что на первом проходе этому меньше уделяют время.
Потом еще анализировать и внедрять, и снова страдать )
И где-то через н-нное время приходит дзен и реальное понимание паттерна, в том числе и понимание, когда он антипаттерн.
Вот это понимание и надо спрашивать, как писал выше Девиантный, на реальных примерах, а не просто выученное определение.
Но я в начале ветки имел ввиду юношей, которые на собеседе спрашивают именно список паттернов и их определения. А не нюансы и детали применения.
Как на экзамене по теории.
Ну и сам по себе подход к собеседованию а-ля экзамен, типа перечислите то, перечислите это - это уже дичь. И таким страдают молодые идиоты с синдромом вахтёра.
Я давно уже понял, что если на себеседовании ты не обсуждаешь с умными людьми методы решения проблем, а отвечаешь на экзамене на заранее подготовленные вопросы - место будет в 90% трэш и галера.
Если их за одинь день заучить и слепо применять без понимания, то конечно так и будет.
Вообще, если человек с опытом, то имхо приятней всего в формате беседы двух коллег о твоём опыте и предстоящих задачах. При этом не вижу ничего плохого, если меня спросят, какие паттерны получилось применять и насколько успешно, как они повлияли на архитектуру, почему было сделано так, а не иначе.
В реальности же, в таком виде, как список, паттерны нахуй не всрались, в отрыве от задач.
Например вот такой говнокод вызывает рвотные рефлексы, но не у всех. Есть надежда, что человек, который понимает, как долго и почему работает быстрая сортировка будет один из них:
const second = Math.max(array.filter(element => element "знак меньше" Math.max(array)));
Оформление кода в каждом проекте свое. Максимум, что можно посмотреть - это как кандидат называет переменные. Что во время "разворота дерева" или "написания сортировки, таки, смотрят.
А паттерны - еще более редкая вещь, чем алгоритмы.
Паттерны частая вещь - хотя бы те же декораторы, синглтоны или слушатели - вряд ли есть код, где они не применялись. А вот алгоритмы могли быть вполне простые или использовались библиотечные.
И сортировки наизусть никто и не спрашивает. Если кто спрашивает - они идиоты - да.
> Но код может быть проще и более прикладным, чем абстрактная сортировка или разворот дерева
Куда уж проще разворота дерева? Это реально 4 строки кода. 2 рекурсивных вызова и помена указателей. Это для вас не достаточно прикладной и простой код?
А если накидает разворот в 4 строки - значит, скорей всего, знаком с этим алгоритмом. Но это будет всего лишь сигнал об эрудированности (или зазубривании), чем о мышлении. И эта эрудированность будет бессмысленной, так как перебалансировкой дерева мало кто занимается в работе.
Куда интересней для оценки задача с простым переносом ветви дерева - более прикладной случай, так как часто встречается иерархия, которую надо модифицировать клиенту. На ней же заодно можно будет посмотреть, как человек работает с требованиями и граничными случаями.
Что? Вот эти 5 строк сложно накидать? https://pastebin.com/D4BPPZrC
Я понимаю, что если человек до этого никогда с деревьями не работал, надо будет 15 минут подумать порисовать.
> Куда интересней для оценки задача с простым переносом ветви дерева - более
Согласен, эта задача интереснее, но боюсь от нее будет еще больше горящих пердаков "программистов".
Это как если бы спрашивали знание интегралов - в принципе, неплохо, если человек помнит и понимает школьную программу, но для работы имеет мало смысла.
Перенос же ветки дерева - классическая задача для любой иерархии: у кого-то элементы в DOM, у кого-то подразделения с сотрудниками, у кого-то категории с товарами.
Так это же функциональный стиль, тут оптимизация - это задача компилятора, какие претензии могут быть к программисту?
Очевидно же: если ты помнишь алгоритмы сортировки - то ты либо старательный и трудолюбивый, раз у тебя хватило усилий на их запоминание, либо достаточно шестеренок в голове, чтобы сходу реализовать на коленке относительно сложные алгоритмы, зная лишь основные его принципы.
>Лучше бы понимание паттернов спрашивали и знание соглашений по оформлению кода, если уж говнокодеров не хотят набрать.
1. Ну так и спрашивают.
2. Если человек хватило памяти на сортировки - то соглашения с паттернами он уж как-нибудь запомнит.
В этом смысле паттерны хороши тем, что хоть их и можно зазубрить, но хоть в работе есть шанс применить. Шанс что джун будет меньше говнокодить.
А заставлять зубрить только для того, чтобы пройти собес - какая-то бесцельная трата человеческого ресурса ради развлечения HR.
А то у них собесов удаленных нет, там тестовые задания выдают и все. Сложные.