es
Feedback

¡No caigas en manos de tramposos! Telemetrio encuentra y marca estos canales 👉 Si quieres ver la etiqueta, suscríbete

HowProgrammingWorks - JavaScript and Node.js Programming

HowProgrammingWorks - JavaScript and Node.js Programming

Ir al canal en Telegram

Программная инжененрия для JavaScript, TypeScrip, Node.js 👉 Group: https://t.me/How_Programming_Works 👉 Node.js channel: https://t.me/metarhia 👉 Node.js group: https://t.me/nodeua

Mostrar más
6 573
Suscriptores
-724 horas
-47 días
+5930 días
Archivo de publicaciones
🚀 Patterns 2024 Тренинг с наставниками Перевод готов, советую его прочитать даже тем, кто не берет курс, потому что это почти статья и там много идей как усовершенствовать свои знания и структурировать их: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns-2024-ru.md Автор утверждает, что это самые важные вещи, которые следует учить и практиковать: 📂 Системы модульности, внедрение зависимостей (DI) и инверсия управления (IoC) 📦 Декомпозиция абстракций и принципы GRASP с современной интерпретацией 🧩 Паттерны «Банды четырех» (GoF) переосмысленные для JavaScript и TypeScript 🔮 Принципы изоляции и SoC (Разделение ответственностей) 👷🏻‍♂️ Разделение прикладного и системного кода (разные специальности) 🧩 Принципы SOLID: SRP, OCP, ISP, DIP, LSP с адаптацией для разных парадигм 🌟 Мультипарадигменное программирование и создание доменных языков (DSL) 🧩 Контрактное программирование и декларативное моделирование через схемы 🏛 Чистая архитектура (Clean) и слоеная архитектура (Onion или Layered) (читать дальше...)

🧩 Patterns 2024: The mentoring program is ready, I'll prepare translations tomorrow ))) 🗓 Start: 1 October; Duration: 12 weeks 👉 Training description: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns-2024.md 👉 Registration for the course: https://forms.gle/wuJ3nvSeF2apgUESA

Вот вы говорите, алгоритмы, алгоритмы, а тут открываешь ноду и видишь такое: https://github.com/nodejs/node/blob/7014e50ca32d
Вот вы говорите, алгоритмы, алгоритмы, а тут открываешь ноду и видишь такое: https://github.com/nodejs/node/blob/7014e50ca32d39b94d04e04a5e6498e5c2f4346f/lib/path.js#L249-L274

Кто говорит, что программист должен обязательно учить алгоритмы, тренироваться на литкоде и читать книжку с кабанчиком? Вы тоже не шарите, потому, что не понимаете переходных процессов в полупроводниках, не знаете как возникает диффузионный ток на pn-переходе. Нет у вас базы )))) Так вот, не нужно быть инженером по двигателям внутреннего сгорания, чтобы водить автомобиль. 99999 из 100тыс. программистов на работе не напишут поворот АВЛ-дерева, это не нужно знать, чтобы писать сложные программные системы для медицины, логистики или банка. Это спрашивают на собесах — правда, но только потому, что найм сломан и в галерах и в фаангах, там вообще началась брежневизация руководства, полный отрыв от реальности и загнивание, как в позднем совке. Это все возможно только потому, что они уже набрали вес и скорость и теперь могут сидеть на палубе титаника, слушать музыку, пить шампанское и жевать сопли, пока он тонет. Есть очень много тем сложных и очень нужных в работе программиста, которые будут 100 раз в день использоваться на любой работе инженерной: навыки декомпозиции абстракций, управления зацеплением абстракций, т.е. усилять и снижать зацепление и понимать для чего это делаешь, навыки разделения ответственности между программными компонентами (separation of concerns), внедрение зависимостей, инверсия управления, системы модульности, это все из чего строится структура приложения. А мы видим, что люди цикл с массивом выучили и сразу переходят к архитектуре.

