Паттерны решают ключевые проблемы как разработки, так и вашего профессионального роста:
- Упрощают коммуникацию и ускоряют понимание между специалистами, дают профессиональный словарь терминов, это как Ubiquitous Language (Единый язык в Domain-Driven Design от Эрика Эванса) только не для предметной области, а для типичных инженерных решений, повторяющихся в каждом проекте. Очень помогает не называть все "штуковиной" или "контроллеров", а то у многих все приложение состоит из одних только контроллеров, потому что словарного запаса не хватает называть решения грамотными техническими терминами. Паттерны позволяют ставить задачу для LLM и писать ТЗ джуну или комментарий к пул-реквесту понятный коллегам.
- Все это очень экономит время, паттерны дают структуру и предсказуемость, разработка ускоряется минимум в 2-3 раза. Постоянные баги и переписывания одних и тех же частей кода сходят на нет, потому что терминология даёт нам самим возможность осознанно размышлять над структурой приложения, а SOLID и GRASP принципы готовят код к принятию архитектурных решений, багов становится в разы меньше.
- Типовых решений в проектах всегда множество, когда вы заняты не тушением пожаров, а выделением этих решений в библиотеки, абстрагированием их от предметной области, тестированием, оптимизацией, популяризацией среди коллег, то ни о каком выгорании или отсутствии профессионального роста уже и речь не может идти, у вас всегда есть материал для статьи, доклада, для митапа в своем городе или внутри компании.
- Принципы GRASP и SOLID должны стать для вас не теоретическими, а спуститься до реальных снипетов кода, примеров и юзкейсов. Так что вы можете быстро вынуть из памяти несколько шаблонов под специфику практической задачи. Например, Low Coupling начинает ассоциироваться с тем, что мы признаем mix-inы нежелательным изменением структуры объекта после его создания, это нарушение закона Деметры, которое решается делегированием и структурной композицией.
- Паттерны — это не столько теория, сколько упражнения, на примере которых вы качаете навык, понимание рантайма, взаимодействие с коллегами, экспертизу и интуицию. Паттерны дают глубокое понимание кода через тренировку часто встречающихся ситуаций.
Обзор курса: https://youtu.be/8a9PX12FB9s
- Упрощают коммуникацию и ускоряют понимание между специалистами, дают профессиональный словарь терминов, это как Ubiquitous Language (Единый язык в Domain-Driven Design от Эрика Эванса) только не для предметной области, а для типичных инженерных решений, повторяющихся в каждом проекте. Очень помогает не называть все "штуковиной" или "контроллеров", а то у многих все приложение состоит из одних только контроллеров, потому что словарного запаса не хватает называть решения грамотными техническими терминами. Паттерны позволяют ставить задачу для LLM и писать ТЗ джуну или комментарий к пул-реквесту понятный коллегам.
- Все это очень экономит время, паттерны дают структуру и предсказуемость, разработка ускоряется минимум в 2-3 раза. Постоянные баги и переписывания одних и тех же частей кода сходят на нет, потому что терминология даёт нам самим возможность осознанно размышлять над структурой приложения, а SOLID и GRASP принципы готовят код к принятию архитектурных решений, багов становится в разы меньше.
- Типовых решений в проектах всегда множество, когда вы заняты не тушением пожаров, а выделением этих решений в библиотеки, абстрагированием их от предметной области, тестированием, оптимизацией, популяризацией среди коллег, то ни о каком выгорании или отсутствии профессионального роста уже и речь не может идти, у вас всегда есть материал для статьи, доклада, для митапа в своем городе или внутри компании.
- Принципы GRASP и SOLID должны стать для вас не теоретическими, а спуститься до реальных снипетов кода, примеров и юзкейсов. Так что вы можете быстро вынуть из памяти несколько шаблонов под специфику практической задачи. Например, Low Coupling начинает ассоциироваться с тем, что мы признаем mix-inы нежелательным изменением структуры объекта после его создания, это нарушение закона Деметры, которое решается делегированием и структурной композицией.
- Паттерны — это не столько теория, сколько упражнения, на примере которых вы качаете навык, понимание рантайма, взаимодействие с коллегами, экспертизу и интуицию. Паттерны дают глубокое понимание кода через тренировку часто встречающихся ситуаций.
Обзор курса: https://youtu.be/8a9PX12FB9s
YouTube
🧩 Обзор курса Patterns для JavaScript & TypeScript — GoF, SOLID, GRASP — Тимур Шемсединов
👉 https://nodeua.com/Patterns-2025
👍12❤6💯3👎1
🧩 Для подготовки к курсу Patterns 2025 я буду в ближайшие 2 недели проводить онбординг. Он нужен чтобы подогнать базовые знания для лучшего понимания курса. Для тех, кто уже забронировал место он проводится как созвоны и текстовые инструкции, а для всех остальных я решил в отдельном канале расшарить часть материалов вступительного тренинга в свободном доступе. Переходите по ссылке и добавляйтесь в канал 👉 https://t.me/+I-suNalcHC03NGUy
❤5👍3🔥2
Что нужно знать, чтобы пойти на Patterns 2025 и нужно ли сначала идти на Async 2025 или курс по Node.js. Отвечаю: Async и Node.js проходить до Patterns не нужно. Материалы из этих курсов, которые нужны для понимания Patterns или будут полезны как примеры использования, я даю на курсе. Что нужно знать, это большой вопрос, сначала кратко, потом подробно читайте дальше...
Входные требования: JavaScript syntax, OOP and async programming basics, как минимум год практического программирования, чтобы столкнуться с реальными проблемами на практике и знать, чего хочешь от курса. Владение базовым TypeScript будет большим плюсом, но не обязательное.
Желаемое владение следующими терминами и концепциями: Value, Identifier, Variable, Constant, Scalar, Literal, Statements and Expressions, Code block, Conditions, Loops, Assignment, Lexical scope, Primitive types, Reference types, Call stack, Function, Arrow function, Async function, Method, Class, Inheritance, Polymorphism, Encapsulation, Interface, Getters and setters, Structural composition, Aggregation, Prototype, Constructor, Signature, Argument, Parameter, Recursion, Callback, Callable, Generator, Iterator, Serialization, Pure function, Lambda expression, Side effects, Closure, Array, Structure, Record, Destructuring, Enum, Collection, Set, Hash table, Linked list, Queue, git, Docker, Linux basics and shell, Bitwise operators, Ternary operator, Promise, async/await, Static and Private fields, Modularity (ESM, CommonJS), Unit tests, Error handling,
Желаемые, но необязательные знания: Heap, Procedure, Type, Flag, Regular expression, Interface, Namespaces, Type systems, Strong typing, Weak typing, Duck typing, Static typing, Dynamic typing, Nominal typing, Structural typing, Explicit typing, Partial application, Currying, Higher order, Function composition, Pipe, Memoization, Mutable state, Immutable state, Stack, Deque, Tree, Graph, Async generator, Async iterator, Chaining, IIFE, Async IIFE, void, yield, Property descriptors, Sealing properties, Freezing properties, Functional object, WeakMap, WeakSet, Typed arrays, Mixins, Proxy, Reflect, Atomics, WeakRef, FinalizationRegistry, Abstract class, Hidden class, Object form, Introspection, Reflection, Event loop, Debugging, Profiling, Flame graph, Memory dump, Chrome Developer tools, CI and building tools, DOM manipulation, Fetch API, npm/yarn, Semantic versioning, Linting, Covariance, Contravariance, Type inference, Type guards, Union types, Generics, Algebraic data types, Pattern matching, Trie, B-tree, Red-black tree, AVL tree, Binary search tree, Big O notation and complexity, WebAssembly, Service Workers, Web Workers, Streams API, Observables, Disposable
Подробности на отдельном канале: https://t.me/+I-suNalcHC03NGUy
Входные требования: JavaScript syntax, OOP and async programming basics, как минимум год практического программирования, чтобы столкнуться с реальными проблемами на практике и знать, чего хочешь от курса. Владение базовым TypeScript будет большим плюсом, но не обязательное.
Желаемое владение следующими терминами и концепциями: Value, Identifier, Variable, Constant, Scalar, Literal, Statements and Expressions, Code block, Conditions, Loops, Assignment, Lexical scope, Primitive types, Reference types, Call stack, Function, Arrow function, Async function, Method, Class, Inheritance, Polymorphism, Encapsulation, Interface, Getters and setters, Structural composition, Aggregation, Prototype, Constructor, Signature, Argument, Parameter, Recursion, Callback, Callable, Generator, Iterator, Serialization, Pure function, Lambda expression, Side effects, Closure, Array, Structure, Record, Destructuring, Enum, Collection, Set, Hash table, Linked list, Queue, git, Docker, Linux basics and shell, Bitwise operators, Ternary operator, Promise, async/await, Static and Private fields, Modularity (ESM, CommonJS), Unit tests, Error handling,
Желаемые, но необязательные знания: Heap, Procedure, Type, Flag, Regular expression, Interface, Namespaces, Type systems, Strong typing, Weak typing, Duck typing, Static typing, Dynamic typing, Nominal typing, Structural typing, Explicit typing, Partial application, Currying, Higher order, Function composition, Pipe, Memoization, Mutable state, Immutable state, Stack, Deque, Tree, Graph, Async generator, Async iterator, Chaining, IIFE, Async IIFE, void, yield, Property descriptors, Sealing properties, Freezing properties, Functional object, WeakMap, WeakSet, Typed arrays, Mixins, Proxy, Reflect, Atomics, WeakRef, FinalizationRegistry, Abstract class, Hidden class, Object form, Introspection, Reflection, Event loop, Debugging, Profiling, Flame graph, Memory dump, Chrome Developer tools, CI and building tools, DOM manipulation, Fetch API, npm/yarn, Semantic versioning, Linting, Covariance, Contravariance, Type inference, Type guards, Union types, Generics, Algebraic data types, Pattern matching, Trie, B-tree, Red-black tree, AVL tree, Binary search tree, Big O notation and complexity, WebAssembly, Service Workers, Web Workers, Streams API, Observables, Disposable
Подробности на отдельном канале: https://t.me/+I-suNalcHC03NGUy
❤8👍5🔥2💯1
🤔 Не до конца понимаете, что такое паттерны и зачем они?
Я записал бесплатный курс Patterns Mini
За 3 часа (7 модулей) вы получите
- Обзор всех GoF паттернов: Creational, Structural, Behavioral
- Введение в Enterprise, Data Access и архитектурные паттерны
- Вы увидите, как паттерны работают на продакшене в JS/TS проектах
- Будут объяснены принципы GRASP и SOLID и их влияние на код
– Поймете, как мыслят опытные инженеры
– Я покажу примеры кода некоторых паттернов с разбором
🚀 В результате вы увидите, как паттерны помогают на практике писать простой, поддерживаемый и расширяемый код.
Это тест-драйв обширного курса, после которого вы точно поймете, почему курс Patterns стал переломным для сотен разработчиков, почему разработчики становятся в разы эффективнее, могут получать больше пользы от LLM инструментов как Cursor, Copilot, Claude, Codex и лучше взаимодействовать в коллективе с коллегами и заказчиками.
Бесплатно. Онлайн. 7 модулей по ~30 минут.
На днях начинается регистрация, чтобы не пропустить, заходите сейчас: https://t.me/+I-suNalcHC03NGUy
Я записал бесплатный курс Patterns Mini
За 3 часа (7 модулей) вы получите
- Обзор всех GoF паттернов: Creational, Structural, Behavioral
- Введение в Enterprise, Data Access и архитектурные паттерны
- Вы увидите, как паттерны работают на продакшене в JS/TS проектах
- Будут объяснены принципы GRASP и SOLID и их влияние на код
– Поймете, как мыслят опытные инженеры
– Я покажу примеры кода некоторых паттернов с разбором
🚀 В результате вы увидите, как паттерны помогают на практике писать простой, поддерживаемый и расширяемый код.
Это тест-драйв обширного курса, после которого вы точно поймете, почему курс Patterns стал переломным для сотен разработчиков, почему разработчики становятся в разы эффективнее, могут получать больше пользы от LLM инструментов как Cursor, Copilot, Claude, Codex и лучше взаимодействовать в коллективе с коллегами и заказчиками.
Бесплатно. Онлайн. 7 модулей по ~30 минут.
На днях начинается регистрация, чтобы не пропустить, заходите сейчас: https://t.me/+I-suNalcHC03NGUy
❤17🔥4👍2
Please open Telegram to view this post
VIEW IN TELEGRAM
🧩 Кроме GoF и SOLID на Patterns и Patterns Mini мы разберем GRASP, эти принципы гораздо важнее, но менее известны. Материалы уже публикуются тут: https://t.me/+I-suNalcHC03NGUy
❤4👍1🔥1🫡1
Вынужден сказать вам правду. Паттерны - это не только решения типовых проблем, но и бездонный источник идей для излишнего усложнения и запутывания кодовой базы:
- как только человек выучил паттерны, ему хочется применять их везде, и в первые месяцы после умных книжек программист творит сплошной оверинженеринг: в коде появляется в разы больше абстракций, чем нужно,
- абстракции не бесплатны: всякая гибкость, динамическая диспетчеризация, pure fabrication и мелкодисперсная декомпозиция повышают количество объектов, слоев и вызовов, просаживается производительность,
- часто код становится сложным для понимания, повышается порог входа: без глубоких знаний коллеги испытывают трудности из-за того, что вы перестали решать проблемы в лоб и применяете сложные для них концепции,
- усложняются отладка и тестирование: цепочки делегирования и фабрики маскируют реальные места ошибок, теряется стек, или в нем появляются непонятные промежуточные слои, перехватчики, а если используется рефлексия, то - динамически построенные абстракции, которых в коде никто не видит.
Что делать?
Только практика и менторин могут помочь не потерять время на оверинженеринг и эксперименты. Нужны задачи по:
- переписыванию кода с удалением паттерна
- выбору простейшего паттерна для решения проблемы
- использованию встроенных в язык возможностей, решающих ту же задачу, что и паттерн
- задачи с трейдофами, когда в условии должны быть NFR или дополнительные ограничения
- рефакторинг плохо написанных паттернов, упрощение, когнитивная оптимизация
- реальные проекты, где есть ограничения во времени и нужен компромис
Все это есть на курсе в виде сквозного проекта, подробнее тут: https://nodeua.com/Patterns-2025
- как только человек выучил паттерны, ему хочется применять их везде, и в первые месяцы после умных книжек программист творит сплошной оверинженеринг: в коде появляется в разы больше абстракций, чем нужно,
- абстракции не бесплатны: всякая гибкость, динамическая диспетчеризация, pure fabrication и мелкодисперсная декомпозиция повышают количество объектов, слоев и вызовов, просаживается производительность,
- часто код становится сложным для понимания, повышается порог входа: без глубоких знаний коллеги испытывают трудности из-за того, что вы перестали решать проблемы в лоб и применяете сложные для них концепции,
- усложняются отладка и тестирование: цепочки делегирования и фабрики маскируют реальные места ошибок, теряется стек, или в нем появляются непонятные промежуточные слои, перехватчики, а если используется рефлексия, то - динамически построенные абстракции, которых в коде никто не видит.
Что делать?
Только практика и менторин могут помочь не потерять время на оверинженеринг и эксперименты. Нужны задачи по:
- переписыванию кода с удалением паттерна
- выбору простейшего паттерна для решения проблемы
- использованию встроенных в язык возможностей, решающих ту же задачу, что и паттерн
- задачи с трейдофами, когда в условии должны быть NFR или дополнительные ограничения
- рефакторинг плохо написанных паттернов, упрощение, когнитивная оптимизация
- реальные проекты, где есть ограничения во времени и нужен компромис
Все это есть на курсе в виде сквозного проекта, подробнее тут: https://nodeua.com/Patterns-2025
❤9💯5🔥4⚡2👍2🤯1
Нам не нужен паттерн Adapter, поскольку EventEmitter уже передает нужные события во все места напрямую.
Нам не нужен паттерн Facade, поскольку наша абстракция уже, к счастью, блокирует весь реальный поток, считайте, нам повезло.
Нам не нужен Data Access Layer, поскольку ORM делает запросы, а мы еле успеваем не затопить соседей.
Нам не нужна какая-то дополнительная архитектура, потому что каждый микросервис уже имеет свой личный люк к истине.
Нам не нужен курс по паттернам, все мемы уже собраны здесь: https://t.me/+I-suNalcHC03NGUy
Нам не нужен паттерн Facade, поскольку наша абстракция уже, к счастью, блокирует весь реальный поток, считайте, нам повезло.
Нам не нужен Data Access Layer, поскольку ORM делает запросы, а мы еле успеваем не затопить соседей.
Нам не нужна какая-то дополнительная архитектура, потому что каждый микросервис уже имеет свой личный люк к истине.
Нам не нужен курс по паттернам, все мемы уже собраны здесь: https://t.me/+I-suNalcHC03NGUy
🤣21❤2👍1
Открытые группы и каналы
- Україномовний канал спільноти https://t.me/metarhia
- Україномовна група https://t.me/nodeua
- Канал с общими вопросами https://t.me/HowProgrammingWorks
- Группа с общими вопросами https://t.me/MetarhiaHPW
- Канал для CTO и архитекторов https://t.me/MetarhiaChiefs
- Группа для техстека Metarhia: https://t.me/metaserverless
- Канал для начинающих https://t.me/metaedu
- Группа для начинающих https://t.me/+znsE73dPWLQ5Nzky
- Группа сообщества по асинхронному программированию https://t.me/asyncify
- Онбординг для желающих пойти на курс Patterns: https://t.me/patterns_javascript
Закрытые ресурсы
- Группа сообщества - доступна всем курсам - https://www.patreon.com/cw/tshemsedinov/membership
- Еженедельный созвон по четвергам - доступен всем курсам - https://www.patreon.com/cw/tshemsedinov/membership
- Курс по ноде и асинхронному программированию - https://www.patreon.com/cw/tshemsedinov/membership
- Курс по паттернам - https://nodeua.com/Patterns-2025
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥2👍1
1. Ad-hoc polymorphism
- Function and method overloading
- Operator overloading
- Type-class polymorphism (e.g. Haskell type classes, Rust traits)
- Coercion polymorphism
2. Subtype polymorphism
- Class inheritance
- Interface / protocol polymorphism
- Structural (duck typing) polymorphism
3. Parametric polymorphism
- Generic functions
- Generic data structures
4. Dispatch mechanisms
- Dynamic dispatch
- Virtual functions and methods
- Multiple or multimethod dispatch
👉 Примеры и пояснения тут: https://t.me/patterns_javascript
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤4🔥1
Началась регистрация на бесплатный курс Patterns Mini 👉 https://nodeua.com/Patterns-2025-free
🎉9👍5🤩4❤3