Skip to content

tshemsedinov/feed

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

91 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Timur Shemsedinov - Feed Archive - 2026

See more: ...2026, 2025, 2024, 2023...

Node.js primordials: 2026-04-29

Primordials тормозят развитие Node.js, мешают поддерживать код платформы, быстро онбордить новых контрибьюторов, искать и исправлять баги, влияют на деоптимизацию кода, и в итоге все работает медленнее.

Primordials - это сохраненные на старте ссылки на чистые встроенные объекты и методы JS. Они нужны, чтобы userland-патчи Array/Object/Promise не ломали internals. Плюсы: надежность. Но это делается не для безопасности, а чтобы миксины и полифилы не влияли на код внутри Node.js. Минусы: более сложный код, сложнее контрибьютить и искать баги, возможна деоптимизация.

Как это выглядит в коде ноды:

const { ArrayFromAsync, PromisePrototypeThen } = primordials;
// ...
PromisePrototypeThen(
  ArrayFromAsync(new Glob(pattern, options).glob()),
  (res) => callback(null, res),
  callback,
);

Но есть альтернативные решения, например: разделить контекст выполнения на два изолированных V8-контекста во время старта: один контекст для userland-кода, другой для внутреннего кода Node.js. Userland-код может свободно monkey-патчить Array, Object, Promise, Error, но эти изменения не будут влиять на внутренние копии, которые использует Node.js core.

Плюсы:

  • Внутренний код становится ближе к обычному JavaScript
  • Ниже порог входа для контрибьюторов
  • Меньше runtime-накладных расходов
  • Меньше проблем с оптимизациями V8

Минусы:

  • Встроенные классы из разных контекстов не идентичны: Error !== context.Error
  • Проверки instanceof могут ломаться на границе контекстов
  • Обработка ошибок становится сложнее
  • Внутренние API, которые передают объекты в userland, требуют специальных решений
  • Контексты тоже не являются security-механизмом

Когда внутренние API передают объекты в userland, например:

.on('error', (error) => console.log(error instanceof Error))

это вернет false. Но мы можем создавать эту ошибку через:

new userland.Error('message')

Тут мое предложение решения: nodejs/TSC#1439 (comment) Тут критика primordials от специалиста по оптимизации: nodejs/TSC#1438

Поддержите инициативу, добавьте свои варианты решений, если есть идеи, и критику предложенных решений.

Software engineering in crisis: 2026-04-19

Cегодня в 18-00 стрим, где мы разберем, как в 2026 году оставаться актуальным и развиваться профессионально несмотря на AI, увольнения в IT, экономический кризис, тотальное ускорение и нестабильность во всем мире. Что делать обычному инженеру, потому что просто быть уже маловато, как это было на растущем рынке. Просто фронтенд или просто бэкенд это все мало, даже фулстек не может позволить себе расслабиться. https://www.youtube.com/live/mSVCQ0VzIAo

Reduce complexity with AI: 2026-04-27

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

Так вот: завтра эта нейронка превратит 100 строк в 1000, послезавтра в 10000, а потом ты не сможешь заплатить за нее, или она сама не поймет это ни за какие деньги, сложность накапливается. Человек способен написать код, который не поймет через 2 месяца, нейронка способна написать код, который не сможет поправить через 5 минут. Тратьте больше усилий на уменьшение accidental complexity (на борьбу с оверинженерингом) и на сокрытие сложности.

Engineering thinking: 2026-04-24

Из всех моих курсов по петтернам, по Node.js, по асинхронному программированию, по архитектуре, люди научились не паттернам и не ноде, а натренировались по декомпозиции, рефакторингу, управлять распределением ответственности, зацеплением, структурной композицией и делегированием, состоянием, изоляцией, тем, что вообще массово люди плохо умеют. А сами паттерны мы используем каждый день ну 5-10 может, но не 23 как в GoF и не сотню, если считать вместе с архитектурными и другими non-GoF, остальные нужны раз в 2 года или вообще раз в жизни. Ценность этих курсов не в заучивании паттернов и api ноды. Это все только повод для инженерного мышления.

Thanks to AI: 2026-04-21

Спасибо ИИ, что теперь есть кому читать мои Design docs, ADR, RFC и другие md файлы, концептуальный код, сложные ТЗ и примеры кода, такого благодарного читателя сложно было представить.