🎓 IT образование: для себя определил, что неприемлемо брать деньги с начинающих, с людей, которые еще не знают что им нужно, которые вообще слабо ориентируются в отрасли. Обратите внимание, большинство трешевых ИТ-школ и "инфобизнесменов" специализируются именно на начинающих, им же можно рассказывать про циклы месяц, про переменные разжевывать и про операторы еще месяц, массивы учить и уже через полгода написать какой-то несчастный тудулист или чатбот, в виде простыни кода, и они рады, у них есть результаты, ну вот реально что-то получилось. А попробуйте продать что-то мидлам и синьорам, у них уже сформировалось мировоззрение, есть свое видение, им доказать ценность вашего курса на порядки сложнее. А потом они будут требовательными в процессе обучения, окажется, что нужно быть специалистом высокого уровня, тратить много времени, чтобы удовлетворить их, ответить на вопросы, не засыпаться от реальных продуктовых примеров кода, которые они приносят на занятия для разбора. А начинающих, ну я готов допустить, что можно брать с них деньги за наставничество, за проверку работ, за ревью кода, но не за учебный материал, которого и так море в интернете. Но такое наставничество, это удел джунов, которые еще год назад сами были такими же, и не может быть бизнесом, оно так же полезно этим наставникам для их роста, как и для начинающих. По-хорошому, вообще непонятно, кто кому платить должен. В идеале, сам процесс должен выходить в ноль по затратам сил и пользе с обоих сторон и может идти как взаимозачет. Посмотрите на всех приличных людей, которых вы знаете в ИТ-образовании, они концентрируются на обучении людей, которые уже работают и могут заработать на свое образование. Ни в коем случае не учите начинающих, которые берут кредиты на обучение, которые одалживаются или тратят последние деньги на то, ценность чего еще сами не понимают. Они еще 100 раз передумают, бросят, опять начнут, переметнутся на другой язык, поймут, что душа лежит к какой-то третьей экосистеме, и главное, что первые полгода они не могут определить качество обучения. И вот тут из кустов появляются создатели "образовательного контента", высокохудожественные читатели документации и прочие мошенники. Люди, учите друг-друга, не давайте этой нечисти парить голову начинающим, помогите им проложить роадмап в профессии, материала море, до первой работы можно вполне на нулевом бюджете доучиться, вкладывая только время и силу воли.

👩‍💻 На курсе Node.js 2024 и Async 2024 появилась лекция, по всем этим вопросам ▫️ Отделяете ли исключения (ошибки в коде)? ▫️ Отделяете ли soft ошибки (без исключений)? ▫️ Отделяете ли операционные ошибки (net, i/o, db...)? ▫️ Делаете автоматический retry? ▫️ Делаете serialize для передачи ошибок по сети? ▫️ Создаете ли классы для кастомных ошибок? ▫️ Используете ли коды ошибок вместо классов? ▫️ Делаете цепочки ошибок error.cause? ▫️ Используете AggregateError? ▫️ Практикуете return early и fail-fast? ▫️ Практикуете guards? ▫️ Применяете Either? ▫️ Реализуете graceful shutdown? ▫️ Перезапускаете процесс на любой ошибке? ▫️ Перезапускаете на операционных ошибках? ▫️ Перезапускаете процесс на доменных ошибках? ▫️ Имеете стратегию восстановления после ошибок? ▫️ Что используете для сбора логов? ▫️ Что для агрегации и консолидации логов? ▫️ Замеряете потерю производительности от ошибок? ▫️ Используете критические секции и web locks? ▫️ Используете promise.finally()? ▫️ Как трекаете и логируете контекст исполнения? ▫️ Генерируете UUID для трекинга контекстов? ▫️ Создаете ли точки восстановления состояния? ▫️ Используете AI для анализа стек-трейсов? ▫️ Применяете практику circuit breaker? ▫️ Очищаете stack trace от критических данных? ▫️ Практикуете blue-green deployments? ▫️ Практикуете feature toggles? ▫️ Практикуете canary release? ▫️ Практикуете shadow deployments? ▫️ Практикуете progressive delivery? ▫️ Практикуете rolling deployments? ▫️ Практикуете hotfix deployment? ▫️ Практикуете hot reload (без перезапуска)? ▫️ Имеете fallback при возникновении ошибок? 👉 https://www.patreon.com/tshemsedinov

👀 Старые лекции по паттернам тут, часть даже с таймкодами https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Patterns-timecodes.md

🚀 Структура программы менторинга Patterns 2024 постепенно вырисовывается 🧩 Unit 1: Structure and Modularity     Week 1: Code Characteristics and Optimization Strategies     Week 2: Native features in language and platforms     Week 3: Instantiation: Creational Patterns and Techniques     Week 4: Isolation: Separation of Concerns 🧩 Unit 2: Execution and Contracts     Week 5: Contracts: Interfaces for Component Interaction     Week 6: Decoupling with Events and Messaging     Week 7: Streams: Data Flows and Transformations     Week 8: Handling Errors: Exceptions and Soft Failures 🧩 Unit 3: Runtime for Applications     Week 9: Semantics: Expressive DSLs     Week 10: All-agnostic as a Default Strategy     Week 11: Scaling Applications and Architectural Styles     Week 12: Methodology: How to Start Applying Concepts Начало 1 октября, уже а наставников кол-во ограниченное, я не успею подготовить новых до начала, так что резервируете. На днях обновим сайт и разложим темы по неделям https://nodeua.com/Patterns-2024-buy.html

