Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
⚡️ Ключевая проблема современности — это то, что люди пишут frontend или backend на NodeJS так и не освоив нормально асинхронное программирование. Его знание не наступает сразу после изучения синтаксиса JavaScript и TypeScript, надежность асинхронного кода невозможно полноценно проверить типами и очень сложно покрыть тестами. Нет ни одного нормального курса по асинхронщине, их вообще почти нет, но и мой курс из 26 лекций (по часу и более) — полное говно, он разросся и устарел. Все думают, что они с налету вот так освоили колбеки и таймеры, промисы и async/await и все... НЕТ, так не работает, асинхронное программирование намного сложнее и вам придется понимать про состояние гонки, блокировки и особенности отладки и даже проблемы стектрейсов, адаптеры контрактов и атомарные операции, ивент луп и микротаски... но асинхронное программирование, одновременно и намного проще, потому, что нужно писать ПРОСТОЙ асинхронный код, а не сопли на флагах и примесях, зонах и доменах, а писать асинхронщину просто и понятно — вообще ни кто не умеет. В продуктах так не пишут, там все на заплатках из миксинов и на if-ах, в оупенсорсе тоже так не пишут, там оверинженеринг процветает и люди выдумывают сложнейшие абстракции для простых вещей, просто потому, что могут. Я сделал по асинхронному программированию, наверно, наибольшее количество докладов, лекций, примеров и статей, но вот только 2 года назад начал писать хоть сколько-нибудь приличный асинхронный код. Да и сейчас сделать такой курс для меня огромный вызов и ответственность, который я бы с удовольствием разделил с коллегами, c Illya Klymov и Denys Otrishko, Dmytro Nechai и Alexey Orlenko, Alex Golikov и Alexey Migutsky если они согласятся сотрудничать в любом удобном виде, как критики или соавторы, как рецензенты или конкуренты. Вы, конечно, можете позвать и предложить других специалистов, которых я не назвал. Оглавление у меня уже готово, но я его покажу после нескольких итераций, а пока могу дать только ссылку на старый курс, как пример того, как делать не нужно 👉 https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Asynchronous.md
Как учить языки программирования? Несколько неочевидных подсказок:
🔵 Не нужно сразу стараться понять все, это как с человеческими языками, если концентрироваться на том, что вы не понимаете все на 100%, то обучение заблокировано, со временем пробелы будут закрываться, а после какого-то момента пазлы сложатся,
🟢 Нужно много читать и разбирать хорошего кода, основная деятельность программиста — это не написание, а чтение кода, это так не только во время обучения, но и в работе,
🟡 Нужно изучать плохой код, разбирать почему он плохой и исправлять, переписывать, улучшать, добиваться не скорости и применения сложных конструкций, а читаемости, простоты и понятности,
🔴 Важно делать ошибки, изобретать велосипеды, наступать на грабли, исправлять их и разбирать, в чем была проблема, конфликтовать и приходить к консенсусу, заходить в тупик и находить решение, это эффективнее всего делать в групповом проекте, объединяйтесь и работайте вместе.
Тут мои новые лекции для начинающих и много заданий: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Beginners.md
🔵 Не нужно сразу стараться понять все, это как с человеческими языками, если концентрироваться на том, что вы не понимаете все на 100%, то обучение заблокировано, со временем пробелы будут закрываться, а после какого-то момента пазлы сложатся,
🟢 Нужно много читать и разбирать хорошего кода, основная деятельность программиста — это не написание, а чтение кода, это так не только во время обучения, но и в работе,
🟡 Нужно изучать плохой код, разбирать почему он плохой и исправлять, переписывать, улучшать, добиваться не скорости и применения сложных конструкций, а читаемости, простоты и понятности,
🔴 Важно делать ошибки, изобретать велосипеды, наступать на грабли, исправлять их и разбирать, в чем была проблема, конфликтовать и приходить к консенсусу, заходить в тупик и находить решение, это эффективнее всего делать в групповом проекте, объединяйтесь и работайте вместе.
Тут мои новые лекции для начинающих и много заданий: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Beginners.md
Forwarded from Asynchronous Programming
Сама логика предметной области имеет асинхронную природу. Ни какие балансировщики и гейтвеи, ни какие облака или FaaS не могут решить проблемы конкуррентного доступа к памяти, cpu, диску, системам ввода-вывода. Но писать доменный код в стиле параллельного программирования — это тупик, а асинхронное программирование не намного проще, тем более на #JavaScript под управлением #nodejs. Мои взгляд на этот вопрос будет в курсе, который готовлю, точной даты не знаю, но до нового года точно будет: https://github.com/HowProgrammingWorks/Index/blob/master/Courses/Async-2024.md
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
⭐️ Тут сведены идеи применения AI, точнее LLMок в разработке программного обеспечения. Что они делают хорошо 🟢, что удовлетворительно 🟧, а что вообще плохо 🛑
🟢 Анализ больших объемов данных, которые человеку сложно внимательно обработать
∙ логов и стектрейсов
∙ memory dumps
∙ dependency trees
∙ git blame
🟢 Портирование:
∙ с одной версии фреймворка или библиотеки на другую
∙ с одного языка на другой
∙ с одной СУБД на другую
∙ с одной OS на другую или поддержка нескольких
🟢 Боты и тулинг для автоматизации обработки кодовой базы и репозиториев:
∙ применение стиля
∙ применение чеклиста изменений
∙ поиск уязвимостей в кодовой базе
∙ маркировка commits, pull requests, issues
∙ расстановка тегов по коммитам и т.д.
∙ автоматизация закрытия тасков, майлстоунов
∙ поиск дубликатов кода, тасков, или перелинковка связанных
∙ аудит объемов работы, качества, сбор статистики
∙ предложения для рефакторинга
∙ поддержание консистентности кодовой базы и стиля
∙ создание спеки стиля кода по примерам кода или кодовой базе проекта
∙ предложение метрик для оценки кода и вычисление этих метрик
🟢 Написание текстов:
∙ подготовка CHANGELOG, HOW TO, Q&A
∙ генерация документации по коду
∙ реверс-инжиниринг кода в ТЗ
∙ поиск отличий между ТЗ, кодом, доками
∙ преобразование между форматами данных, например json, csv, pdf, sql, txt
🟢 Управление проектами
∙ оценка трудоемкости разработки, времени и денег
∙ оценка возможности распараллеливания разработки
∙ поиск слабых мест и выявление проблем в сметах, планах, ТЗ
∙ предложения по оптимизации бизнес-процессов
∙ сбор данных для подготовки принятия решений
🟢 Программирование
∙ алгоритмические задачи, подбор и реализация алгоритмов
∙ портирование, перевод и транспиляция между языками программирования
∙ преобразование между class и prototype в JavaScript
∙ оптимизация по заданному критерию: cpu, ram, i/o, lines, читаемость, сложность, etc.
∙ объяснение кода
∙ генерация примеров использования библиотек или абстракций
∙ ревью пул реквестов
∙ генерация юниттестов, системных тестов
∙ генерация конфигураций
∙ настройка CI/CD
∙ генерация SQL запросов
∙ генерация API, CRUD, формочек
∙ генерация моделей, структур, DTO, схем данных, классов, jsdoc
∙ преобразование моделей между разными синтаксисами
∙ синхронизаций структуры базы данных, схем, моделей, форочек
∙ генерация тайпингов и заголовочных файлов как .h, .d.ts
∙ подготовка контрактов и описание интерфейсов для интеграции систем
∙ генерация парсеров, конвертеров, по примерам входных и выходных форматов данных
∙ генерация валидаторов данных и валидаторов контрактов
🟧 Задачи, которые LLMки делают, но не всегда качественно и с проблемами
∙ терпимо конвертирует код между парадигмами: ООП, процедурное и структурное программирование
∙ гораздо хуже конвертирует между ООП и ФП
∙ асинхронное программирование и задачи с доступом к состоянию из разных мест
∙ олимпиадное программирование
∙ подготовка шаблонов и примеров приложений/проектов
∙ выбор зависимостей
∙ выбор СУБД, языков программирования, платформ, тулинга
∙ концептуальный код, демонстрирующий идею и делающий ее понятнее для многих
🛑 Что плохо решается при помощи LLMок
∙ системное программирование
∙ платформенный код, код библиотек, фреймворков
∙ новые и прорывные технологические решения, которые негде подсмотреть
∙ большинство новых нетипичных задач, когда в интернете мало примеров кода
∙ архитектура систем и структура приложений, даже при наличии множества примеров
🟢 Анализ больших объемов данных, которые человеку сложно внимательно обработать
∙ логов и стектрейсов
∙ memory dumps
∙ dependency trees
∙ git blame
🟢 Портирование:
∙ с одной версии фреймворка или библиотеки на другую
∙ с одного языка на другой
∙ с одной СУБД на другую
∙ с одной OS на другую или поддержка нескольких
🟢 Боты и тулинг для автоматизации обработки кодовой базы и репозиториев:
∙ применение стиля
∙ применение чеклиста изменений
∙ поиск уязвимостей в кодовой базе
∙ маркировка commits, pull requests, issues
∙ расстановка тегов по коммитам и т.д.
∙ автоматизация закрытия тасков, майлстоунов
∙ поиск дубликатов кода, тасков, или перелинковка связанных
∙ аудит объемов работы, качества, сбор статистики
∙ предложения для рефакторинга
∙ поддержание консистентности кодовой базы и стиля
∙ создание спеки стиля кода по примерам кода или кодовой базе проекта
∙ предложение метрик для оценки кода и вычисление этих метрик
🟢 Написание текстов:
∙ подготовка CHANGELOG, HOW TO, Q&A
∙ генерация документации по коду
∙ реверс-инжиниринг кода в ТЗ
∙ поиск отличий между ТЗ, кодом, доками
∙ преобразование между форматами данных, например json, csv, pdf, sql, txt
🟢 Управление проектами
∙ оценка трудоемкости разработки, времени и денег
∙ оценка возможности распараллеливания разработки
∙ поиск слабых мест и выявление проблем в сметах, планах, ТЗ
∙ предложения по оптимизации бизнес-процессов
∙ сбор данных для подготовки принятия решений
🟢 Программирование
∙ алгоритмические задачи, подбор и реализация алгоритмов
∙ портирование, перевод и транспиляция между языками программирования
∙ преобразование между class и prototype в JavaScript
∙ оптимизация по заданному критерию: cpu, ram, i/o, lines, читаемость, сложность, etc.
∙ объяснение кода
∙ генерация примеров использования библиотек или абстракций
∙ ревью пул реквестов
∙ генерация юниттестов, системных тестов
∙ генерация конфигураций
∙ настройка CI/CD
∙ генерация SQL запросов
∙ генерация API, CRUD, формочек
∙ генерация моделей, структур, DTO, схем данных, классов, jsdoc
∙ преобразование моделей между разными синтаксисами
∙ синхронизаций структуры базы данных, схем, моделей, форочек
∙ генерация тайпингов и заголовочных файлов как .h, .d.ts
∙ подготовка контрактов и описание интерфейсов для интеграции систем
∙ генерация парсеров, конвертеров, по примерам входных и выходных форматов данных
∙ генерация валидаторов данных и валидаторов контрактов
🟧 Задачи, которые LLMки делают, но не всегда качественно и с проблемами
∙ терпимо конвертирует код между парадигмами: ООП, процедурное и структурное программирование
∙ гораздо хуже конвертирует между ООП и ФП
∙ асинхронное программирование и задачи с доступом к состоянию из разных мест
∙ олимпиадное программирование
∙ подготовка шаблонов и примеров приложений/проектов
∙ выбор зависимостей
∙ выбор СУБД, языков программирования, платформ, тулинга
∙ концептуальный код, демонстрирующий идею и делающий ее понятнее для многих
🛑 Что плохо решается при помощи LLMок
∙ системное программирование
∙ платформенный код, код библиотек, фреймворков
∙ новые и прорывные технологические решения, которые негде подсмотреть
∙ большинство новых нетипичных задач, когда в интернете мало примеров кода
∙ архитектура систем и структура приложений, даже при наличии множества примеров
Какие факторы влияют на вас при выборе языка, платформы, фреймворков и библиотек?
Anonymous Poll
59%
Популярность
8%
Модность
49%
Простота
52%
Надежность
26%
Субъективная красота
26%
Совместимость
4%
Низкоуровневость
15%
Высокоуровневость
16%
Высокие нагрузки
33%
Мнение авторитетов
Forwarded from Metaeducation
YouTube
Правда про IT с Тимуром Шемсединовым.
Встреча с Тимуром Шемсединовым.
Говорили про IT, образование, карьеру, тренды и многое другое.
00:00 - Промо
01:10 - Приветствие
01:42 - О себе
03:15 - Языки програмирования
04:45 - Текущая ситуация с IТ в Украине
05:50 - Кто идет в IТ
07:20 - Опасности…
Говорили про IT, образование, карьеру, тренды и многое другое.
00:00 - Промо
01:10 - Приветствие
01:42 - О себе
03:15 - Языки програмирования
04:45 - Текущая ситуация с IТ в Украине
05:50 - Кто идет в IТ
07:20 - Опасности…
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
Please open Telegram to view this post
VIEW IN TELEGRAM
🏋️ Что кодворс что литкод позволяют хорошо потренироваться в тех задачах, которых никогда не будет на робочих проектах.
Как там у вас с дискриминацией? Она уже на научной основе?
Anonymous Poll
32%
Ощущаете ли вы превосходство по знаниям над другими?
26%
Получаете ли вы удовольствие от такого превосходства?
59%
Ощущаете ли вы превосходство других программистов над вами по знаниям?
51%
Страдаете ли чувством неполноценности от превосходства других?
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
Websocket/NodeJS/server.js at main · HowProgrammingWorks/Websocket
Websocket support in Node.js 21. Contribute to HowProgrammingWorks/Websocket development by creating an account on GitHub.
https://github.com/HowProgrammingWorks/Exams
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Metaeducation
Please open Telegram to view this post
VIEW IN TELEGRAM
GitHub
How Programming Works
Examples for Software Engineering and Programming Lectures - How Programming Works
Forwarded from Metaeducation
⚡️ Оптимизация до выявления проблем — это признак системного кода, а если вы делаете это в прикладном, то вы или еще учитесь или экспериментируете для себя или вас нужно гнать с проекта. Когда стоит оптимизировать прикладной код: когда вы уперлись в проблему, а до этого просто пишите обычный максимально простой, читаемый и понятный код.
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
Какие архитектуры информационных систем вы применяете?
Anonymous Poll
37%
Слоеную (многослойную, чистую)
10%
Гексагональную (порты и адаптеры)
31%
Трехзвенную (клеинт-сервер-субд)
23%
Событийную (очереди сообщений)
8%
Пайплайн (конвейерная)
33%
Архитектура папочек
2%
Распределенная (пиринговая)
21%
Сервисная (от SOA до микросервисов)
38%
Я в курсе, что REST - не архитектура
26%
Знаю, что MVC, MVP, MVVM - не архитектуры
Forwarded from Metarhia/NodeUA - Node.js Ukraine Community
Делать стримы с ответами на вопросы?
Anonymous Poll
16%
Да, у меня есть вопросы
70%
Да, послушаю
3%
Нет
12%
Мне все равно