Лаборатория Математики и Программирования Сергея Бобровского
1.41K subscribers
1.55K photos
28 videos
1.16K links
ЛаМПовое с Бобровским
Download Telegram
Ну, с Днём Рунета!

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

По заветам базы из 1985-го: FLP (Fischer–Lynch–Paterson), фундаментальный закон теории распределённых вычислений.

В полностью асинхронной системе, где хотя бы один узел может упасть, детерминированный консенсус гарантировать нельзя: можно сохранить safety ("ничего плохого не происходит", корректные узлы дают корректные данные), но нельзя гарантировать завершённость ("рано или поздно произойдёт что-то хорошее" -- все корректные узлы в итоге корректно закончат работу).

В мэйнстриме решается частичной синхронизацией, таймаутами, детекторами сбоев и прочими приляпками. Точнее, особо даже и так уже не решается, т.к. там ни про FLP, ни про CAP и CALM и духом не нюхивали, тем более в вайб-кодинге.

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

Так и в жизни, нельзя гарантировать, что рано или поздно произойдёт что-то окончательно хорошее :) Но временно, может длиться норм.
❤35✍6
Ладно, вот вам база, почему так трудно переучиваться с императивного/объектного стиля кодинга на функциональный
(утащил у Майкла Шульмана из Univalent Foundations of Mathematics).

В мэйнстриме мы строим типы и данные из простых элементов (int, string, класс, иногда даже sum/product и немножечко lambda/map/reduce). Но это чисто аддитивная сборка: из ничего/примитивов наращиваем структуру, и по сути мышление теорией множеств ("classical set theory is additive synthesis of algebraic structures (start from nothing, add up structure)").

Соответственно, подход абсолютно кривой, чисто инженерный, т.к. эта теория к программированию не имеет никакого прямого отношения :)

Программирование -- это очевидно (далеко не всем:), теория типов прежде всего. И HoTT это по сути тут крайний, "вычитающий" подход (отсекаем от куска мрамра всё лишнее, и получаем прекрасную скульптуру). Стартуем с уже богатой структуры (типы как пространства, равенства как пути, бесконечные слои гомотопий) и получаем нужное, отождествляя, свёртывая, сжимая и отрезая лишнее. Правильное понимание -- это свёртка смысла, это то, что например делает AI при "суммировании"...

Тут мы (как минимум) думаем зависимыми типами, равенствами как структурами, изоморфизмами, путями, это уже чистая логика типов, Карри-Ховард, Coq/Agda/Lean, щедро приправленная (то ли изнутри, то ли снаружи, парадокс:) теорией категорий ("homotopy type theory is negative synthesis (start with categories with infinite layers of homomorphism, carve out structure)").

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

"...ибо иго теории категорий благо, и бремя гомотопической теории типов легко есмь" :)
❤28👍9✍4⚡1
Ребята спрашивают, ну ок, моё скромное мнение.

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

Стратегически двигаться теперь имеет смысл только в одно (увы:) - AI Engineer. Я тут специально делал не раз акценты именно на уровне техдира,

потому что уже мало по сеньорски уверенно владеть кодингом, бэком, архитектурой, хайлоадом,

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

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

научиться качественно писать спецификации (например, BDD, DDD, SDD уже не просто экзотические термины для собесов, это реальная практика),

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

Околовечные темы в CS? ну это просто очень нишевый подход нашей Лаборатории, потому что через формальные методы можно существенно упростить работу с AI, но для этого требуется понимание если не на уровне PhD, то как минимум средние курсы мехмата.

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

Ну да, теперь это всё сливается в одно - AI Engineer, но в каждом конкретном проекте множество скиллов/технологий будет всё более и более различаться.

- В старых ваших материалах читал, что лучше расти как синьор (возможно, на нескольких работах), а не уходить в лиды/техменеджеры? По-прежнему так думаете?

Нет ) Теперь всем надо расти в уровень CTO.

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

В айтишке более нигде и никогда надёжности не будет )

