HowProgrammingWorks - JavaScript and Node.js Programming
6.31K subscribers
328 photos
8 videos
1 file
808 links
Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/MetarhiaHPW 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua
Download Telegram
Почему-то фронтенд разработчики убеждены, что паттерны нужны только для бизнес-логики, а вся она находится на сервере и в базе данных, а у нас в UI все иначе устроено. Для тех, кто не верит в то, что доменная-логика таки существует и должна быть изолирована от UI, от сети и от инфраструктурного кода, я публикую вчерашний семинар, где отвечаю на вопросы тех, кто уже зашел на курс Patterns.
https://youtu.be/bfw101W5Xf4
🔥10👍54
Как вы без паттернов поймёте, что вам написал AI?

В наше время паттерны становятся инструментом обуздания LLM. Нужно ставить ему задачу, например, понизить coupling между модулями, декомпозировать класс при помощи SRP, изолировать слой через IoC, DI или Revealing constructor, применить strategy, bridge, visitor, adapter... для того, чтобы получить определенный эффект, например, подмену поведения в разных условиях или стыковку сложных контрактов. GRASP, SOLID, GoF, DDD, Enterprise patterns должны стать универсальным языком, который мы используем для объяснения своих мыслей и требований, своей задумки как автора что при общении с коллегой, что при постановке задачи джуну или AI агенту.

Созвон с вопросами про паттерны: https://youtu.be/bfw101W5Xf4
9💯6👍4🔥1
Курс Patterns не похож на другие мои курсы, он имеет отдельные наборы с датой начала и конца, с программой по неделям. Это все потому, что он включает практику, ревью кода, работу над проектом, групповые созвоны. А значит, с вами работает целая команда менторов, а не только один я. Менторов у нас ограниченное количество и время, которое они могут выделить тоже, это все специалисты, которые работают в компаниях или имеют свои живые проекты. Каждый на курсе получает персональное внимание, потому, что качество менторства требует вникнуть в его код и в его знания, разбор кода и рекомендации по его улучшению, а групповой проект возьмет еще больше времени менторов на консультации, ответы на вопросы и согласование. Что мы имеем сейчас: план Mentoring - 200 мест, Professional - 50 мест, а Exclusive - всего 3 места, я тоже не резиновый и лично вести много людей не могу, максимум могу 4 взять. Курс длится 3 месяца, но есть еще онбординг и каникулы, так что, следующий набор будет скорее всего только весной. Кто успеет, забронировать место по ранней цене, попадает в основной поток, а дальше мы попробуем расширить наши мощности, но мы никогда не делаем это за счет качества, так что, найм новых хороших менторов отразится на повышении цены.

Подробности на сайте: https://nodeua.com/Patterns-2025
6👍3😢2🫡2🔥1
Первые 10 лет разработки я сам писал ужасный код, хоть и читал Буча и Кнута, учился в ВУЗе на программиста, работал на крупных проектах для нефте- и газотранспорта (ППДМН, Укрнафта), МЧС (министерства чрезвычайных ситуаций), ЗАГСов (минюст), реестры для медицинских и общественных организаций. Но у меня не было ни наставника ни с кем сравнить свои силы, не было профессиональной среды, мне никто не делал ревью кода. Я добыл огромный опыт, свободно писал на 8 языках (первый Asm x86, много писал на dBase, Pascal, C++ Builder, Delphi), но профессиональный рост был очень медленным, все на своих шишках.

Вторые 10 лет у меня появились старшие друзья, которые могли подсказать что-то и покритиковать, подчиненные, которым тоже нужно было помогать и я начал преподавать, что резко улучшило мой собственный код. Я начал руководить большой командой и пришлось писать такой код, чтобы его мог понять каждый в команде, а для студентов нужно было писать еще проще. За этот период я сильно вырос в профессиональном плане, читал в 10 раз больше, профессионально освоил только три языка C#, JavaScript и PHP, начал писать open source, статьи, делать доклады на конференциях, выступать перед большой аудиторией, в том числе на английском, в других странах. Руководил коллективами в продуктах для США, Китая, Европы.

Третье десятилетие я уже твердо знал, что хочу полностью посвятить себя open source и подготовке профессионалов. За это время я провел 269 офлайн митапов, записал более 2000 видео лекций, подготовил 11 контрибьюторов node.js, запустил разработку технологического стека Metarhia, который имеет сотни контрибьюторов и был внедрен во многих проектах в корпоративных системах, госсекторе, геймдеве, телевизионных и интерактивных видеоформатах, социологии, медицине, транспорте, получил международные награды. Был архитектором единой информационной системы МВД Украины. Преподавал в трех ВУЗах и читал лекции у более 10 тысяч студентов. Сделал более 150 докладов, организовывал международные конференции.

