пятница, 11 ноября 2016 г.

[software.business.thoughts] Очередное откровение от Св.Маркетинга...

...или N-ое подтверждение мудрости "век живи, век учись, а дураком помрешь".

SObjectizer -- это небольшая, но сложная штука. Понятное дело, что пытаясь продвигать SO-5 в массы, невольно хочется получить "признание заслуг" от опытных разработчиков, от гуру, которые собаку съели в теме многопоточности, а может и не одну. Это же естественно: ты проделал большую и непростую работу, оценить которую могут далеко не только лишь все, и положительная оценка от опытного проффи выглядит как заслуженное признание проделанной работы.

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

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

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

Нет, ориентируясь на чайников нужно вести рассказ по-другому, начиная с самых основ. Нельзя просто сказать, что многопоточное программирование сложно. Нужно показать это на простейших примерах. И на этих же примерах затем показать, как асинхронные сообщения облегчают жизнь. А потом уже рассказать, что при работе с асинхронными сообщениями есть свои модели, например, Actor Model и Comminicating Sequential Processes. И что есть готовые инструменты (готовый инструмент, вообще-то), которые отнюдь не противопоставляют эти модели друг другу, а позволяют использовать и то, и другое. И все это уже собрано в одном флаконе, распространяется бездвоздмедаром и может использоваться где угодно, влючая закрытое программное обеспечение... :)

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

четверг, 10 ноября 2016 г.

[book.business] Добил книгу "Кодекс выживания"

Закончил затянувшееся чтение книги "Кодекс выживания" (авторы: Дэвид Хэнна, Георгий Мелик-Еганов и Максим Ильин).

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

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

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

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

Так что не знаю, хорошую ли я книгу прочитал, правильные ли там советы давались или нет. У меня же получилось вынести из нее совсем не то, что описывали авторы :)

вторник, 8 ноября 2016 г.

[prog.flame] Шаблоны, множественное наследование, policy classes... В общем, маленькая иллюстрация того, за что я люблю C++ :)

Просто малюсенький фрагментик из одного из проектика:

namespace probe_common {

template<
   // Какой диспетчер нужен агентам-пробникам.
   typename PROBE_DISP_POLICY,
   // Как быть с child_deadliner-ом.
   typename CHILD_DEADLINER_POLICY >
class a_studies_manager_t
   :  public so_5::agent_t
   ,  protected PROBE_DISP_POLICY
   ,  protected CHILD_DEADLINER_POLICY
{...};

}

namespace probe_X {

using base_studies_manager_t = probe_common::a_studies_manager_t<
      probe_common::one_thread_probes_disp_policy_t< probe_disp_name_t >,
      probe_common::no_child_deadliner_policy_t >;

class a_studies_manager_t : public base_studies_manager_t
{...};

}

PS. Вообще, читая профильные форумы, на которых люди разной степени адекватности и вменяемости хейтят C++ и агитируют кто за Go, кто за Rust, кто за, прастихоспади, plain old C, у меня складывается ощущение, что владение C++ -- это конкурентное преимущество :) Поэтому не нужно никого агитировать за использование C++, меньше народу -- больше кислороду ;)