Degradation with AI: 2026-04-18

К тому моменту как AI сможет осуществить все желания людей, они потеряют возможность эти желания внятно выражать, а будут просто показывать пальцем и мычать

Programming Knowledge: 2026-04-16

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

  • Data structures (just how to use)
  • Type systems: nominal, structural, variance...
  • Modularity system (in your language)
  • Polymorphism (Ad-hoc, Subtype, Parametric, etc...)
  • Structural composition, aggregation, delegation
  • Functional composition, pure functions
  • Abstraction layers separation
  • Dispatch and Dynamic dispatch
  • Referential transparency
  • Law of Demeter
  • Abstract data types (ADT)
  • Hidden and explicit state
  • Lazy evaluation
  • Declarative vs imperative style
  • Recursion versus loops
  • Generics (generic programming)
  • Separation of concerns
  • Isolation, interfaces, architectural boundaries
  • Dependency injection and Inversion of control
  • Coupling and cohesion
  • Mutable vs immutable data
  • Idempotent operations
  • Naming conventions
  • Error handling
  • Refactoring, code review process
  • Tests (unittesting, coverage, end-to-end...)
  • Multiparadigm programming
  • Metaprogramming (codegeneration and dynamic)
  • Platform-agnostic, framework-agnostic approach
  • Domain-Specific Language (DSL), Interpreter, AST
  • Contract programming
  • Concurrency and Asynchronous programming
  • Separation of system and applied code
  • Language and semantics
  • AI-assisted engineering

Но все это тоже должно занимать в голове не более 30% от развития инженера, as of 2026. Про 70% напишу еще чуть позже Repo: https://github.com/tshemsedinov/Programming-Knowledge

Key skills for Software developer: 2026-04-14

В чем заключается эффективность инженера в 2026 году? Если помнить API и паттерны на память это не главное, если инструменты и AI доступны всем, знания доступны как никогда, но на их овладение нет ни времени ни внимания.

Тогда что главное?

Сила инженера сейчас в другом. В способности формировать мировоззрение и видение, задавать направление своим мыслям и тому же AI.

Как-то меня спросили после лекции "Где вы берете столько разнообразных слов и идей. Потому что я что не напишу - все контролер получается. А у вас все разное."

В чем секрет? Объемное видение формируется из мировоззрения, а нарабатывается годами на практических задачах. Например:

  • У меня есть бэкграунд кибернетики и обработки сигналов, системного программирования, научной деятельности, у каждого было свое окружение и точка старта, у кого-то геймдев, у кого-то сайты или системы отчетности, обратитесь к этому первому опыту, где сформировались первые идеи
  • Еще есть семья, которая на вас повлияла, вот у меня семья архитекторов и художников сформировала направленность на эстетические решения, а первый наставник по программированию заложил интерес к технике и педагогике, и как это соединить
  • Вспомните, что вы можете взять от старших коллег, я в первые 10 лет набирался от коллег не столько как программировать (ни кто мой код не смотрел, кстати и к сожалению), а научился я тому, как работать с людьми, с заказчиками, как формировать задачу, как обсуждать пути решения...
  • В большом государственном ИТ я узнал, как работать с рисками, как видеть цену ошибки, находить узкие места (и не в технологиях, а в человеческом взаимодействии) и как усиливать людей, как отвадить их от ложных мыслей так, чтобы они сами увидели проблему, а не повелительно им что-то прилетело (вынуждены работают).
  • AI сейчас генерирует тонны кода, и что кто это будет читать, кто за это будет отвечать или ориентироваться в этом? Держать AI в русле вашего мнения, а не нести вас неизвестно куда – вот что важно сейчас. AI должен снимать рутину, а не заменять ваше мышление. – Раньше инженерное мышление ожидалось от синьоров, теперь оно должно быть у всех инженеров. Поскольку код, знания и доступ к инструментам стали дешевле, дорожает только ясность мнений и качество решений.

Я, конечно, могу выдать вам еще список в 30 книг и 200 часов лекций, но вы и так знаете, где оно все есть и как найти, думаю над альтернативным форматом, который не отнимает столько времени. Предлагайте в комментариях.

How to save time: 2026-04-13

