"просунутий" курс для тих, хто володіє конструкціями мови і бажає поліпшити якість свого коду
рівень розробника в моїй картині світу визначають чотири речі:
- навички реального застосування архітектурних підходів, усвідомлення їх переваг і недоліків;
- знання інженерних практик і розуміння меж їх застосовності
- володіння конкретними інструментами для реалізації підходів і практик
- рівень розвитку "синергетичних навичок" (soft-skills, документування коду і все, що дозволяє команді працювати продуктивніше)
цей курс - про інженерні практики які ми вважаємо найважливішими і корисними.
Теми
Кожна тема відповість на питання по конкретній інженерній практиці:- коли варто застосовувати;
- коли не варто застосовувати;
- Які інструменти реалізують цю практику
- Як інтегрувати практику в життя команди
Типізація
Коли потрібні типи? Як це типізувати? Коли типи не потрібні? Як будувати DSL на типах. Ми не будемо розповідати "дивіться, це TypeScript " так тут пишуться типи", замість цього сконцентруємося на основах теорії
контракти
Навіщо потрібно контрактне програмування, як висловлювати контракти, як з ними працювати і як управляти контрактами в системі.
Як контракти знижують вартість володіння кодом
реактивність
Що ми вкладаємо в поняття реактивності? Як будують реактивність на get/set і на Proxy? Коли реактивність корисна, а коли погіршує керованість, додаючи занадто багато магії?
Потоки
Кому потрібні "проміси на стероїдах" і коли їх використання виправдане. Чи завжди варто брати RxJS як лідера серед "observables" або дивитися на інші примітиви?
Функції для землян
Писати код в чисто функціональному стилі-величезні ризики. Як грамотне застосування базових монад і pattern-matching дозволяє прискорити розробку?
Кінцеві автомати в коді
Як спрощувати код за допомогою кінцевих автоматів? Які рішення не варто описувати за допомогою кінцевих автоматів, а які-вкрай корисно?
Метрики коду
Що, як і навіщо міряти в коді? Як правильно проводити виміри, починаючи від бізнес-метрик і закінчуючи продуктивністю рішень. Як аналізувати зібрану інформацію?
Кодогенерация
Як код, який пише код спрощує код? Як провести межі між кодогенерацією і рантаймом?
про курс
10 тижнів, з яких 2 тижні (4 і 8) зарезервовані для виконання домашніх завдань.
кожен тиждень складається з:
- лекції-обговорення проблем, питань та побажань
- матеріалів для додаткового занурення в тему, якщо ви з нею не знайомі
- 2 завдань (зазвичай одне з них відповідає на питання "як це працює?"а друге - на питання" як це застосовувати?")
- асинхронного code-review рішень
Для практикуючих frontend або backend-програмістів. Рекомендується базовою знайомство хоча б з одним framework ом для розробки для розуміння застосовності інженерних підходів у вашій архітектуріhttps://privatelink.de/?https://javascript.ninja/engineer