Что я вынес из этих 30 лет опыта, что важно и что помогло бы мне двигаться быстрее, если бы я знал это с самого начала:
- Длинная воля — способность к глубокому изучению специальности, а не поверхностному копированию решений, это фундамент профессионального роста.
- Обучение других — лучший способ самому разобраться в теме и получить критику своего кода, научиться делать проще и пояснять как оно работает, а потом переделывать еще проще.
- Открытый код — возможность получить обратную связь от сообщества и показать свой уровень экспертизы, принести пользу и сохранить свой труд для многократного переиспользования коллегами.
- Публичные выступления — развитие навыков объяснения сложных концепций простыми словами и построения репутации интересного докладчика дало мне больше чем известность, это позволило натренировать скил открытого профессионального разговора, который нужен и в переговорах и в обсуждениях.
- Ревью кода учат нас больше, чем его написание, причём и ревью которые мы делаем и которые получаем.
- Нужно писать как можно проще — сложный код говорит о незрелости инженера, о неспособности разделить на части задачу и применять всю мощь языка, платформы и железа.
- Мультипарадигменное программирование победило — умение комбинировать разные парадигмы и получать кода с разными характеристиками, это ключевое для всех современных языков.
- Борьба парадигм бессмысленна — каждая парадигма сильна в своем, важно понимать их сильные и слабые стороны и формировать набор идей, синтаксисов, абстракций и приемов под задачу.
- Основной инженерный принцип SoC (Separation of concerns) — основа предсказуемого и поддерживаемого кода, а паттерны — это не теория, а сконцентрированная практика и мудрость, заточенная для переиспользования, не привязанная к языку и платформе.
- Доброжелательность важнее знаний, а токсичность, гордость и ненависть разрушают все, к чему прикоснутся.

Github: https://github.com/tshemsedinov
Youtube: https://www.youtube.com/@TimurShemsedinov
LinkedIn: https://www.linkedin.com/in/shemsedinov
Twitter: https://twitter.com/tshemsedinov
🔥4728👍23
...Патерны не были частью моего майндсета, когда знание паттернов на автомате влияет на то, какой код я БУДУ писать и как сделать это лучше.

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

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

Цена курса ничтожно мала в сравнении с тем что вы заплатите смотря годами ютуб


Евгений

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

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

Сейчас я пишу код более осмысленно, постепенно внедряю решения, которые увидел на курсе. Я стал меньше сомневаться в своих решениях и больше думать о качестве кода.

Рекомендую этот курс всем, кто хочет повысить свой уровень.


Виталий С.

Честно скажу: до этого я смотрел десятки англоязычных курсов и материалов, но этот курс оказался лучшим, что есть. Он не про “книжные паттерны”, а про живые, осмысленные решения, адаптированные под современный JavaScript и реальные задачи.

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

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


Александр К.

Подробности на сайте: https://nodeua.com/Patterns-2025
👍11💯53👎1😁1
Паттерны решают ключевые проблемы как разработки, так и вашего профессионального роста:

- Упрощают коммуникацию и ускоряют понимание между специалистами, дают профессиональный словарь терминов, это как Ubiquitous Language (Единый язык в Domain-Driven Design от Эрика Эванса) только не для предметной области, а для типичных инженерных решений, повторяющихся в каждом проекте. Очень помогает не называть все "штуковиной" или "контроллеров", а то у многих все приложение состоит из одних только контроллеров, потому что словарного запаса не хватает называть решения грамотными техническими терминами. Паттерны позволяют ставить задачу для LLM и писать ТЗ джуну или комментарий к пул-реквесту понятный коллегам.
- Все это очень экономит время, паттерны дают структуру и предсказуемость, разработка ускоряется минимум в 2-3 раза. Постоянные баги и переписывания одних и тех же частей кода сходят на нет, потому что терминология даёт нам самим возможность осознанно размышлять над структурой приложения, а SOLID и GRASP принципы готовят код к принятию архитектурных решений, багов становится в разы меньше.
- Типовых решений в проектах всегда множество, когда вы заняты не тушением пожаров, а выделением этих решений в библиотеки, абстрагированием их от предметной области, тестированием, оптимизацией, популяризацией среди коллег, то ни о каком выгорании или отсутствии профессионального роста уже и речь не может идти, у вас всегда есть материал для статьи, доклада, для митапа в своем городе или внутри компании.
- Принципы GRASP и SOLID должны стать для вас не теоретическими, а спуститься до реальных снипетов кода, примеров и юзкейсов. Так что вы можете быстро вынуть из памяти несколько шаблонов под специфику практической задачи. Например, Low Coupling начинает ассоциироваться с тем, что мы признаем mix-inы нежелательным изменением структуры объекта после его создания, это нарушение закона Деметры, которое решается делегированием и структурной композицией.
- Паттерны — это не столько теория, сколько упражнения, на примере которых вы качаете навык, понимание рантайма, взаимодействие с коллегами, экспертизу и интуицию. Паттерны дают глубокое понимание кода через тренировку часто встречающихся ситуаций.

Обзор курса: https://youtu.be/8a9PX12FB9s
👍126💯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
8👍5🔥2💯1