Точнее, надёжность и деньги в будущем вижу только
1) для сильных CTO с AI,
2) для инди-хакеров и мелких стартаперов, которые побарахтались в самостоятельных коммерческих проектах, наелись нейронок по самые уши, и по сути уже готовые CTO с опытом и есть, и перейти в п.1 им куда легче, нежели даже многим сеньорам (но совсем не факт, что нужно переходить).

- Стоит ли уходить от кода в инфраструктуру (DevOps/SRE), раз даже локальные модели уже неплохо пишут код?
Как будто кажется, что не так много бывших и будущих студентов хотят лазить с линуксом и кубером (больше хотят ИИшку), а сама тема очень важная для компании, да и платят там неплохо.
Кстати насколько я изучал тему зарплат на русском айти рынке, за последний год зарплаты не просели только у Девопсов и 1Сников :)


Да, однозначно, ну понятно почему, вайб-кодинг -- это уже прежде всего devops, код нейронка напишет, а что толку, если работает лишь на локалхосте )

1C всегда будет жить хорошо.

Только не "уходить от кода в инфраструктуру", а добавлять прокачанную инфру в своё множество скиллов.
6❤33🫡10👍6💯1
.

Облако драгоценностей за неделю.

скоро зима (с)

Приватный клуб.

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

Если ваш начальник внезапно выдаст вам 100,000 рублей на развитие карьеры, вы знаете, что делать? Вы поедете на конференцию, купите учебники и курсы, наймёте ментора, отправитесь на семинар, вы теряетесь в море вариантов, вы...
Идеи переполняют вашу голову. Вы думаете, что может быть, стоит проконсультироваться у кого-то более опытного?
Однако опытный специалист ответит примерно так: "я не могу указывать вам, что делать с вашими 100,000 рублей, если вы сами не знаете, чего хотите"...

Для донов-начинающих:


(лонгрид) Сейчас все говорят об агентах искусственного интеллекта, но почти никто не может внятно объяснить начинающим, что это такое на самом деле.
Вот основная анатомия AI-агента, 5 пунктов...

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

Для донов-неначинающих:


Продолжаю набор на занятия для неначинающих (миддлы сеньоры), 2 места закончились за 58 минут...

Если не хватает мотивации зарабатывать деньги программированием (расти по карьере, создавать коммерческие проекты)? Далеко не только по моим наблюдениям, самые осторожные тут - семейные с доходом 200-500 (т.е. практически все миддлы и сеньоры:), меньше всего задумываются о своём росте.
А ведь AI уже тут: число программистов быстро сократится в 100 раз.
Причин много...
...Ну и естественно, что на этом фоне не то что желание расти не появится, наоборот зарплата будет плавно падать. Чем более комфортные условия, тем более примитивные организмы в них существуют, а в идеальных условиях вообще одни амёбы и планктон.

(все старые материалы для донов быстро сгорают)

=

Новые материалы для ментатов Лаборатории.

В СильныеИдеи добавлены материалы
161) TDD для сложных систем
Как модульно тестировать сложные системы? Как применять TDD в таких случаях?
Ведь введение в TDD по понятным причинам ограничивается совсем простыми задачами - например фибоначчи или какой-нибудь классической структурой данных. Общее у этих задачах то, что на них легко объяснить и продемонстрировать TDD программистам, незнакомым с процессом TDD.
Но как быть в реальных сложных случаях?..

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

=

"Функциональные архитектуры" 178(+2) топиков.

LPF закончен, думаю, куда и как дальше - 3 :)
стратегических направлений пока два: (Meta)Principles Framework или детский сад геймдев где очень быстро обнищаю и умру от голода

=

"ЛаМПовое":

шиз и навье-стокс, sql-аналитика на агентах по-взрослому

=

Мы здесь, потому что это трудно 💪🏻

=