На чем можно сэкономить время, чтобы быстрее учиться и что скорее всего никогда не понадобится в реальном продуктовом коде:

  • Алгоритмы, задачи с литкода и кодеварс - это встроено в платформу, можно быстро найти, AI это напишет без проблем, это справочные данные, не нужно их зубрить.
  • Всякие учебные задачи, типа todo листа, калькулятора, крестики-нолики - они настолько далеки от практики, что просто отвлекают и забирают внимание.
  • Задачи на системный дизайн и высокие нагрузки - вы не проектируете гугл или амазон, у 99% разработчиков никогда не будет миллионов пользователей или распределенных высоконагруженных систем.
  • Микрооптимизация, выжимание производительности - что быстрее object[key] или obejct.key и Object.assign - это поправит AI по скилу, написанному экспертом, или вы хотите стать таким экспертом?
  • Не старайтесь изучить внутреннее устройство event loop, garbage collection, goroutine scheduler, это спрашивают на собесах, но не нужно в работе - собесы и найм сломан, туда бесполезно соваться.

Access to knowledge: 2026-04-08

Сейчас нет проблемы в доступе к знаниям, всего полно, нет времени на это.

Курсы, менторы, митапы, конференции - не меняют поведение без внедрения в реальную работу. Курсы не успевают разрабатывать, AI слишком быстро гонит всех вперед, на конференциях рассказывают то же, что и 5-10 лет назад, это бессмысленно.

Статьи и книги уже безвозвратно отстали. Вчера видел в книжном магазине: HTML, CSS (книга по верстке, бывает же…), Java, Python, ASP .NET (он что, жив еще?). Ладно, есть хорошие и толстые книжки, у меня на полке стоит Дональд Кнут, SICP, весь Робер Мартин и Эрик Эванс… не, не хотите почитать Фаулера или Клепмана?

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

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

Кто выбрал “Читаю и изучаю чужие исходники” - я вам не верю, вы не читаете даже то, что вам генерирует AI, и что пишут коллеги в проекте, а тут чужие исходники, да-да-да…

Interview and Hiring: 2026-04-06

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

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

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

Что реально нужно?

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

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

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

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

Hiring Problem: 2026-04-01

Link: https://x.com/tshemsedinov/status/2039373077432226009

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

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

Ralph Loop: 2026-03-15

AI loop (например Ralph) - это порочный круг, на каждой операции ниоткуда не добавляются новых знаний. Нужно стараться, чтоб AI выдавал результат за один раз. А на каждый следующий цикл можно заходить, если есть новые вводные, иначе все это деградирует и сжигает деньги и ваше время. Вот что я хотел на самом деле написать в том посте, который неправильно поняли и который я удалил, хоть я не имею обыкновения удалять посты. Но просто хочу высказаться более точно. Если нужен оригинальный текст, он сохранен тут: https://github.com/tshemsedinov/feed?tab=readme-ov-file#ai-infinite-loop-code-review--tasks--coding-2026-03-12

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

Проблема - это пустой цикл.

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

Поэтому:

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

AI infinite loop: Code review + Tasks + Coding 2026-03-12

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

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

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

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

JavaScript Standard Library and Web API 2026-01-02

У JavaScript две проблемы: отсутствие развитой стандартной библиотеки, как у C++, Java, .Net и очень развитое WebAPI, которого почти никто не знает и знать не хочет. И вместо первого и вместо второго используют всякую мерзость из npm.

Стандартная библиотека должна давать нам: струкутры данных (linked list, trees, stack, queue, deque...), контейнерные типы (result, either, maybe...), алгоритмы (hasing, search, conditional probabilities...), утилиты асинхронного и параллельного программирования (semaphore, mutex...), машинно-ориентированные типы: f32, f64, i8, u8..., i128, u128 (у нас только часть их есть и то только внутри typed arrays) и много еще чего.

Web API: OPFS, WebCrypto, AbortController, Web Locks, Web Streams, BroadcastChannel, Atomics, Scheduling, Weak collections, WebTransport, Workers, View Transitions, по работе с датами и юникодом, блютузом и рендерингом... там их много пейдждаунов

See more: ...2026, 2025, 2024, 2023...

About

Timur Shemsedinov news feed

Resources

Stars

Watchers

Forks

Contributors