четверг, 11 марта 2021 г.

[prog.c++] Наглядно про "могу помочь вашей команде улучшить качество кода"

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

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

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

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

среда, 3 марта 2021 г.

[business.mistake] Проиллюстрирую свои недостатки, пожалуй...

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

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

Преамбула

Итак, некоторое время назад внезапно объявился клиент, который когда-то нашими услугами уже пользовался. И, в принципе, в курсе особенностей моей работы, так что традиционное "нужно подумать" не должно было бы его удивлять.

Речь зашла о том, что им нужно быстро сделать обработку графа социальных связей. Проблема из категории тех, которые решаются в FB, VK, Twitter, Instagram, LinkedIn, когда нужно формировать и обновлять ленту новостей у пользователя. На масштабах, которые поменьше, чем у вышеозначенных соцсетей, конечно, но в пределе виделось несколько сот миллионов пользователей у некоторых из которых могут быть миллионы контактов.

понедельник, 1 марта 2021 г.

[life.cinema] Очередной кинообзор (2021/02)

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

Фильмы

Дьявол в деталях (The Little Things, 2021). Если бы не очень уже специфическая (я бы даже сказал укуренная) манера повествования, то мне бы даже могло очень понравится. А так просто неплохой фильм получился, можно посмотреть.

Охотник на монстров (Monster hunter, 2020). Да, тупо. Да, фэнтези. Но бодренько и красочно. На фоне выходящего в последнее время шлака даже ничего себе так. Хотя, конечно, далеко не первая "Обитель Зла".

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

Зависнуть в Палм-Спрингс (Palm Springs, 2020). Еще одна итерация вокруг темы "Дня сурка". Вполне можно посмотреть.

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

Остров фантазий (Fantasy Island, 2020). Средней паршивости. Есть ощущение, что не хватило бюджета для создания нормальной картинки в нужных местах.

Космос (Cosmos, 2019). Угораздило посмотреть. Сначала было интересно, что же авторы этой явно бюджетной ленты вставят в этот фильм такого, чтобы оправдать жанр "фантастика". Хотя уже с самого начала было много намеков на то, что ничего хорошего ждать не следует. А уж в финале кино скатилось в какой-то невероятный трэш вперемешку с убогим пафосом. В общем, смотреть не рекомендую.

Афера Оливера Твиста (Twist, 2021). Низкобюджетный и низкопробный английский телефильм, после просмотра которого возникает один вопрос: как туда удалось затащить Майкла Кейна?

Огонь (2020). Редкая по накалу идиотии очередная попытка снять "наш ответ Голливуду". Местами вроде как и нормально, но местами такая муть (вроде родов в автобусе на горящем мосту), что можно убить себя фейспалмами. Ну и картинка пожаров такая, что у авторов фильма невольно хочется спросить: "А вы когда-нибудь хотя бы у костра среднего размера пробовали постоять?"

Сериал

Фортитьюд (Fortitude, первый сезон). Первые 2/3 смотреть было интересно. Но финал первого сезона как-то совсем уж уныло и бездарно слили. Поэтому желания смотреть последующие сезоны не возникло.

четверг, 25 февраля 2021 г.

[prog.flame] Тесты как показатель качества?

Сегодня хочется поговорить об одном найденом на просторах Twitter-а высказывании:

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

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

Итак:

Качество -- это оценка ценности некоторого изделия.

Тест -- это оценка пригодности некоторого изделия к выполнению своей основной функции (одной из функций).

Соответственно, качество и тесты -- это про разное.

А теперь позвольте растечься мыслею по древу...

среда, 10 февраля 2021 г.

[prog.c++] Куда не заглянешь, везде чего-нить да унюхаешь...

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

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

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

Приведу пару свежих примеров.

понедельник, 8 февраля 2021 г.

[soft.process] Погружение в Agile: так есть ли в этом всем смысл?

Пожалуй, нужно подвести итог темы, начатой в ноябре прошлого года. Про Agile и непрекращающийся шум вокруг него.

Начитался и наслушался тут разного. И, похоже, сложилось у меня некоторое мнение. Уж не знаю, стоит выносить его на публику, но попробуем.

Итак, Agile есть и он работает. Действительно.

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

вторник, 2 февраля 2021 г.