Сознание ментата может стать сознанием полного идиота в присутствии сил, которые беспощадно пронизывают Вселенную. Возможно, в мире живут такие люди, жизнь которых пронизана силой, которую он не мог себе даже вообразить. Перед лицом таких сил он становился утлым судёнышком, несущимся по воле бурных волн.
"Еретики Дюны"
❤27✍7👍5
Просили пояснить за (M)PF геймдев ↑

Сложно сегодня придумать более сложное бизнес-направление, согласен :)

Например:
Число компаний и ИП, специализирующихся на создании видеоигр, за январь—август выросло на 59,2%. Участники рынка объемом 208 млрд руб. отмечают, что порог входа в разработку снизился за счет массового распространения нейросетей. Это, а также наличие юрлица как условие получения господдержки способствует росту числа новых издателей.
По итогам восьми месяцев 2026 года в России были зарегистрированы 121 компания и индивидуальный предприниматель, специализирующиеся на издании компьютерных игр.
Всего в России зарегистрировано 544 действующих игровых издателей.



За счёт чего их число растёт?? На яндекс-игры например ежемесячно поступает 10 тыс. новых игр, там игроков уже меньше чем игр!

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

Правильному подходу кстати учили инфоцыги, и их всех пересажали. Конспирологическая версия: вот именно за то что учили как правильно :)

*Сперва* делаем лендинг за полчаса в нейронке, даём рекламу вк за 500 рублей, считаем лиды, принимаем оплату и потом возвращаем деньги, ну или оказываем услугу вручную. И только *потом*, если маржа "сколько платит 1 клиент с рекламы" положительная, делаем продукт/сервис.
В 99,999% кстати лидов не будет вообще :)
Поэтому инфоцыгане особо учили: ищите ниши, где спрос превышает предложение.

А новоявленные гейм-бизнесмены просто клонируют друг друга: гиперказуал, айдлы, три в ряд, раннеры; борьба за одну и ту же аудиторию одними и теми же средствами. Глупо тупо и нелепо. Классическая динамика красного океана: прибыль испаряется, остаётся бесконечная борьба за выживание. Господдержка кстати тут только усугубляет перегрев.

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

Свежая статистика: портрет инди-разработчика из России.
"чуть больше половины опрошенных занимаются играми на голом энтузиазме и пока не получают за свою работу никаких денег — таких инди-команд в России 53,7%. Кроме того, в 22,2% команд зарплату платят только отдельным сотрудникам и лишь в 15,4% команд — всем участникам;"

Да, но и что теперь? Как тут быть? И куда дальше?

=>
✍37❤9🔥3
Мнения экспертов по индустрии разработки игр в целом можете при желании найти сами на ютубе - куда это всё идёт (спойлер: хз:).

Вот еще хорошее: 400 000 продаж за 2 ДНЯ. Гениальный маркетинг Graveyard Keeper 2 и tinyBuild

По мне, инди-разработка это просто a) увлекательное и b) мотивирующее занятие, потому что даже не ошибка выжившего, а реально у немалого числа разработчиков получается таки выпустить успешную игру, что ни в каком другом ит-бизнесе нереально (ну ок, в другом ит-бизнесе не так реально и не так масштабно, а главное, скучно и уныло). Хотя как правило далеко не с первого раза.

Потому что сегодня несложно выделиться на общем фоне гейм-слопа. Смотрел например на днях, еженедельный обзор 25 инди-стратегий, так в них не было ни одной(!), по качеству графики сравнимой хотя бы со старкратфом 2. Какие-то тусклые палитры или угловатые тридэ фигурки уровня 20-летней давности. Полня безвкусица.

Куда идти? В нишевые игры под узкую аудиторию, в новые механики, в культурную специфику... Хорошо также продавать лопаты :) Готовые решения для разработчиков: шаблоны, инструменты, движки, аналитика, монетизация. Собственные платформы, сообщества, дабы уйти от зависимости от алгоритмов.

Но это если думать о геймдеве прежде всего как о бизнесе. А если просто как о перспективном хобби?

