Включает знания, необходимые для быстрой разработки безопасных информационных систем, высоконагруженных серверов приложений, надежных микросервисов, облачных сервисов, интерактивных приложений с низкой задержкой (приближенных к реальному времени), и безопасных систем корпоративного уровня с необходимым уровнем изоляции, распределенных и масштабируемых систем, устойчивых к атакам и удобным для модификации и поддержки.
Эта сертификация проводится сообществом, ценится именно благодаря репутации конкретных экспертов, которые проводят экзамен. Сертификация не привязана к юридическому лицу, является платной, но не является коммерческой (не имеет целью извлечение прибыли), т.е. вы оплачиваете только стоимость времени экспертов, при этом, эксперты время не тянут, им есть чем заняться, если можно оценить специалиста быстрее, они делают это с достаточной полнотой за разумное время.
Для претендентов сертификация является хорошим способом независимо оценить свой профессиональный уровень, получить жирный плюс к резюме, а возможно и предложение по работе. При подготовке к сертификации, по опубликованной ниже программе, претендент поднимет свои знания и закроет пробелы в них.
Этот документ открыт к правкам, делайте пул-реквесты.
Эксперты обязательно выясняют о претенденте следующие:
- Уровень претендента:
- разработчик - способен качественно выполнять задачи,
- инженер - способен самостоятельно находить решения сложных задач,
- профессионал - способен ставить задачи и выбирать оптимальное решение,
- эксперт - уникальная квалификация, требующая особого описания.
- Специализацию претендента (или несколько):
- разработка - прикладное программирование, написание бизнес-логики,
- руководство - управление коллективами технических специалистов,
- архитектора - внедрение структуры, архитектуры, стиля, технологий и культуры,
- преподавание - заинтересовывать и объяснять сложное простыми словами,
- исследования - глубокое погружение в проблему на базе научного метода,
- системное программирование - создание инструментов и средств производства.
- Срок действия сертификата (от 2 до 5 лет).
По желанию претендента, по результатам экзамена эксперты дополнительно могут:
- Сформировать характеристику (примерно на половину страницы).
- Дать рекомендации по развитию.
- Ответить на вопросы.
По своему желанию экзаменаторы могут:
- Дать рекомендации по развитию.
- Если претендент имеет достаточный уровень, то могут предложить ему войти в состав коллегии экспертов по сертификации, сначала в качестве наблюдателя, а через некоторое время, полноценно включиться в процесс оценки специалистов.
- Рекомендовать претенденту проекты и компании.
Если сертификация не сдана, то эксперты определяют время, через которое можно попытаться сдавать повторно.
Сертификация может проводиться очно или по видео-связи и по согласию претендента и экспертов может быть приватной или публичной, т.е. может быть записана на видео и опубликована, или записана и передана эксклюзивно претенденту, или проходить без записи. Выбрать это можно до или после прохождения экзамена. Информация о прохождении сертификации, по желанию претендента, может быть опубликована в репозитории сообщества. Также по желанию претендента на экзамене могут присутствовать третьи лица (например, представители работодателя) до 2х человек.
Продолжительность собеседования на сертификацию составляет от 30 минут до 2 часов, но рекомендовано уложиться в 1 час. Если есть обоюдный интерес включить претендента в состав коллегии экспертов по сертификации, то может потребоваться дополнительное время от 1 до 5 часов (может быть разделено на несколько встреч), и это время уже не оплачивается претендентом, эксперты тратят это время по своей доброй воле.
Для успешной сдачи не нужно 100% знаний всего материала и максимальная глубина знаний тоже не нужна, для уровня "разработчик" хватит около 50% этих знаний и даже уровень эксперт не подразумевает 100% всего, эксперты бывают и узко специализированные (но и для них широкая эрудиция важна).
Если вы недовольны результатами или не согласны с мнением экспертов, его можно оспорить у координатора сертификации. Мнение координатора сертификации можно оспорить на коллегии экспертов (не менее 10 экспертов, проводящих сертификацию рассмотрят жалобу).
- Отличные знания JavaScript на уровне текущей спецификации ESNext (это не входит в сертификацию, но это подразумевается как необходимый уровень).
- Общие знания по программной инженерии: ООП, функциональное и реактивное программирование, обобщенное программирование, агрегация и композиция классов, модули и зависимости, инверсия управления и внедрение зависимостей, принципы GRASP и SOLID, общее понимание паттернов GoF и дополнительный, часто применяемых в Node.js API, например (открытый конструктор, наблюдатель, цепочка ответственности, стратегия) и все это применительно к JavaScript и Node.js, контрактное программирование, обзор антипаттернов, понимание пределов возможностей JavaScript и его слабых мест, оптимизации при выполнении в v8, слабые ссылки, FinalizationRegistry, Atomics, SharedArrayBuffer.
- Асинхронное программирование: контракты callback-last error-first, Thenable, Promise, асинхронные итераторы, EventEmitter, синтаксис async/await, Streams, асинхронная композиция и асинхронная очередь, паттерн реактор, фазы ивент-лупа, thread pool, принцип неблокирующего ввода/вывода, таймеры, обработка ошибок в асинхронном коде и оптимизация асинхронного кода, состояние гонки и доступ к shared state в асинхронном программировании, многопоточность и shared memory, связь параллельного и асинхронного программирования, семафоры и мьютексы, async hooks для Node.js, .
- Знания базовых возможностей платформы Node.js: возможности встроенных библиотек (v8, vm, process, child_process, worker_threads, fs, crypto, events, os, path) и встроенных классов (Buffer, EventEmitter, AbortController, MessageChannel), системы модулей CommonJs и EcmaScript, управление зависимостями, поддержка протоколов: http, https, http2, tcp, tls, udp, работа с websockets, роутинг запросов, контексты запросов и изоляция req, res от кода предметной области, как не допускать утечки памяти и ресурсов, как выявлять их, оптимизация для высоких нагрузок, Serverless и FaaS, QUIC и HTTP/3, N-API, аддоны на C++, WASI, строковая и бинарная сериализация и десериализация, реализация сессий и контекстов пользователя, диагностика состояния приложений и отладка.
- Структура и архитектура бекенд приложений: метрики, вопросы надежности, graceful shutdown, логирование и конфигурирование, обработка ошибок, подход к построению transport agnostic API, vm sandboxing, v8 isolation, межпроцессовое взаимодействие, масштабирование и кластеризация, балансировка нагрузки, архитектуры: слоеная (layered / onion), микросервисная, конвейерная (pipeline), гексагональная, DDD, чистая архитектура, CQS, CQRS и Event sourcing, основы распределенных систем, интерактивных и real-time приложений, интроспекция, рефлексия и скаффолдинг, метапрограммирование, мультипарадигменное программирование.
- Основы безопасности: DoS, ReDoS, XSS, Path traversal, SQLI, CSRF, работа с паролями и их хешами, базовые понятия о криптографии.
- Базы данных: реляционные и NoSQL, слой доступа к данным, ORM vs Query builders, Postgres и его система типов, join, explain, индексы и оптимизация запросов, foreign keys, alternative keys, referential integrity, вложенные запросы, exists, having, group, bulk update/insert, view, функции, автоинкремент, ER диаграммы, нормальные формы, хранение JSON в БД.
- Культура разработки и групповая работа: рефакторинг, практики ревью кода, unit-тестирование, системное и интеграционное тестирование, общее понимание TDD, CI/CD, контейнеризация, семантическое версионирование, практики ведения репозиториев и работа с пакетными менеджерами, тулинг для групповой работы.
Лекции на youtube и примеры кода в github, сейчас готовы материалы по 80% тем, остальное на самоподготовку. Индекс материалов тут: https://github.com/HowProgrammingWorks/Index
Требований на входе нет, но есть рекомендации (см. дальше). Вы сами должны определить, готовы вы к собеседованию или нет, сверив свои знания с чеклистом (см. выше) и с курсом по ноде.
Кроме знаний рекомендуется:
- Пройти (ну хоть пролистать) лекции (приведенные по ссылке выше), просмотреть код на гитхабе (под каждым видео и в оглавлении есть ссылка на репозиторий).
- Иметь хоть минимальный практический опыт разработки на ноде. Желательно не на фреймворках, а на чистой ноде. Сертификация не включает в себя знания фреймворков, но если вы разрабатываете исключительно на фреймворках, то опыт работы с многими возможности ноды набирается гораздо медленнее, т.к. нода скрыта от вас интерфейсами и абстракциями фреймворка.
Форма предварительной регистрации: https://forms.gle/LGVgX5qf16mr8khH9
Для начала процесса сертификации нужно оплатить 1 час интервью двумя экспертами сообщества. Базовая стоимость - $100 в час. Если этого будет недостаточно, то во время собеседования вы можете запросить дополнительное время, оплатить которое можно позже. Если вы хотите характеристику (примерно на половину страницы) от экспертов +$50, дополнительные рекомендации по развитию и ответы на вопросы еще +$50. Если мы справимся быстрее чем за час, то оставшееся время можно потратить на рекомендации и обсуждение способов профессионального роста по горячим следам собеседования.
Сертификация сейчас в тестовом режиме. По всем вопросам обращайтесь к Тимуру Шемсединову: timur.shemsedinov@gmail.com