Первый раз поиграл мозгом. Верный ответ нашел, но было тяжко.
Почесал репу, и выработал такой подход:
Сначала ввожу четыре слова, которые подобраны так, чтоб перебрать все гласные без повтора букв.
Далее этого пробую искать пятое слово по вхождению и исключению букв из первых четырех, вот этот сервис неплохо подходит. Зачастую на этом этапе правильный ответ очевиден.
Но если поиск возвращает много результатов, то для его сужения выбираю слово с другими согласными с помощью того же сервиса, после чего снова повторяю поиск по вхождению и исключению.
Одна неудача за всё время. Времени на сей комментарий потратил больше, чем на 5 раундов игры.
Перепробовав несколько разных библиотек для маппинга, я пришел к выводу - лучший маппер из объекта в объект - это маппер, написанный вручную.
Вот причины:
Во-первых, библиотечный маппер не дает большой экономии, т.к. объем неизбежных тестов почти всегда существенно больше объема вручную написанного маппера.
Во-вторых, рано или поздно в недрах бибилиотечного маппера магия дает сбой, и приходится тратить время, чтоб понять, что же пошло не так, а то и костыль сбоку городить.
В-третьих, сложные мапперы, написанные вручную, можно декомпозировать, и тогда появляется возможность тестировать элементы композиции отдельно и саму композицию на моках, что зачастую позволяет уменьшить количество тестов или их сложность.
В-четвертых, библиотечный маппер привносит дополнительную когнитивную сложность и минимум одну дополнительную зависимость. На долгоживущих проектах любая зависимость зачастую является миной замедленного действия.
В-пятых, IDE при рефакторинге может не подхватить строковые литералы, символизирующие имена полей и методов. А вот если бы были тесты...
Но этот все не отменят пользы от такого рода мапперов, если перечисленные недостатки не имеют значения в силу специфики проекта.
Смысл - убедиться, что кандидат способен быстро закодить элементарные вещи. На мой взгляд, для разраба выше джуна это одно из базовых требований.
Я встречал людей, претендовавших на сеньора, при этом на словах даже превосходящих Льва Толстого, а на деле не способных пользоваться стандартной библиотекой. Как таких отсеивать без лайвкодинга - не очень понятно.
Похоже, я неверно понял ваш коммент. Фразу "Когда я был девелопером, я писал 100-500 строчек в день. Сейчас, когда дорос до техлида пишу в 3 раза больше, ..." я прочитал так, будто в роли техлида вы стали писать больше кода в 3 раза.
Неоднократно встречал заведомо неоптимальный код, который мог бы быть написан с теми же трудозатратам, но гораздо оптимальнее по скорости или памяти (например, неверно выбран контейнер). Спрашиваешь автора, как же так - а он начинает объяснять, мол, преждевременная оптимизация - зло. Зла не хватает.
Нужно же как то фильтровать кандидатов. ) К сожалению, никто не умеет нанимать малоизвестных, но толковых разработчиков прицельно. Если никто не знает, как правильно фильтровать, то какая разница как? Тем более, что это про программирование, а не про мячики от гольфа в автобусе и круглые люки. Прогресс.
Пришли однажды юзеры с жалобой - жмешь кнопку, говорят, и понять невозможно, что происходит, покуда операция не завершится.
Ок, мы сочинили прогресс индикатор в виде окошка, где есть горизонтальная полосочка, символизирующая процент прогресса, а так же текстовое поле с названием текущей операции.
Откуда брать процент? Насочиняли всякой сложной логики, как учитывать распараллеливаемые операции, как вложенные, что делать, если текущая операция добавит другую (дада, прогресс откатывался) и еще всякие интересные кейсы.
Юзеры довольны, разработчики - нет. Подсчет процента оказался сложным.
В один прекрасный момент я просто выбросил всю сложную логику.
Вместо нее начал считать так: от момента начала операции в течении ожидаемого максимального времени операции (эмпирическое значение, десятки секунд) процент равномерно бежит от 0 до 60, далее - каждые 10 секунд добавляется по проценту, и так до 99.
Его же кто-то нанял. Кто-то закрыл ему испытательный срок. Кто-то собирал требования. Кто-то анализировал. Задачи кто-то ставил. Следил за работой и контролировал процесс исполнения. PRы обзирал и утверждал. Писал тест-план. Тестировал. Выпускал. Организовывал сбор обратной связи от пользователей. Да?
Ну а если все это делал один Джон, да еще и за бесплатно - то претензии не обоснованы вообще. Видимо, программа больше решает проблем, чем создает, раз ей удалось столько пользователей набрать. Может, Джона можно приравнять к многодетному отцу героину?
О, да! Спасибо Компьютерре за иллюзию ощущение причастности. Без нее у меня не хватило бы наглости войти в IT практически с улицы, без профильного образования и почти без релевантных навыков.
Поленился писать код.
Первый раз поиграл мозгом. Верный ответ нашел, но было тяжко.
Почесал репу, и выработал такой подход:
Сначала ввожу четыре слова, которые подобраны так, чтоб перебрать все гласные без повтора букв.
Далее этого пробую искать пятое слово по вхождению и исключению букв из первых четырех, вот этот сервис неплохо подходит. Зачастую на этом этапе правильный ответ очевиден.
Но если поиск возвращает много результатов, то для его сужения выбираю слово с другими согласными с помощью того же сервиса, после чего снова повторяю поиск по вхождению и исключению.
Одна неудача за всё время. Времени на сей комментарий потратил больше, чем на 5 раундов игры.
Перепробовав несколько разных библиотек для маппинга, я пришел к выводу - лучший маппер из объекта в объект - это маппер, написанный вручную.
Вот причины:
Во-первых, библиотечный маппер не дает большой экономии, т.к. объем неизбежных тестов почти всегда существенно больше объема вручную написанного маппера.
Во-вторых, рано или поздно в недрах бибилиотечного маппера магия дает сбой, и приходится тратить время, чтоб понять, что же пошло не так, а то и костыль сбоку городить.
В-третьих, сложные мапперы, написанные вручную, можно декомпозировать, и тогда появляется возможность тестировать элементы композиции отдельно и саму композицию на моках, что зачастую позволяет уменьшить количество тестов или их сложность.
В-четвертых, библиотечный маппер привносит дополнительную когнитивную сложность и минимум одну дополнительную зависимость.
На долгоживущих проектах любая зависимость зачастую является миной замедленного действия.В-пятых, IDE при рефакторинге может не подхватить строковые литералы, символизирующие имена полей и методов.
А вот если бы были тесты...Но этот все не отменят пользы от такого рода мапперов, если перечисленные недостатки не имеют значения в силу специфики проекта.
Смысл - убедиться, что кандидат способен быстро закодить элементарные вещи. На мой взгляд, для разраба выше джуна это одно из базовых требований.
Я встречал людей, претендовавших на сеньора, при этом на словах даже превосходящих Льва Толстого, а на деле не способных пользоваться стандартной библиотекой. Как таких отсеивать без лайвкодинга - не очень понятно.
Похоже, я неверно понял ваш коммент. Фразу "Когда я был девелопером, я писал 100-500 строчек в день. Сейчас, когда дорос до техлида пишу в 3 раза больше, ..." я прочитал так, будто в роли техлида вы стали писать больше кода в 3 раза.
Дорос до тех-, а потом и тимлида, писал кода больше, чем любой из разрабов на проекте, переписывался с менеджерами, вел документацию.
У меня так же было. А потом я выгорел.
Лучше проверять не наличие конкретных знаний, а способность их применять.
Можно, например, предложить кандидату на обзор кусок забагованного кода, для починки которого без понимания устройства HashMap не обойтись.
Этот подход хорош еще и возможностью интегрировать несколько проверок.
Неоднократно встречал заведомо неоптимальный код, который мог бы быть написан с теми же трудозатратам, но гораздо оптимальнее по скорости или памяти (например, неверно выбран контейнер). Спрашиваешь автора, как же так - а он начинает объяснять, мол, преждевременная оптимизация - зло. Зла не хватает.
Не хочу огорчать вас отказом!
Нужно же как то фильтровать кандидатов. ) К сожалению, никто не умеет нанимать малоизвестных, но толковых разработчиков прицельно. Если никто не знает, как правильно фильтровать, то какая разница как? Тем более, что это про программирование, а не про мячики от гольфа в автобусе и круглые люки. Прогресс.
Пришли однажды юзеры с жалобой - жмешь кнопку, говорят, и понять невозможно, что происходит, покуда операция не завершится.
Ок, мы сочинили прогресс индикатор в виде окошка, где есть горизонтальная полосочка, символизирующая процент прогресса, а так же текстовое поле с названием текущей операции.
Откуда брать процент? Насочиняли всякой сложной логики, как учитывать распараллеливаемые операции, как вложенные, что делать, если текущая операция добавит другую (дада, прогресс откатывался) и еще всякие интересные кейсы.
Юзеры довольны, разработчики - нет. Подсчет процента оказался сложным.
В один прекрасный момент я просто выбросил всю сложную логику.
Вместо нее начал считать так: от момента начала операции в течении ожидаемого максимального времени операции (эмпирическое значение, десятки секунд) процент равномерно бежит от 0 до 60, далее - каждые 10 секунд добавляется по проценту, и так до 99.
С тех пор прошел год. Никто не жаловался.
Джунов можно использовать для обучения толковых спецов основам менеджмента.
Нипочему.
Хочется вступиться за Джона.
Его же кто-то нанял. Кто-то закрыл ему испытательный срок. Кто-то собирал требования. Кто-то анализировал. Задачи кто-то ставил. Следил за работой и контролировал процесс исполнения. PRы обзирал и утверждал. Писал тест-план. Тестировал. Выпускал. Организовывал сбор обратной связи от пользователей. Да?
Ну а если все это делал один Джон, да еще и за бесплатно - то претензии не обоснованы вообще. Видимо, программа больше решает проблем, чем создает, раз ей удалось столько пользователей набрать. Может, Джона можно приравнять к многодетному отцу
героину?О, да! Спасибо Компьютерре за
иллюзиюощущение причастности. Без нее у меня не хватило бы наглости войти в IT практически с улицы, без профильного образования и почти без релевантных навыков.Беру ответственность. Дорого. Без ресурсов и полномочий просьба не беспокоить.
А если потом получится фигня - можно свалить на исполнителей.
Здесь очень не хватает хотя бы поверхностного перечня достижений этой чудесной структуры.
Есть ровно одно важное последствие. Частный IT сектор в РФ начал заканчиваться. Еще какое-то движение будет, но это инерция и угасание.
Подскажите, а есть ли возможность изменить адрес доставки на кикстартере? А то время такое, непонятно, где буду жить через несколько месяцев.