1 | Раздел | Хотя бы | Неплохо | Хорошо | Бог |
---|---|---|---|---|---|
2 | Каждый пункт это то, что необходимо знать. Каждый следующий столбец включает все из предыдущего. Каждый следующий столбец без знания предыдущего, это иллюзия знания. Эти столбцы не соответствуют понятиям junior/middle/senior. По-хорошему, этими знаниями обладает любой выпускник соответствующей специальности. Все права защищены. https://ru.hexlet.io | ||||
3 | Языки | императивный (php/js/ruby/python, java/c#/c/kotlin) | lisp (clojure/racket) | haskell, erlang, prolog | |
4 | Асинхронное программирование | Промисы | Сопрограммы, Async/Await, | Модель акторов, Каналы | |
5 | В базу из кода | Работа с базой напрямую (через драйверы) | ORM ActiveRecord/Repository/QueryBuilder | Data Mapper | |
6 | Web | http, html | микрофреймворки, роутинг, шаблонизация | фреймворки | |
7 | Web-servers | Модели работы (process/thread/event loop) | cgi, fastcgi | ||
8 | Эксплуатация/Деплой | автоматизация (ansible) | Миграции, Мониторинг, vagrant | Неизменяемая инфраструктура, контейнерная виртуализация (docker) https://12factor.net/ |
1 | Раздел | Хотя бы | Неплохо | Хорошо | Бог |
---|---|---|---|---|---|
2 | СВЕРХУ ЕСТЬ ПУНКТ "прикладное" Каждый пункт это то, что необходимо знать хотя бы на базовом уровне. Для пунктов связанных с конкретным инструментарием подразумевается базовое владение. Каждый следующий столбец включает все из предыдущего. Эти столбцы не соответствуют понятиям junior/middle/senior. Создано в https://ru.hexlet.io | ||||
3 | Структуры данных/Типы | Массивы Ассоциативные массивы/Словари связаные списки | Графы/Деревья Очереди | ||
4 | Алгоритмы | Сортировка массивов (любая) | Алгоритмическая сложность Обход деревьев Операции над списками (вставка, удаление, переворот, поиск циклов и т.п.) | Топологическая сортировка | |
5 | Информатика | детерминированнось побочные эффекты идемпотентность чистые функции системы счисления и операции с ними | рекурсивный процесс итеративный процесс императивный/декларативный Функции высшего порядка | параметрический полиморфизм полиморфизм включения пессимистическая/оптимистичская блокировки | |
6 | Архитектура ЭВМ | Общее устройство компьютеров | Понимание принципов работы процессора и исполнения машинного кода (опкоды, ассемблер) | ||
7 | Операционные системы | Процесс/Поток (понятие, состояния, жизненный цикл, сигналы) | IPC (пайпы, сокеты) | Виртуальная память | |
8 | Сети | IP адрес/порты MAC адрес HTTP | TCP/IP общие принципы работы UDP | Модель OSI | |
9 | *NIX | Владение командной строкой (bash) Умение оценить состояние системы (ps, top, free, df, du) Понимание системы прав в linux Просмотр логов (syslog) Перенаправления и потоки Переменны окружения | Системы инициализации (systemd) SSH Генерация и использование ключей | mount (fstab) Сетевые интерфейсы | |
10 | Качество | Юнит тесты | Автоматизированное тестирования Непрерывная интеграция | Системные тесты Непрерывная доставка | |
11 | Организация работы | система контроля версий (git), | автоматизированная настройка рабочего окружения виртуализация | Docker | |
12 | Математика | Теория множеств Булева алгебра | Комбинаторика | теория автоматов теория графов Статистика | Теория категорий |
13 | Базы данных | ANSI SQL | Индексы Транзакционность (ACID) | MVCC Уровни изоляции | |
14 | Проектирование/Разработка | Модули (неймспейсы) Функциональная декомпозиция | Уровневое проектирование Принцип одного уровня абстракции (барьеры абстракции) Entity-Relationship model | Архитектурные шаблоны (в широком смысле) DDD (Единый язык) | |
15 | Парадигмы | Процедурное программирование | Функциональное программирование | Автоматное программирование Объектно-ориентированное программирование Логическое программирование | |
16 | Распределенные системы | семантика передачи сообщений | Очереди (rabbitmq) Stateless/Statefull | Service Discovery (consul) CAP теорема | |
17 | Процессы | Гибкая разработка (Agile) | Бережливое производство | Экстремальное программирование |