вторник, 1 января 2030 г.

О блоге

Более двадцати лет я занимался разработкой ПО, в основном как программист и тим-лид, а в 2012-2014гг как руководитель департамента разработки и внедрения ПО в компании Интервэйл (подробнее на LinkedIn). В настоящее время занимаюсь развитием компании по разработке ПО stiffstream, в которой являюсь одним из соучредителей. Поэтому в моем блоге много заметок о работе, в частности о программировании и компьютерах, а так же об управлении.

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

понедельник, 31 декабря 2029 г.

[life.photo] Характерный портрет: вы и ваш мир моими глазами. Безвозмездно :)

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

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

пятница, 26 июля 2024 г.

[dev.hiring.flame] Посмотрел и разоблачение Антона Назарова и реакцию на это разоблачение от самого Антона Назарова

Продолжение и, надеюсь, завершение недавней темы. В догонку к ролику от HR-а про "волков" и "волчат" (далее "HR-овский ролик") осилил и стрим, на котором Антон Назаров смотрит и реагирует на "HR-овских ролик" (далее "волчий стрим").

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

Конечно же, авторы первого, "HR-овского ролика", откровенно подставились. Была попытка в сатирическом ключе разоблачить Антона Назарова и в его лице все явление накрутки опыта и обмана собеседующих. Хотели выступить стиле BadComedian, по факту вышло на уровне конкурса художественной самодеятельности 7-го класса общеобразовательной школы, если не ниже.

Чем и воспользовались Антон со своим соведущим по стриму -- с удовольствием обстебали ролик Леси и Глеба, причем, местами, вполне себе успешно и по делу.

При этом смотреть запись стрима с Антоном и Никитой мне было тяжело и вызывало когнитивный диссонанс: с одной стороны, два малолетних гопника с соответствующими манерами и лексикой, с другой стороны, вроде как с мозгами и эрудицией. Кстати говоря, посмотрев телеграмм соведущей "НR-овского ролика", Леси Набока, и попробовав посмотреть еще одно видео с ее канала "Два стула", у меня сложилось впечатление, что Леся такой же "малолетний дебил гопник" (вот в качестве иллюстрации один из постов, который зачем-то был написан с использованием нецензурных выражений). Так что, к сожалению, "борьба была равна, сражались два говна".

На "волчьем стриме" правильно отметили: "HR-овский ролик" оказался откровенной рекламой сообщества "Осознанная меркантильность". Ведь Назаров и Ко декларирует что? Существующая система найма имеет ряд серьезных недостатков из-за которых целые категории соискателей испытывают проблемы с поиском работы. А раз так, то плохую систему не грех и хакнуть. Чем Назаров и Ко и занимаются. И если HR-ы снимают длинные разоблачительные ролики, значит хакают успешно. Значит "волки" все делают правильно.

Что меня искренне удивило в "волчьем стриме", так это непонимание того, чем же деятельность "волков" вредит индустрии. Поэтому вот мое видение:

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

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

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

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

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

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

Пара серьезных недостатков текущей системы, на мой взгляд:

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

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

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

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

И вот на этом фоне появляются персонажи, вроде Назарова и Ко, и объявляют, что их цель -- это помочь вам обмануть систему. И создают условия для её успешного обмана. Что, как по мне, естественно. Но тоже не есть хорошо.

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

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

В качестве звиздуна-собеседника на YouTube он, в принципе, хорош. Гораздо мощнее оппонирующей ему Леси Набока, кстати говоря.

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


В общем, чего хочу сказать:

  • если вам интересно программирование как инженерная деятельность, то занимайтесь ей, развивайтесь, получайте удовольствие. И не тратьте время на срачи разных Набока с Назаровыми, она и он -- это наносные, если даже не паразитирующие, явления;
  • если вы работодатель и нашли хороших, увлеченных программистов, для которых разработка софта -- это призвание, то держитесь за них и развивайте их. Талантам нужно помогать, бездари пробьются сами, пример Антона Назарова тому подтверждение. А если вы понимаете, что существующая система найма не позволяет вам находить нормальных программистов, то экспериментируйте, не следуйте бездумно за мейнстримом.

вторник, 23 июля 2024 г.

[prog.c++] Как в json_dto можно сделать так, чтобы элемент в JSON был либо единичным объектом, либо вектором объектов?

В проекте для текущего заказчика возникла потребность сделать так, чтобы элемент в JSON-е мог быть либо одиночным объектом:

{
  "message": {
    ...,
    "extension": { ... }
  }
}

либо же вектором объектов:

{
  "message": {
    ...,
    "extension": [
      { ... },
      { ... },
      { ... }
    ]
  }
}