С одной стороны, мне было очень хотелось сказать, что надо долго вкладываться в одну игру. Вот свежий пример:
Автор фритуплейной КИИ про Вторую Мировую ищет издателя на проект

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

В геймдев с нуля после 40 много полезного опыта :) при том что сам автор не программист.

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

Я больше за быстрые версии (много - и рано или поздно что-то (вероятно) выстрелит), на которых отлаживал бы сам процесс продвижения из предыдущего поста.
В тему, 13 игр в 13 Килобайт 2026 - JS13KGAMES

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

Выводов никаких, думайте сами :)
❤30✍17👍5
Пацаны волнуются, не ухожу ли я в геймдев ↑↑↑
не-не (но название dwarf fortness застолблю :)

Дальше, вот чёткая цель Лаборатории: надо всеми силами "создать ситуацию, при которой у нас возникнет интеллектуальная думающая элита и люди, которые выйдут по интеллектуальному развитию на второй-третий план".

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

Как? Ну вот в нашем случае (Meta) Principles Framework. Это будет такое своеобразное думательное мета-(мета-...)покрытие над всеми материалами Лаборатории. По статистике сотен ребят я накопил немало мета-паттернов, которые надо систематизировать и формализовать. Например, частый случай, когда ребята применяют рекомендации с Функциональных архитектур, hard work и занятий по AI, пишут фидбек "вау! круто! x10", но по каким-то своим тестовым случаям, сайд проектам, а по работе применять боятся почти все, причём даже на уровне буквально 10-строчных сниппетов. И тут же пишут, как завалены текучкой по работе, не успевают, всё криво и сплошной big ball of mud :)

Вот тут как раз и не хватает (M)PF, когда правильное мышление уходит в бессознательную компетентность, и просто не можешь писать код/спеки неправильно.

Ну а в целом это прежде всего про то, как переупаковывать (в своей голове или в нейронке) типичный мидл-код без лишней HoTT-формалистики, но способом мышления (спеки/мета-спеки) в математически идеальном стиле type theory + category patterns.

Не столько решаем задачу, сколько обобщаем её до типа, который сам и есть решение. Это тот самый единый вкус гротендиковщины. Все эти ваши (многократно вложенные) генерики, тайпклассы, higher kinded types, функторы, монады, натуральные преобразования (что разбираем в LPF) -- это по сути лишь синтаксис, с помощью которого мы переходим к совсем другим мета-абстракциям.

То есть через синтаксис (он формален!) поднимаем семантику паттернов в коде/спеках так, что вся сложность переезжает из вычислений в правильную постановку для AI (и это частично на ФА разбираю). На начальном уровне крепких мидлов, это может быть например алгебра данных, DSL, категориальный интерфейс, доменная typeclass-like абстракция и т.д.

Лифтим всё что можно в слои параметризованных структур, где конкретика исчезает за универсальными морфизмами/обобщёнными интерфейсами/extension methods/wrapper types/...
а вместе с ней "исчезает" и сама задача, потому что внезапно становится ясно, что это просто лишь частный случай одного из подобных паттернов...

Ну вы поняли :)
1❤37🔥15❤‍🔥3
Про очередной хайп, как суперинтеллект якобы решил 700 сложных математических проблем, я прочитал уже в десятках каналов, причём подчас весьма авторитетных, и что интересно, практически нигде не увидел и крупицы критического мышления, что честно говоря весьма удивительно. Сплошные прям восторги.

Ну, во-первых, из 700 только около 300 имеют какую-никакую формализацию на лине (которая сама по себе тоже далеко не стопроцентная гарантия правильности).

Во-вторых, академическое математическое сообщество к этому отнеслось весьма негативно: от откровенно прохладно до крайнего неприятия. Да, небольшой процент прикормленных штрейкбрехеров конечно нашелся, но и всё. А так, вот например Энрико Фатигенти, математик из Римского университета пишет:

