Close

Уровень программиста вне языка программирования

Критерий оценкиJuniorMiddleSenior
Декомпозиция задачиПоследовательные строчки кода. Copy/paste — для повторного использования кода.Создает многократно используемые функции/объекты, решающие общие задачи.Использует соответствующие структуры данных и алгоритмы. Создает общий/объектно-ориентированный код, инкапсулирующий условия задачи.
Декомпозиция системыНе способен думать о системе сложнее одного класса или файла.Производит декомпозицию задачи и проектирует систему в пределах одной платформы или технологии.Визуализирует и проектирует сложные системы с несколькими линейками продуктов, интегрирует с внешними системами. Проектирует системы поддержки работы: мониторинг, генерация отчетов, аварийные переходы на запасные ресурсы.
ОбщениеМожет выразить свои мысли/идеи, но не всегда четко. Есть нюансы с правописанием и грамматикой.Его понимают. Хорошее правописание и грамматика. Общается эффективно.Понимает и объясняет мысли/дизайн/идеи/специфику в точно выраженной форме. В общении соответствует ситуации.
Организация кода в файлеНет четкой организации в файле.Методы сгруппированы логически и по вызовам.Код разделен на регионы. Имеет грамотные комментарии со ссылками на файлы-исходники.
Организация кода между файламиНет четкой организации кода с делением на файлы.Физический файл выполняет одну функцию. Например, служит для объявления класса или для реализации одного функционала и т. д.Организация кода на физическом уровне соответствует проекту. Наглядность способа проектирования реализации через имена файлов и структуру папок.
Читабельность кодаОдносложные, не всегда понятные или не отражающие действительность имена (файлов, переменных).Хорошие имена файлов, переменных, классов, методов и т. д. Нет длинных функций. Нестандартный код, багфиксы и допущения в коде поясняются комментариями.Допущения в коде сопровождаются командами Assert. Поток операций в коде естественный (без глубокой вложенности условий или методов).
Безопасное программированиеПонимает концепцию, делает базовые вещи (чаще всего после напоминания).Проверяет аргументы методов, возвращаемое значение и обработку исключений в потенциально важном коде.Имеет собственную библиотеку, помогающую в безопасном программировании. Пишет юнит-тесты для имитации сбоев.
Обработка ошибокПишет код для «идеального» случая без сбоев.Обработка ошибок в коде (кидает исключение или генерирует ошибку).Пишет код с функцией раннего определения ошибок. Придерживается последовательной обработки исключений в слоях кода и формулирует принципы процесса в системе.
ТребованияПонимает выставленные требования и пишет код в соответствии со спецификацией.Видит картину в целом и сразу выявляет дополнительные аспекты с последующим описанием в спецификации. Задает вопросы, касающиеся неучтенных случаев.Предлагает альтернативы и следует выставленным требованиям, основываясь на собственном опыте.
Базы данныхЗнает основы баз данных, транзакции. Пишет простые select-запросы.Проектирует нормализованные схемы БД с учетом запросов. Умело использует представления, хранимые процедуры, триггеры и собственные типы данных. Понимает разницу между кластеризованными и некластеризованными индексами. Специалист в использовании ORM инструментов.Осуществляет администрирование, увеличивает производительность и оптимизирует индексы БД. Пишет сложные select-запросы. Заменяет использование курсора вызовами функций SQL. Понимает принципы внутреннего хранения данных и индексов. Имеет представление о создании «зеркал» и репликации БД и т.д.