Сделать это оказалось не сложно, т.к. в проекте для работы с JSON используется весьма низкоуровневый инструмент, в котором, как в RapidJSON, приходится вручную разбираться с типами элементов. Буквально что-то вроде item.SetObject("extension", value) или item.SetArray("extension").PushBack(...).

Но мне стало интересно, а можно ли будет сделать что-то подобное с помощью нашей разработки json_dto.

Мы делали json_dto как раз для того, чтобы не нужно было вручную возиться с SetObject и SetArray, чтобы сериализатор/десериализатор сам разбирался с этой скучной рутиной. А такая высокоуровневость временами выходит боком, когда пытаешься сделать что-то, что изначальным дизайном библиотеки не предусматривалось. Так что я подумал, что это своего рода "вызов" и попробовал сделать такой трюк средствами json_dto.

Выполнить этот трюк удалось без каких-либо проблем и без доработок json_dto, хотя и несколько многословно: достаточно было определить кастомный Reader_Writer.

Есть у нас в json_dto такое понятие, как кастомный Reader_Writer -- это объект с двумя методами, read и write. Именно этот объект берет на себя ответственность за то, чтобы прочитать/записать значение поля объекта посредством RapidJSON. По умолчанию для это делает сам json_dto, но когда нужно что-то кастомизировать, то пользователь может реализовать собственный Reader_Writer и приказать json_dto использовать именно этот Reader_Writer.

Как же это все выглядит?

понедельник, 22 июля 2024 г.

[dev.hiring.flame] Посмотрел давеча на YouTube ролик про "волчат" и "волков"

Вот это видео:

Да, там почти два часа, но смотреть интересно (хотя бы потому, что видно как сильно полыхает у ведущих).

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

Это понятно, это естественно, от этого не уйти.

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

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

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


Этот ролик заставил вспомнить ощущение, которое у меня сложилось лет 20 назад, где-то 2004-2005гг, когда у нас в РБ окончательно победил аутсорс (долгое время белорусский ИТ был заточен на аутсорс чуть меньше, чем полностью, а может и сейчас остается таким же).

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

Не уверен, что это впечатление было верным, но вот такое оно у меня было.

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

Да и сама ситуация, когда мне с 30-летним опытом, доступными на github-е проектами, кучей статьей и несколькими выступлениями на конференциях, нужно проходить секции live-coding-а с условным разворотом условной строки, не кажется нормальной.

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

Понимаю, но все равно нормальной эту ситуацию назвать не могу.

воскресенье, 21 июля 2024 г.

[life.audiophilia.diy] Итоговые впечатления от 15.4mm динамиков с литиево-магниевой диафрагмой

В конце 2023-го года мне в руки попали динамики с литиево-магниевой диафрагмой, которые на тот момент были, наверное, единственной заслужившей мое внимание новинков на Aliexpress.

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

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

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

Изначально в этих динамиках мне сильно не хватало веса на НЧ. Наушники были слишком "светлыми", хотелось большее баса.

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

В общем, с количеством НЧ смирился. А уж к качеству НЧ так вообще вопросов не было.

Засада же оказалась с ВЧ.

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

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


Основными для меня в последние месяцы продолжают оставаться 15.4mm динамики с DLC и LCP диафрагмами. Причем, если раньше и DLC, и LCP мне казались недостаточно басовитыми, то сейчас LCP ощущаются просто как басхэдные со слишком большим количеством слегка "ватного" баса. DLC же, которые раньше ощущались, как "светлые" в сравнении с LCP, теперь кажутся практически тем, "что доктор прописал". Хотя по четкости и жесткости проработки НЧ, наверное, DLC уступают описанным выше литиево-магниевым динамикам, но компенсируют массой и громкостью НЧ.

Иногда слушаю и откровенно бюджетные 15.4mm динамики с композитной бериллиевой диафрагмой. Они хоть и бюджетные, с чрезмерной (для меня сейчас) массой НЧ, и "проваленной" серединкой, но зато с совершенно шикарными для своей цены ВЧ. Есть что-то в этих динамиках такое, что в первые два-три дня прослушивания невероятно очаровывает. Потом, правда, от количества НЧ устаешь и возвращаешься к DLC/LCP. Чтобы еще через месяц-два опять на пару дней вернутся к этому темному звуку с отличной детализацией на НЧ.

суббота, 20 июля 2024 г.

[life.business] Чего только в жизни не бывает...

Увидел некоторое время назад в ленте LinkedIn:

До сих пор пребываю в растерянности.

С одной стороны, очевидно, что 30 лет своей профессиональной деятельности занимался какой-то фигней. Мягко говоря.

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

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