"Они просто опубликовали несколько статей объемом более 100 страниц, в которых утверждается, что они решили ту или иную проблему, часто с избыточными аргументами, неясной логической структурой, множеством тупиковых ситуаций и странной или вызывающей беспокойство терминологией - другими словами, с нейрослопом. И затем ожидается, что мы пройдемся по пейперу, проверим, очистим, упростим и объясним, что происходит на самом деле."
(тут можно предположить, что ув. Фатигенти возмущается скорее тем, что "мы пройдемся по пейперу" бесплатно, ну ok:)

В-третьих, значимость самих проблем сильно преувеличена. Да, над ними работают годами или десятилетиями, но или в одиночку или совсем маленькими коллективами. А в программировании нередки проекты на десятки миллионов строк кода и тысячи человеко-лет, где логическая сложность создания/"решения" превосходит тот же Навье-Стокс на порядки. Просто тут есть хорошее финансирование, а в математике увы нет.

Если бы например лет 10 назад прилетели инопланетяне и заявили: либо вы за год решите проблему Навье-Стокса, либо мы уничтожим всю Землю, ну разве бы человечество не справилось? Был бы организован всемирный проект, вложены все имеющиеся ресурсы, и 100% планета была бы спасена, и тоже касается практически всех остальных мировых математических проблем по сути.

А вот если например задача была поставлена формально верифицировать дистрибутив arch linux, или за год сделать GTA VII, нууу, далеко не факт, что человечество справилось бы :) Даже и сегодня с помощью суперинтеллекта.
2❤29👍6👌3
Ладно, вот серебряная пуля всей инженерии агентов: декомпозиция. Темка, которую святые computer science развивают лет 70. Всё те же пресловутые low coupling + high cohesion, по которой спрашивают на собесах  наверное каждого миддла.
Паттерны проектирования, GRASP, вот это вот всё.
 
Да, но почему тогда в мэйнстриме бесконечно длится "весь этот горький катаклизм, который я здесь наблюдаю, и Владимир Николаевич тоже"? :)
 
Ведь казалось бы, всё легко и просто: пообщались с заказчиками, подготовили какое-то неформальное ТЗ, декомпозировали его в более-менее чёткие спецификации/тикеты, затем эти спеки декомпозируем в абстракции (паттерны, модули, типы, классы, функции), забрасываем в жпт, профит!
 
Ведь факт, что уже даже средние нейронки сегодня способны реализовывать абстрактные задачи (по сути, чистые функции) на уровне  олимпийских чемпионов по программированию.
 
Ключевая засада тут - в композиции, в синтезе. Декомпозировать текстовое описание например в классы Гном, Крепость, Оружие - элементарно, да вот только как их собрать в целостную работающую систему? С помощью каких инструментов (паттернов...)? И главное, как?
 
Вот это чистый Software Design и есть. Вся вторая часть Лаборатории по сути именно этому и посвящена. Объектно-ориентированный анализ и проектирование, функциональное проектирование/функциональные архитектуры и т.д.
 
Но, признаю, явный акцент на декомпозиции я стал делать только в последнее время, с развитием AI, когда это стало ключевым по сути. И нейронки тут пока слабы, и не факт что усилятся - просто потому, что нету подходящих датасетов, и уже никогда не будет.

С этой засадой -- хрупким синтезом - и связан поток тысяч статей и библиотек по инженерии агентов, харнессам-шмарнесам и прочей малополезной ереси, которые пытаются решить её различными инженерными приляпками.
 
Вот что я имею в виду: бешеная скорость генерации кода нейронками повышает ценность качественной модульной архитектуры, потому что стремительно накапливается связанность/запутанность, и big ball of mud раздувается прямо на глазах :)
 
С другой стороны, дешевеющая переделка нейронками снижает ценность архитектурных вложений, потому что переписать становится дешевле, чем заранее грамотно проектировать. Но это ненадолго: такая переделка быстро перестаёт быть дешёвой, когда локальное изменение требует понимания, проверки и модификации всё более значительной части системы. Понадобилось подправить одну функцию, и агент попутно перефигачил 128 файлов, где она использовалась, и наверняка что-то поломал в логике (на "Неявных механизмах логики" разбираю многие десятки таких побочек, и что с этим делать).
 
