├── Public ├── 4-Expert │ └── 2021 │ │ └── README.md ├── 5-Lecturer │ ├── 2021 │ │ └── README.md │ └── 2024 │ │ └── README.md ├── 1-Basics │ └── 2021 │ │ └── README.md ├── 3-Specialist │ └── 2021 │ │ └── README.md ├── 2-Advanced │ ├── 2019 │ │ └── README.md │ ├── 2020 │ │ └── README.md │ └── 2021 │ │ └── README.md └── Interview.md ├── README.md ├── LICENSE └── Requirements └── NodeJS.ru.md /Public/4-Expert/2021/README.md: -------------------------------------------------------------------------------- 1 | # Expert in Software Engineer 2 | -------------------------------------------------------------------------------- /Public/5-Lecturer/2021/README.md: -------------------------------------------------------------------------------- 1 | # Lecturer in Software Engineer 2 | -------------------------------------------------------------------------------- /Public/1-Basics/2021/README.md: -------------------------------------------------------------------------------- 1 | # Basic Knowledge in Software Engineer 2 | -------------------------------------------------------------------------------- /Public/3-Specialist/2021/README.md: -------------------------------------------------------------------------------- 1 | # Specialist in Software Engineer 2 | -------------------------------------------------------------------------------- /Public/2-Advanced/2021/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Knowledge in Software Engineer 2 | -------------------------------------------------------------------------------- /Public/2-Advanced/2020/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Knowledge in Software Engineer 2 | 3 | * Александр Пальоха https://github.com/PalokhaO 4 | * Денис Пархоменко https://github.com/hunter04d 5 | -------------------------------------------------------------------------------- /Public/2-Advanced/2019/README.md: -------------------------------------------------------------------------------- 1 | # Advanced Knowledge in Software Engineer 2 | 3 | * Жуков Михаил Александрович https://github.com/DarthPigrum 4 | * Ковалишин О. Ю. https://github.com/ALEGATOR1209 5 | * Лепейко Евгений Владимирович https://github.com/jn-lp 6 | -------------------------------------------------------------------------------- /Public/5-Lecturer/2024/README.md: -------------------------------------------------------------------------------- 1 | # Lecturers 2 | 3 | Software engineering lecturers certified in 2024: 4 | Based on Metarhia community meetups, public activities, and code reviews. 5 | 6 | - Artem Ponomarenko 7 | 8 | Signed: Timur Shemsedinov 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Certification in Software Engineering 2 | 3 | ## Requirements 4 | 5 | - [Node.js with asynchronity, architecture, security and databases](Requirements/NodeJS.ru.md) 6 | 7 | ## Public certificates 8 | 9 | | Level | 2019 | 2020 | 2021 | 10 | | ------------ | ---- | ---- | ---- | 11 | | Basics | | | | 12 | | Advanced | [3](Public/2-Advanced/2019/README.md) | [2](Public/2-Advanced/2020/README.md) | | 13 | | Specialist | | | | 14 | | Expert | | | | 15 | | Lecturer | | | | 16 | -------------------------------------------------------------------------------- /Public/Interview.md: -------------------------------------------------------------------------------- 1 | # Public interview index 2 | 3 | 1. 🎧 [Metarhia Public interview #1: iOS, Swift, Async code, HTTPS, Sockets, DDD, Patterns](https://youtu.be/pURUQ_e4i1o) 4 | - Dmitriy Dmitriyev https://github.com/dirayser 5 | 2. 🎧 [Public interview #2: Java, Node.js, DDD, ООП, паттерны, парадигмы, безопасность](https://youtu.be/sVWElH2Fx_c) 6 | - Maxim Perevalov https://github.com/a-mountain 7 | 3. 🎧 [Public interview #3: TypeScript, schema, state, MobX, fp, patterns](https://youtu.be/TakH5i5VRGk) 8 | - Alex Chorny 9 | 4. 🎧 [Public interview #4: JavaScript, Python, асинхронное программирование, React, Node.js, паттерны](https://youtu.be/9sZCii1DHOM) 10 | - Yevhenii Petrenko https://github.com/vekaev 11 | 5. 🎧 [Public interview #5: net, c#, angular, асинхронность, patterns, db, orm, api, garbage collection](https://youtu.be/jtW8bHPL6_4) 12 | - Alexander Tkachenko https://github.com/AlexanderPixel 13 | 6. 🎧 [Public interview #6: JavaScript, collection, complexity, async, node.js, patterns](https://youtu.be/_g9bjgicmDI) 14 | - Alexey Bodnarchuk https://github.com/Alexe1900 15 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 How.Programming.Works contributors 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Requirements/NodeJS.ru.md: -------------------------------------------------------------------------------- 1 | # Технологический стек Node.js для корпоративных приложений 2 | 3 | Включает знания, необходимые для быстрой разработки безопасных информационных 4 | систем, высоконагруженных серверов приложений, надежных микросервисов, облачных 5 | сервисов, интерактивных приложений с низкой задержкой (приближенных к реальному 6 | времени), и безопасных систем корпоративного уровня с необходимым уровнем 7 | изоляции, распределенных и масштабируемых систем, устойчивых к атакам и удобным 8 | для модификации и поддержки. 9 | 10 | ## Цели и задачи сертификации 11 | 12 | Эта сертификация проводится сообществом, ценится именно благодаря репутации 13 | конкретных экспертов, которые проводят экзамен. Сертификация не привязана 14 | к юридическому лицу, является платной, но не является коммерческой (не имеет 15 | целью извлечение прибыли), т.е. вы оплачиваете только стоимость времени 16 | экспертов, при этом, эксперты время не тянут, им есть чем заняться, если можно 17 | оценить специалиста быстрее, они делают это с достаточной полнотой за разумное 18 | время. 19 | 20 | Для претендентов сертификация является хорошим способом независимо оценить свой 21 | профессиональный уровень, получить жирный плюс к резюме, а возможно и 22 | предложение по работе. При подготовке к сертификации, по опубликованной ниже 23 | программе, претендент поднимет свои знания и закроет пробелы в них. 24 | 25 | Этот документ открыт к правкам, делайте пул-реквесты. 26 | 27 | ## Результаты сертификации 28 | 29 | Эксперты обязательно выясняют о претенденте следующие: 30 | - Уровень претендента: 31 | - разработчик - способен качественно выполнять задачи, 32 | - инженер - способен самостоятельно находить решения сложных задач, 33 | - профессионал - способен ставить задачи и выбирать оптимальное решение, 34 | - эксперт - уникальная квалификация, требующая особого описания. 35 | - Специализацию претендента (или несколько): 36 | - разработка - прикладное программирование, написание бизнес-логики, 37 | - руководство - управление коллективами технических специалистов, 38 | - архитектора - внедрение структуры, архитектуры, стиля, технологий и культуры, 39 | - преподавание - заинтересовывать и объяснять сложное простыми словами, 40 | - исследования - глубокое погружение в проблему на базе научного метода, 41 | - системное программирование - создание инструментов и средств производства. 42 | - Срок действия сертификата (от 2 до 5 лет). 43 | 44 | По желанию претендента, по результатам экзамена эксперты дополнительно могут: 45 | - Сформировать характеристику (примерно на половину страницы). 46 | - Дать рекомендации по развитию. 47 | - Ответить на вопросы. 48 | 49 | По своему желанию экзаменаторы могут: 50 | - Дать рекомендации по развитию. 51 | - Если претендент имеет достаточный уровень, то могут предложить ему войти в 52 | состав коллегии экспертов по сертификации, сначала в качестве наблюдателя, а 53 | через некоторое время, полноценно включиться в процесс оценки специалистов. 54 | - Рекомендовать претенденту проекты и компании. 55 | 56 | Если сертификация не сдана, то эксперты определяют время, через которое можно 57 | попытаться сдавать повторно. 58 | 59 | ## Условия проведения 60 | 61 | Сертификация может проводиться очно или по видео-связи и по согласию претендента 62 | и экспертов может быть приватной или публичной, т.е. может быть записана на видео 63 | и опубликована, или записана и передана эксклюзивно претенденту, или проходить 64 | без записи. Выбрать это можно до или после прохождения экзамена. Информация о 65 | прохождении сертификации, по желанию претендента, может быть опубликована в 66 | репозитории сообщества. Также по желанию претендента на экзамене могут присутствовать 67 | третьи лица (например, представители работодателя) до 2х человек. 68 | 69 | Продолжительность собеседования на сертификацию составляет от 30 минут до 2 часов, но 70 | рекомендовано уложиться в 1 час. Если есть обоюдный интерес включить претендента 71 | в состав коллегии экспертов по сертификации, то может потребоваться 72 | дополнительное время от 1 до 5 часов (может быть разделено на несколько встреч), 73 | и это время уже не оплачивается претендентом, эксперты тратят это время по своей 74 | доброй воле. 75 | 76 | Для успешной сдачи не нужно 100% знаний всего материала и максимальная глубина 77 | знаний тоже не нужна, для уровня "разработчик" хватит около 50% этих знаний и 78 | даже уровень эксперт не подразумевает 100% всего, эксперты бывают и узко 79 | специализированные (но и для них широкая эрудиция важна). 80 | 81 | Если вы недовольны результатами или не согласны с мнением экспертов, его можно 82 | оспорить у координатора сертификации. Мнение координатора сертификации можно 83 | оспорить на коллегии экспертов (не менее 10 экспертов, проводящих сертификацию 84 | рассмотрят жалобу). 85 | 86 | ## Требуемые знания 87 | 88 | 1. Отличные знания JavaScript на уровне текущей спецификации ESNext (это не 89 | входит в сертификацию, но это подразумевается как необходимый уровень). 90 | 2. Общие знания по программной инженерии: ООП, функциональное и реактивное 91 | программирование, обобщенное программирование, агрегация и композиция классов, 92 | модули и зависимости, инверсия управления и внедрение зависимостей, принципы 93 | GRASP и SOLID, общее понимание паттернов GoF и дополнительный, часто 94 | применяемых в Node.js API, например (открытый конструктор, наблюдатель, цепочка 95 | ответственности, стратегия) и все это применительно к JavaScript и Node.js, 96 | контрактное программирование, обзор антипаттернов, понимание пределов возможностей 97 | JavaScript и его слабых мест, оптимизации при выполнении в v8, слабые ссылки, 98 | FinalizationRegistry, Atomics, SharedArrayBuffer. 99 | 3. Асинхронное программирование: контракты callback-last error-first, Thenable, 100 | Promise, асинхронные итераторы, EventEmitter, синтаксис async/await, Streams, 101 | асинхронная композиция и асинхронная очередь, паттерн реактор, фазы ивент-лупа, 102 | thread pool, принцип неблокирующего ввода/вывода, таймеры, обработка ошибок в 103 | асинхронном коде и оптимизация асинхронного кода, состояние гонки и доступ к 104 | shared state в асинхронном программировании, многопоточность и shared memory, 105 | связь параллельного и асинхронного программирования, семафоры и мьютексы, async 106 | hooks для Node.js, . 107 | 4. Знания базовых возможностей платформы Node.js: возможности встроенных 108 | библиотек (v8, vm, process, child_process, worker_threads, fs, crypto, events, 109 | os, path) и встроенных классов (Buffer, EventEmitter, AbortController, 110 | MessageChannel), системы модулей CommonJs и EcmaScript, управление зависимостями, 111 | поддержка протоколов: http, https, http2, tcp, tls, udp, работа с websockets, 112 | роутинг запросов, контексты запросов и изоляция req, res от кода предметной 113 | области, как не допускать утечки памяти и ресурсов, как выявлять их, оптимизация 114 | для высоких нагрузок, Serverless и FaaS, QUIC и HTTP/3, N-API, аддоны на C++, 115 | WASI, строковая и бинарная сериализация и десериализация, реализация сессий и 116 | контекстов пользователя, диагностика состояния приложений и отладка. 117 | 5. Структура и архитектура бекенд приложений: метрики, вопросы надежности, 118 | graceful shutdown, логирование и конфигурирование, обработка ошибок, подход к 119 | построению transport agnostic API, vm sandboxing, v8 isolation, межпроцессовое 120 | взаимодействие, масштабирование и кластеризация, балансировка нагрузки, 121 | архитектуры: слоеная (layered / onion), микросервисная, конвейерная (pipeline), 122 | гексагональная, DDD, чистая архитектура, CQS, CQRS и Event sourcing, основы 123 | распределенных систем, интерактивных и real-time приложений, интроспекция, 124 | рефлексия и скаффолдинг, метапрограммирование, мультипарадигменное 125 | программирование. 126 | 6. Основы безопасности: DoS, ReDoS, XSS, Path traversal, SQLI, CSRF, работа с 127 | паролями и их хешами, базовые понятия о криптографии. 128 | 7. Базы данных: реляционные и NoSQL, слой доступа к данным, ORM vs Query 129 | builders, Postgres и его система типов, join, explain, индексы и оптимизация 130 | запросов, foreign keys, alternative keys, referential integrity, вложенные 131 | запросы, exists, having, group, bulk update/insert, view, функции, автоинкремент, 132 | ER диаграммы, нормальные формы, хранение JSON в БД. 133 | 8. Культура разработки и групповая работа: рефакторинг, практики ревью кода, 134 | unit-тестирование, системное и интеграционное тестирование, общее понимание TDD, 135 | CI/CD, контейнеризация, семантическое версионирование, практики ведения 136 | репозиториев и работа с пакетными менеджерами, тулинг для групповой работы. 137 | 138 | ## Материалы для подготовки 139 | 140 | Лекции на youtube и примеры кода в github, сейчас готовы материалы по 80% тем, 141 | остальное на самоподготовку. Индекс материалов тут: 142 | https://github.com/HowProgrammingWorks/Index 143 | 144 | ## Я хочу пройти сертификацию, как начать? 145 | 146 | Требований на входе нет, но есть рекомендации (см. дальше). Вы сами должны 147 | определить, готовы вы к собеседованию или нет, сверив свои знания с чеклистом 148 | (см. выше) и с курсом по ноде. 149 | 150 | Кроме знаний рекомендуется: 151 | - Пройти (ну хоть пролистать) лекции (приведенные по ссылке выше), просмотреть 152 | код на гитхабе (под каждым видео и в оглавлении есть ссылка на репозиторий). 153 | - Иметь хоть минимальный практический опыт разработки на ноде. Желательно не на 154 | фреймворках, а на чистой ноде. Сертификация не включает в себя знания 155 | фреймворков, но если вы разрабатываете исключительно на фреймворках, то опыт 156 | работы с многими возможности ноды набирается гораздо медленнее, т.к. нода скрыта 157 | от вас интерфейсами и абстракциями фреймворка. 158 | 159 | Форма предварительной регистрации: https://forms.gle/LGVgX5qf16mr8khH9 160 | 161 | ## Стоимость и оплата 162 | 163 | Для начала процесса сертификации нужно оплатить 1 час интервью двумя экспертами 164 | сообщества. Базовая стоимость - $100 в час. Если этого будет недостаточно, то во 165 | время собеседования вы можете запросить дополнительное время, оплатить которое 166 | можно позже. Если вы хотите характеристику (примерно на половину страницы) от 167 | экспертов +$50, дополнительные рекомендации по развитию и ответы на вопросы еще 168 | +$50. Если мы справимся быстрее чем за час, то оставшееся время можно потратить 169 | на рекомендации и обсуждение способов профессионального роста по горячим следам 170 | собеседования. 171 | 172 | ## Контакты координатора сертификации 173 | 174 | Сертификация сейчас в тестовом режиме. По всем вопросам обращайтесь к Тимуру 175 | Шемсединову: timur.shemsedinov@gmail.com 176 | --------------------------------------------------------------------------------