Павел Новицкий

Нерегулярные заметки

Собеседование

19 февраля 2015, 19:24

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

Ощущения странные. Не понравилось. Бессознательное устыдилось и пообещало вернуться к паре собеседованиям в неделю. В довесок осталось некое чувство разочарования и более-менее сформировался список проблем современных кандидатов.

Ребята, конечно, понимают, что технологии не стоят на месте. Подтягивают уровень. Популярным становится ответ: «Я про это читал <источник>, но не разобрался до конца». Ещё прошлой весной лидером было: «Шта?».

На этом выводе всё положительное заканчивается.

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

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

HR-вебинары и статьи «как пройти собеседование» советуют себя показать в лучшем свете. И люди показывают. Спросишь о задачах на прошлых местах работы и понимаешь, что твой e-commerce — пустая трата времени. Люди, вон, чуть ли не космические корабли ежедневно запускали и big data лопатой ворочали. Углубляешься в детали и оказывается, что корабли запускали где-то за углом, а big data занимались в соседнем отделе. А претендент в лучшем случае тестами какой-то модуль системы покрывал. Но курилка-то была общая для всех!

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

Странно выглядят ответы «Ну, вот так, наверно, я так думаю, но не уверен. Хотя не, а, да. Вот так скорее всего». После нескольких таких ответов на закрытые, требующие однозначного ответа, вопросы хочется свести всё собеседование к слепому тестированию.

И последнее, скорее относящееся вообще ко всей отрасли, — чётко рассуждать у людей получается только на какую-нибудь прикладную тему. Если уже занимался подобным на практике, набил собственные шишки — есть чёткое понимание. Читал на «Хабре» или попробовал разок ради любопытства — считай и не знает или не понимает. Но в резюме обязательно укажет как полезный навык.

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

Вконтакте
Отправить

Возможности в кризис

16 января 2015, 12:28

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

Возможности есть всегда и вовсе не обязательно ждать кризисных лет. Идея об исключительности наступившего периода сильно преувеличина, а местами ещё и порочна. Если клиенты Васи перешли к Пете, то это не потому что Петя резко улучшил качество предоставляемых услуг, а Вася решил переждать. Возможность, которой грех не воспользоваться. Но, подобная возможность всего лишь позволяет занять пустой рынок без изменений самих процессов. Что-то похожее происходило в байнете после временного прикрытия каталога и «барахолки» от onliner.by и взлёта 1k.by. Кто окажется в итоге окажется в выйгрыше — не знаю, но точно не клиенты.

Конечно, в смутные времена стараются сокращать затраты, оптимизировать процессы и повышать производительность. А зачем дожидаться проблем чтобы что-то изменить? Всё, что можно сделать в плохие времена, можно было делать и в хорошие. Причём, меньшими затратами.

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

Вконтакте
Отправить

Riding a dead horse

15 января 2015, 16:27

The tribal wisdom of the Dakota Indians, passed on from generation to generation, says that when you discover that you are riding a dead horse, the best strategy is to dismount.

In modern education, government and software development a whole range of far more advanced strategies are often employed, such as:

  1. Buying a stronger whip.
  2. Changing riders.
  3. Threatening the horse with termination.
  4. Appointing a committee to study the horse.
  5. Visiting other sites to see how others ride dead horses.
  6. Lowering the standards so that dead horses can be included.
  7. Re-classifying the dead horse as «living, impaired».
  8. Hiring outside contractors to ride the dead horse.
  9. Harnessing several dead horses together to increase the speed.
  10. Attempting to mount multiple dead horses in hopes that one of them will spring to life.
  11. Providing additional funding and/or training to increase the dead horse’s performance.
  12. Doing a productivity study to see if lighter riders would improve the dead horse’s performance.
  13. Declaring that as the dead horse does not have to be fed, it is less costly, carries lower overhead, and therefore contributes substantially more to the bottom line of the economy than do some other horses.
  14. Re-writing the expected performance requirements for all horses.
  15. Promoting the dead horse to a supervisory position.

автор потерян за грудой репостов в интернете

Пришло время признать — лошадь мертва. Пора двигаться дальше.

Вконтакте
Отправить

Пост сообщений об ошибках

13 января 2015, 14:46

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

Буду здесь собирать вывод необработанных ошибок различных сервисов. Просто чтоб было.

Cannot convert BYR to Currency (www.webservicex.net):

System.ArgumentException: Cannot convert BYR to Currency.
Parameter name: type ---> System.ArgumentException: Requested value 'BYR' was not found.
   at System.Enum.EnumResult.SetFailure(ParseFailureKind failure, String failureMessageID, Object failureMessageFormatArgument)
   at System.Enum.TryParseEnum(Type enumType, String value, Boolean ignoreCase, EnumResult& parseResult)
   at System.Enum.Parse(Type enumType, String value, Boolean ignoreCase)
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   --- End of inner exception stack trace ---
   at System.Web.Services.Protocols.ScalarFormatter.FromString(String value, Type type)
   at System.Web.Services.Protocols.ValueCollectionParameterReader.Read(NameValueCollection collection)
   at System.Web.Services.Protocols.UrlParameterReader.Read(HttpRequest request)
   at System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()
   at System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()
Вконтакте
Отправить

Сomposer

12 января 2015, 18:35

Композер классный. Проверка зависимостей и системных требований стала проще. Установка пакетов проходит с ним на ура. Модульность проекта поддерживается отлично. Головной боли для разработчика с подключением библиотек уменьшилось. Проект разворачивается одной строчкой.

И вот за всё это мне Композер не нравится.

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

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

Да, я знаю про composer install --ignore-platform-reqs, этот флаг решает проблему. Альтернативный вариант — установка в контейнере с последними версиями всего ПО и банальный аплоад на сервер.

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

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

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

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

Вконтакте
Отправить

Постновогоднее

6 января 2015, 13:38

Начиная с 29 декабря и вплоть до 3 января продавцы здоровались и улыбались. Было странно и страшно. Дальше все снова стали привычно хмурыми.

Огромная тележка тостового хлеба, две мандаринки и кекс — вполне реальная картина для 31 числа.

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

В нашенские хлопушки недосыпают конфетти. Зато, бенгальские огни стали делать длиннее.

В 9 часов утра мужичок в приличном костюме с букетом цветов идёт по пустой улице и матерится во весь голос.

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

Работники метрополитена бережно укладывают пьяных на лавочки, а не выпихивают на улицу.

Деда Мороза не существует.

Вконтакте
Отправить

Удаление блока купонов со страницы корзины в Magento

17 октября 2014, 1:03

Итак, двигаемся по намеченному плану.

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

Но, считаем что так нужно и либо убираем конкретно эту фичу, либо камень на шею и в воду. Так что к делу.

Сам блок купонов вводится в checkout.xml, нода checkout_cart_index:

<block 
    type="checkout/cart_coupon" 
    name="checkout.cart.coupon" 
    as="coupon" 
    template="checkout/cart/coupon.phtml"
/>

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

Редактируем local.xml в теме (ну, или создаём файл, если его до сих пор нет) и для checkout_cart_index в блоке checkout.cart добавляем директиву на удаление блока checkout.cart.coupon.

<?xml version="1.0" encoding="UTF-8" ?>
<layout>
    <checkout_cart_index>
        <reference name="checkout.cart">
            <remove name="checkout.cart.coupon"/>
        </reference>
    </checkout_cart_index>
</layout>

Обновляем кэш, всё.

Вконтакте
Отправить
← Раньше Позже →
© 2013-2020