Теперь агент молниеносно превращает неоднозначность в большой объём кода, а то и спецификаций, и вроде бы всё смотрится согласованными. Ошибочное допущение успевает распространиться в проекте быстрее, нежели человек его заметит, а внешняя стройность и успешные тесты часто создают ложную уверенность что всё норм.
 
Короче, декомпозиция -- это не про "разбить на побольше маленьких задачек", а про то, как выбирать границы, внутри которых можно независимо понимать, проверять и реализовывать спеки, и как синтезировать из маленьких артефактов корректно работающую систему без потери общего смысла. Не принципиально новая проблема, но прежние подходы оказались слишком хрупкими -- ломаются под невиданным ранее темпом кодогенерации.
 
То есть когда декомпозиция проводится без сохранения целостности, это никакое не решение проблемы, а карго-культ. Сложность просто переносится на интеграцию, которая исходно не присутствовала в модели вообще!
 
Так вот мой подход: "ТЗ декомпозировали в более-менее чёткие спецификации/тикеты, затем эти спеки декомпозируем в абстракции (паттерны, модули, типы, классы, функции)" - добавляется промежуточный шаг, декомпозируем в абстракции, но не сразу в типы и функции, а в паттерны теории категорий (Last Principles Framework), и вот тогда уже появляется и явный синтез, и автоматическая сборка, и математически абсолютный Software Design.
 
Но, да, думать при этом придётся существенно больше и существенно тяжелее :) И нейронкам особо не делегируешь. Но зато и профит несравнимый.
👍31❤11✍3🙏3
Продолжаю работу с ментатами 🤓

Буквально в сентябре потратил 2 недели впустую. Работал не по каноничному SDD, по самопальному, но тем не менее.
Затеял миграцию слоя-обвязки БД, максимально покрыл тестами, и красными в том числе, которые должны после миграции были заработать. И BDD-сценарии написал. Расписал кучу adr, и md файликов, и планы сделал -- и глобальный, и на каждый день. Все вычитал за ии.
В итоге получился уродливый кентавр из нового и старого кода. Довольно быстро понял, что все идет не по плану, но из любопытства решил довести до конца. Очень быстро терялся контекст, что подлежит замене, что нет. Агент просто стремился сделать все тесты зелеными. И они зеленые, только при этом старые проблемы были хитро спрятаны, слои "протекали" друг в друга, на границах слоев были абсолютно хрупкие и безликие конструкции на словарях и кортежах, которые только прятали реальные проблемы под ковер. Классический big ball of mud...


Вчерашнее как раз было про это.

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


Классический пример, что мы разбираем в "33 стилях программирования" -- хипстерство/говнокод (кто в академиях/лабораториях не обучались:). Какое там мышление паттернами! (которое само по себе первый шаг в профессиональную разработку, потом абстракции, потом полноценная computer science...) Детский сад штаны на лямках. Недаром кстати года три назад в гошку генерики добавили.

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

Словил вау-эффект. Сидел в lazygit, читал pull request, без подсветки синтаксиса. Раньше я думал что это какое-то снобство, как отключение подсветки может помочь продуктивности. Оказывается, без нее мозг перестает пропускать "мусорные" подсвеченные блоки кода, весь код становится равнозначно важным, и это как ни странно способствует большему погружению и что еще более удивительно - большему удовольствию от код ревью, которое мне никогда не нравилось делать.

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

...В целом про ФА и math, я его как отдельный модуль уже изучал, в первый раз было со всем тяжело с пониманием, много страшных «математических» слов, но толи я с тех пор терминологический аппарат подтянул, толи просто регулярное чтение ваших постов незаметно для меня же начало формировать понимание)