🚀 Структура программы менторинга Patterns 2024 постепенно вырисовывается 🧩 Unit 1: Structure and Modularity Week 1: Code Characteristics and Optimization Strategies Week 2: Native features in language and platforms Week 3: Instantiation: Creational Patterns and Techniques Week 4: Isolation: Separation of Concerns 🧩 Unit 2: Execution and Contracts Week 5: Contracts: Interfaces for Component Interaction Week 6: Decoupling with Events and Messaging Week 7: Streams: Data Flows and Transformations Week 8: Handling Errors: Exceptions and Soft Failures 🧩 Unit 3: Runtime for Applications Week 9: Semantics: Expressive DSLs Week 10: All-agnostic as a Default Strategy Week 11: Scaling Applications and Architectural Styles Week 12: Methodology: How to Start Applying Concepts Начало 1 октября, уже а наставников кол-во ограниченное, я не успею подготовить новых до начала, так что резервируете. На днях обновим сайт и разложим темы по неделям https://nodeua.com/Patterns-2024-buy.html

- What is a service? - Everything that's not a controller is a service - Where is a model? - Models.... are on the stage
- What is a service? - Everything that's not a controller is a service - Where is a model? - Models.... are on the stage

✔️ Как в JavaScript/TypeScript реализуется SoC (separation of concerns) и для чего он нам? Вы наверняка видели код, в котором на событиях или на роутах висит обработчик, который содержит и часть бизнес-логики и обращение к базе и работу с сетью. Такой портянка-код характерен для чат-ботов и серверов. Как это можно написать иначе и как в этом помогают паттерны? Нам нужно отделить три составляющих кода (грубо говоря, совсем упрощая): транспорт, бизнес-логику, базу. Но обеспечить между ними зацепление, минимальное необходимое. Лучше всего разнести их в три разные модуля (на это не обязательно), можно разнести в три разные программные компонента или в три разные абстракции. Одна обеспечивает работу с базой и ничего не знает о транспорте, а вторая - работу с транспортом и ничего не знает о базе. Дальше их должна сшивать общая абстракция (по принципу композиции, можно и агрегации). Какие паттерны тут помогут? 🧩 Mediator - снижает зацепление и подойдет нам для изоляции базы от транспорта. 🧩 Strategy - реализация стратегии для JavaScript это Map<PropertyKey, Implementation> что позволяет абстрагироваться от Implementation, находя его по ключу и работая по обобщенному интерфейсу. 🧩 Bridge - позволяет разделять абстракции и снижать зацепление, но не характерен для JavaScriot. 🧩 Abstract factory - для JavaScript абстрактная фабрика сводится к стратегии инстанциирования: Map<PropertyKey, Creator> и применяется как и стратегия, но в том месте, где нам нужно создавать инстансы (тут Creator это любой порождающий паттерн). Признаки проблемы: • Если вы не можете модифицировать работу с базой не трогая транспорт или бизнес-логику, не задевая базу, то нужно начинать внедрять разделение ответственности (separation of concerns). • Если сложно написать юниттесты, а что-то протестировать можно только все целиком - ну вот оно, вы нашли проблему. • Если код невозможно переиспользовать и вы чувствуете, что одно и то же пишете уже много раз. Примеры на курсе по паттернам 👉 https://nodeua.com/Patterns-2024-buy.html

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

🐥 Почему все так плохо с архитектурой приложений? Потому, что «less competence - more confidence» (меньше компетенции - больше уверенности) Потому, что все ведут себя как: только if/class/export выучил, уже хватается за архитектуру. Ну конечно, структура - это не круто, архитектура - это круто. А тем временем, из плохой структуры, из рыхлой структуры можно построить только 2 этажа, при возведении третьего уже все обрушается на первый.

🧩 Patterns 2024 Training English-only description version for those who want the company to pay for their training https://nodeua.com/Patterns-2024-buy-en.html

🧩 Добавил рассрочку на курс Patterns. Еще спрашивают, будут ли скидки - нет, потому что экономика программы наставничества не сойдется, я нанимаю лучших специалистов и экономить на качестве обучения это плохая идея. Можно ли приобрести Patterns без наставничества – да, это называется минимальный тариф. 👉 https://nodeua.com/Patterns-2024-buy.html