recoder: (Default)

Чудна и непредсказуема жизнь вообще и программерская карьера в частности.

Судьба — коварная штука. Как только у тебя в руке собираются четыре туза, она решает сыграть в шашки.

Только я разобрался с современным C++, дождался пока вся контора соберётся двинуть на С++17, заархитектурировал взамен замшелого PoСo свою собственную мега-библиотеку (свободную от всяких фатальных недостатков)... как внезапно судьба забрасывает меня в облака, где эта плюсовая изысканность нафик никому не сдалась.

Штош, поскребли по мозговым сусекам, закатали рукава, и выкатили новые облачные сервисы на Питоне. Неожиданно выясняется, что у Питона имеется фатальный недостаток (и это вовсе не GIL) и чтобы все сервисы были в ажуре (pun intended) - надо срочно всё переписать на C#.

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

В целом оказалось что всё совсем не так уж плохо. Microsoft сделал из Java вполне себе неплохой язык, на котором можно программировать без отвращения. Язык вышел структурированный, но при этом очень прагматичный. В смысле - если нужна фича, которая упрощает программистам жизнь - то её впилят даже если при этом придётся немного подогнуть концептуальные рамки. В этом есть конечно и минус - когда язык быстро (не как vlang конечно) эволюционирует, не всё окружение успевает за ним. Я вот до сих пор не могу окончательно вкурить онтологическую разницу между Task и ValueTask. Ну и весь LINQ пока в голове не помещается. Спасает то что у остальной команды тоже пока что не вся спецификация всосалась, а там на горизонте уже C#11 появился...

Также очень по жизни помогают JetBrains Rider для сверхзвукового рефакторинга и Copilot для внезапных мистических озарений. Отлично зашли Fluent Assertions для написания красивых тестов. Хотел ещё мутационное тестирование попробовать, но пока сил не хватило.

В общем, напрасно я опасался - I am not too old for this shit.

recoder: (Default)

Переменчивая судьба забросила меня из уютной среды C++ разработки на передний край боевых действий - в облачные технологии. И вот уже которую неделю я пребываю в состоянии лёгкого офигевания...

Справедливости ради надо сказать что у нас и в направлении C++ последние годы движуха началась. Как десять лет назад отцы пообещали раз в три года перетряхивать стандарты, так и клепают новые фичи всё забористее и забористее. Чуть отвлёкся - и всё, перестаёшь понимать язык называемый Modern C++. Как завещала Чёрная Королева - "здесь приходится бежать со всех ног, чтобы только остаться на том же месте!" Добром эта гонка в пучины сложности не кончится, но какие альтернативы?

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

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

Вот он какой оказался - этот дивный новый облачный мир... Будем надеяться все эти жертвы будут не напрасны.

В любом случае - спасибо судьбе за очередную возможность проверить себя: не слишком ли я стар для этого нового дерьма?

recoder: (Default)

Всё-таки удивительная штука - жизнь практикующего программиста.

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

А потом внезапно приходят новые требования, в которых пишут "А ещё надо чтобы сверху были вращающиеся рога с воздушными шариками!"

work

recoder: (Default)

С утра побывал у зубного. Час пренеприятных, хотя и неболезненных, процедур. Но всё равно настроение уже не то. Да и повторные визиты предстоят...

После обеда побывал на менеджерском митинге. Ощущения сходные.

life work

Short week

May. 13th, 2006 12:59 am
recoder: (Default)

Что ни говорите, а трёхдневная рабочая неделя - рулит!

А если серьёзно - то я недавно прочитал интересную статейку Райана Карсона "The Four-Day Week Challenge". Про то как отдыхать три дня в неделю, а работать соответственно, четыре.

Основные мысли такие: какова бы ни была напряжённой неделя, всё равно остаются какие-то недоделаные дела. Так что надо просто правильно расставить приоритеты задач и уяснить себе, что все эти задачи надо выполнить за четыре дня. После чего будут три дня расслабления.

Read more... )

work

recoder: (Default)

Пришло время дать Вторую Программерскую Клятву. (Первая Клятва была больше года назад…)

Непрограммистам неинтересно )

И да будет так. Отныне и пока у меня не отнимутся руки от карпального туннельного синдрома.

coding
work

recoder: (Default)

Регулярное чтение [livejournal.com profile] code_wtf и [livejournal.com profile] daily_wtf очень хорошо поднимает настроение и помогает спокойнее переносить чтение исходников в корпоративном Source Control System. Рекомендую!

work

recoder: (Default)

Весь мой жизненный опыт, а особенно опыт участия в написании софта привёл меня к интересному выводу:

Простые задачи решаются легко и просто.
Сложные задачи полностью не решаются вообще.

Поэтому единственно верный способ решать [сложные] задачи - это последовательно разбивать сложные задачи на более простые, пока не будет достигнут атомарный уровень простых под-задач. (Ср. с мозговым штурмом - 1,2.)

Раглагольствования на тему )

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

work
management

recoder: (Default)

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

И наступает простое программерское счастье. Налить кружку крепкого кофе. Поставить в WinAmp кольцом что-то типа «Orbital — Halcyon & On & On» или «Orbital — Dwr Budr». Загрузить любимый редактор. И наконец, спрограммировать что-то великое и полезное.

Ща вот наработаюсь и опять пойду мучаться острой яблочной недостаточностью.

work

recoder: (Default)

Складывается одна интересная тенденция по моему опыту работы в нескольких офисах в Штатах и нескольких офисах в Москве. Американский офис - как интерьер в ИКЕЕ: неизменен с момента его создания и до момента его редизайна (неважно - мелкого ли, крупного).

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

Рано или поздно проявляются признаки декаданса. Ковролин хищно махрится петлями. Урны для бумаг обрастают грудами мусора. На кухне пропадает сначала хороший кофе, а потом и весь остальной. Кондиционеры хрипят, но не работают. Из мебели и дверей постоянно сыплются шурупчики. Сортиры покрываются налётом... кхм, того чем обычно они и покрываются. В общем, мало что напоминает о былой роскоши.

Почему такая разница - не понимаю. Есть конечно догадки, но не более того...

office-space

SNAFU-2

Oct. 24th, 2004 07:24 pm
recoder: (Default)

Вот вместо того, чтобы сидеть и тупить на этом мудацком суппорте, я бы мог ща доехать до Бостона и пойти на выступление Металики (с Godsmack на разогреве) во Fleet Center. Или просто по Бостону пошататься. Или на пирсе на океан помедитировать. Ан нет...

SNAFU

Oct. 23rd, 2004 02:11 pm
recoder: (Default)

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

Чувствую себя полным индусом на саппорте первого тиера. Не знающим толком ни продукта, ни языка. То есть чувствую себя полным дерьмом. (*) Ну да ничего, добьёмся и перебьёмся!


(*) Как и обещал, ничего плохого не хочу сказать про индусов. Просто порядочный индус в моём положении должен чувствовать то же самое.

December 2024

S M T W T F S
1234567
891011121314
15161718192021
22232425 262728
293031    

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 24th, 2025 09:11 am
Powered by Dreamwidth Studios