...Насчет чистых функций, согласен на 1000% - качество кода остается неплохим, когда даешь установку "писать в функциональном стиле" + общая декомпозиция системы, как это было показано в "Функциональных архитектурах" + установка на снижение цикломатической сложности. В итоге, по моему опыту, получившийся код воспринимать и понимать гораздо легче.

(правда, рассчитать цикломатическую сложность для функционального кода куда сложнее :)

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

К своему великому удивлению, благодаря дипломному проекту я оказался знаком с большей частью обсуждаемых тем ("Стачка"). Пошел на асинхронщину — там объясняли то, с чем я уже сталкивался. Рассказывали в общих чертах про backpressure — а я уже это проходил. Grafana, OpenTelemetry, Pydantic, DTO — оказалось, что благодаря курсам я вполне в теме современной айтишки))) Это ощущение дорого стоит, поскольку шел туда с ощущением лютейшего самозванства.
На секции по управлению слушал мотивационного спикера, который рассказывал про «помидорки», и оказался одним из немногих, кто поднял руку на вопрос, кто их использует. У другого спикера даже услышал знакомые по Telegram-каналу понятия «моноид» и «функтор», что дало еще одну отсылку к SkillSmart.
Основной нарратив многих спикеров: если не пользуешься ИИ с максимальной отдачей, рискуешь сильно отстать от рынка и стать невостребованным.
ИИ - это хорошо, но нужно развивать архитектурные навыки и вообще знать язык программирования (!!!!).

...Кстати, я тут сменил работу и на новом месте нет оплаченного ИИ, поэтому все нюансы я теперь познаю на своем кошельке :) И тут очень пригодился агент, которого вы рекомендовали для изучения ранее - [...]

...Yazi нормально заменяет проводник, когда надо зайти в каталог и глянуть файл в превью, но внутри него файл нельзя править, если проваливаешься в код, то там vim автоматически открывается:)


...Слышал про [...] до этого, но не ожидал такого прироста по точности исполнения моих запросов к нейронке. Более того, я и сам начал более сфокусированно думать спецификациями. Смотреть на систему на третьем уровне в связке с этим фреймворком получается гораздо проще и, в некотором смысле, естественнее. Кажется, что дальнейшая интеграция может поспособствовать ускоренному формированию и оттачиванию группы навыков, связанных с архитектурой и дизайном систем. И это, пожалуй, самое приятное, потому что субъективно сложнее всего на текущем этапе развития именно приучить себя думать на третьем уровне заранее и на постоянной основе.
Попробую внедрить в пайплайн разработки в подкоманде, коллеги вроде не против...


...Вот буквально сейчас в стартапе написал тимлид и позвал на созвон через 5 минут с ним и продукт овнером. Сказали, что я самый эффективный сотрудник в плане продуктивности AI-фикации разработки и решили оставлять только меня, с остальными бэкендерами расстаются.
Спасибо, Сергей Игоревич, за бесценные знания и опыт))

(это после моих принудительных рекомендаций по AI:)

Коль скоро начнут показываться помыслы, что вы хороши... знайте, что вы сбиваетесь с дороги...
Свт. Феофан Затворник
❤24✍8👍2
Если бы вы направили всю энергию, которую тратите на беспокойство о потере работы из-за искусственного интеллекта, на обучение продуктивной работе с искусственным интеллектом на уровне сеньора/техдира, вам никогда бы не пришлось больше беспокоиться о потере работы вообще по любым причинам.
3🫡31💯8👏6🤓5
Я такой:
- вот эта фича позволит реализовывать популярный класс твоих задачек в 2,7 раза быстрее.

Они такие:
- супер! здорово! спасибо! только сейчас нету времени это изучать.

ну штош :)
🫡25😁17✍3🐳3
Современные разработчики практически больше не имеют возможности получить следующий профессиональный опыт:

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

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

Помните, когда для решения сложных задачек или проблем с багами требовалось думать? Хорошие были времена.
2🫡27💯18🐳4🤯3❤2