[soft.business] Послесловие к неудачной попытке найти внешнее финансирование для RESTinio/SObjectizer/so5extra

На данный момент история с поиском финансирования закончилась ничем. Развитие наших OpenSource-проектов приостановлено. Попробуем поднакопить средства на заказной разработке/консультациях, чтобы затем вернуться к работам над RESTinio/SObjectizer/so5extra.

А в этом послесловии просто расскажу на что был расчет когда писался пост о поиске внешнего финансирования, может кому-то пригодится наш опыт.

Суть в том, что у SObjectizer-а и у RESTinio совершенно разные ситуации.

SObjectizer старый и устоявшийся программный продукт. Далеко не самый популярный и известный. Если его следующий релиз выйдет в конце 2021-го или даже в начале 2022-го, то отрицательно на SObjectizer-е это вряд ли скажется. А если и скажется, то не сильно.

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

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

Добавим сюда еще и то, что для успешной конкуренции с аналогичными проектами RESTinio очень желательно было бы иметь поддержку не только http/1.1, но и хотя бы http/2.

И если уж менять http-parser на что-то другое, то можно было бы под этим соусом добавить в RESTinio и http/2. А если получится, то и заложить возможность последующего добавления http/3.

Сложно сказать, во что бы это все вылилось по трудозатратам. Но по первым впечатлениям, от 3 до 5 месяцев это могло бы занять. Тут нужно учитывать, что мы стараемся тщательно тестировать RESTinio, писать примеры и расширять документацию. Это такая работа, которая может быть не видна, но которая должна быть выполнена, и которая занимает изрядное время. Поэтому если кому-то кажется, что 3-5 месяца для написания собственной поддержки http/1.1 и http/2 -- это слишком много, то мне лишь остается позавидовать вашей производительности и трудолюбию.

Итого, если начать работы над RESTinio-0.7 сейчас и вести их не отрываясь ни на что другое, то выкатить новую версию получится лишь где-то к лету 2021-го.

В прошлом году мы рассчитывали заработать на arataga, также в начале весны маячили на горизонте новые заказы. Но ничего этого не случилось. Поэтому у нас сейчас нет денег на то, чтобы вложиться в разработку следующей версии RESTinio.

Мы встали перед выбором: либо заняться заказной разработкой и остановить развитие RESTinio на какое-то время, либо же поискать внешние вложения.

Остановка развития RESTinio выглядела слишком рискованно. Сперва RESTinio будет заморожен на 5-6 месяцев, затем в течении еще 3-5 месяцев будет вестись разработка новой версии с релизом RESTinio-0.7 где-то через год... Отличная перспектива чтобы закопать проект.

Поэтому мы решились на поиск внешнего финансирования.

Фактически, мы пошли с протянутой рукой. Мол, сами мы не местные, помогите кто чем может.

Варианты с платной техподдержкой и "рекламными услугами" были выбраны по следующим причинам:

1. В РБ (да и в РФ) нельзя просто так взять и внести деньги на счет коммерческой структуры. Поступление денег должно быть оформлено договором. Лучше всего, если это договор на оказание каких-то услуг или на выполнение каких-то работ. Техподдержка и "рекламные услуги" как раз и являются теми формами договорных отношений, которые позволяют нам получать деньги ровно за то, что мы и делаем. И не требуют от нас ничего больше, за исключением оформления некоторого количества дополнительных бумажек раз в квартал (в виде актов по выполненным работам).

2. Суммы мы выбрали такие, которые крупные (и даже не очень крупные) компании могут выложить не задумываясь. Грубо говоря, в компании с несколькими тысячами сотрудников 150USD в квартал отдел маркетинга может запросто потратить просто "на скрепки". Мы надеялись, что сумма в 600USD в год для крупного производителя софта будет достаточно мизерной для того, чтобы ответственные люди могли дать добро на помощь нашим открытым проектам не заморачиваясь на то, что мы можем дать взамен.

Если же называть вещи своими именами, то мы рассчитывали на благотворительность.

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

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

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

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

PS. Если какая-то компания хочет вложиться в разработку RESTinio/SObjectizer/so5extra (например, хочет поиметь какую-то специфическую функциональность), то давайте пообщаемся на eao197 на gmail тчк com. Можно обсуждать различные варианты сотрудничества.