
Матрица компетентности программиста
.pdfМатрица компетентности программиста
Область |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
програм- |
|
|
|
Уровень |
|
|
|
|
|
|
|
|
|
|||
мирования |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Теория: |
2n |
n2 |
|
n (Уровень2) |
|
|
|
|
log(n) (Уровень3) |
Коммен тарии |
||||||
(Уровень0) |
(Уровень1) |
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
Понимает плюсы и минусы использо - |
Знание сложных структур |
|
||||||||||
|
|
|
|
вания тех или иных базовых струк- |
данных, таких как B- |
|
||||||||||
|
|
Может объяснить |
тур данных (размер памяти, время |
|
||||||||||||
|
Не понимает |
дерево, Биномиальная куча |
|
|||||||||||||
|
и использовать |
выполнения операций с данными |
, |
|
||||||||||||
Структуры |
разницы между |
и Фибоначчиевская |
куча, |
|
||||||||||||
на практике |
|
в чем разница между массивами |
|
|
|
|||||||||||
данных |
массивом |
массивы, |
|
и связными списками в этом плане ). |
АВЛ-дерево, Красно- |
|
||||||||||
и связным |
|
чёрное дерево, Косое |
|
|||||||||||||
|
связные списки, |
Может объяснить , как реализо |
вать |
|
||||||||||||
|
списком. |
дерево, Список |
|
|
||||||||||||
|
словари и т.д. |
хэш-таблицы и как обработать кол- |
|
|
||||||||||||
|
|
с пропусками, TRIE- |
|
|
||||||||||||
|
|
|
|
лизии. Приоритетные |
очереди |
|
|
|
|
|
||||||
|
|
|
|
|
|
|
структуры и т.д. |
|
|
|||||||
|
|
|
|
и способы их реализации и т.д. |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Не может найти |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
среднее |
|
|
|
|
|
|
|
|
|
|
Может распознать |
|
|
||
|
значение |
Базовые методы |
|
|
|
|
|
|
|
|
и написать решение |
|
||||
|
массива чисел |
|
|
|
|
|
|
|
|
динамическим |
|
Работать с теми, кто |
||||
|
сортировки |
|
Деревья, Графы, "простой путь" |
|
|
|
||||||||||
|
(тяжело пове- |
|
|
|
программированием |
, |
имеет хороший |
|||||||||
Алгоритмы |
и поиска. Обход |
и "разделяй-и-властвуй" алгоритмы, |
||||||||||||||
рить, но |
хорошо знает алгоритмы на |
рейтинг в TopCoder — |
||||||||||||||
и поиск |
|
понимает значимость уровней |
|
|
|
|||||||||||
|
встречаются |
|
|
|
|
графах, хорошо знает |
это невероятная |
|||||||||
|
в структурах |
|
приведенной здесь матрицы. |
|
|
|
||||||||||
|
и такие |
|
|
|
|
численные методы, может |
удача! |
|||||||||
|
данных. |
|
|
|
|
|
|
|
|
|
||||||
|
кандидаты на |
|
|
|
|
|
|
|
|
|
идентифицировать |
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
собеседова- |
|
|
|
|
|
|
|
|
|
|
проблемы класса NP. |
|
|||
|
нии). |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Системное |
Не знает, что |
Базовое |
|
Понимает, чем отличается kernel |
|
Понимает, как работает |
|
|||||||||
програм- |
такое |
понимание |
|
mode от user mode, что такое муль- |
весь "программный стэк": |
|
||||||||||
мирование |
компилятор, |
компиляторов |
, |
ти-трединг, способы синхрониза |
ции |
железо (CPU + Память + |
|
|||||||||
|
линковщик или |
линковщиков |
|
и как реализованы |
примитивы |
син- |
Кэш + Прерывания + |
|
||||||||
|
интерпретатор. |
и интерпретато- |
хронизации |
, может читать |
ассем- |
микрокоды), двоичный код, |
|
|||||||||
|
|
ров. Понимает, |
блерный код. Понимает, как |
|
|
|
ассемблер, статическая |
|
||||||||
|
|
что такое |
|
работают сети, сетевые протоколы |
и динамическая линковка, |
|
||||||||||
|
|
ассемблерный |
и может реализовать передачу |
|
|
компиляция |
, интер- |
|
|
|||||||
|
|
код и как |
|
данных через сокеты. |
|
|
|
|
|
претация, JIT-компиляция, |
|
|||||
|
|
работают |
|
|
|
|
|
|
|
|
|
|
|
|
|

программы на |
сборка мусора, куча, стэк, |
уровне железа. |
адресация памяти... |
Небольшое |
|
понимание |
|
виртуальной |
|
памяти и |
|
пэйджинга. |
|
Навыки: |
2n |
n2 |
n (Уровень2) |
log(n) (Уровень3) |
Коммен |
тарии |
|||||
(Уровень0) |
(Уровень1) |
||||||||||
|
|
|
|
|
|
|
|
|
|||
Контроль |
Бэкап |
VSS и основы |
Специалист по возможностям CVS |
Знает распределенные |
|
|
|||||
исходников в |
CVS/SVN |
and SVN. Знает, как разветвить |
|
|
|||||||
версий |
системы VCS. Пробовал |
|
|
||||||||
папку с датой |
в качестве |
и слить, настроить репозиторий |
|
|
|||||||
исходников |
Bzr/Mercurial/Darcs/Git. |
|
|
||||||||
бэкапа. |
пользователя |
и т.д. |
|
|
|||||||
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|||||
|
|
|
|
Может настроить скрипт |
|
|
|||||
Автома- |
Знает, как |
|
|
для сборки системы |
|
|
|
|
|
||
запустить Build |
Умеет билдить из |
Может настроить скрипт для сборки |
и документации , инсталля- |
|
|||||||
тизация |
из среды |
командной |
основной системы. |
торов, генераторов |
"release |
|
|||||
build'ов |
программирова- |
строки. |
notes" и добавить |
скрипт |
|
||||||
|
|
||||||||||
|
ния. |
|
|
в систему контроля |
версий |
|
|||||
|
|
|
|
исходников. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Написал |
|
|
|
|
|
|
|
|
|
|
|
автоматизи- |
|
|
|
|
|
|
|
|
|
|
|
рованные юнит- |
|
Понимает и может |
|
|
|
|
|
|
|
Автомати- |
Думает, что |
тесты и может |
|
настроить автоматические |
|
||||||
тестирование — |
создавать свои |
Пишет код в стиле Test-driven |
тесты на функционал |
, |
|
|
|||||
зированное |
|
|
|||||||||
это работа |
хорошие юнит- |
Development (TDD). |
пользовательский |
|
|
|
|
|
|
||
тестирование |
|
|
|
|
|
|
|||||
|
тестеров. |
тесты для кода, |
|
интерфейс и загрузку/ |
|
|
|||||
|
|
который пишет |
|
производительность |
... |
|
|
||||
|
|
в настоящее |
|
|
|
|
|
|
|
|
|
|
|
время. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Програм- |
2n |
n2 |
n (Уровень2) |
log(n) (Уровень3) |
Коммен |
тарии |
|||||
мирование: |
(Уровень0) |
(Уровень1) |
|||||||||
|
|
|
|
|
|
|
|
||||
Деком- |
Просто после- |
Может разбивать |
Способен создавать многократно |
Использует со- |
|
|
|
|
|
|
|
позиция |
довательные |
решение задачи |
используемые функции/объекты, |
ответствующие структуры |
|
||||||
задачи |
строчки кода, |
на несколько |
которые решают общие задачи. |
данных и алгоритмы . |
|
|
|
||||
|
а copy/paste — |
функций. |
|
Создает общий /объектно- |
|
||||||
|
для повторного |
|
|
ориентированный |
код, |
|
|
||||
|
использования |
|
|
который инкапсулирует |
те |
|
|||||
|
кода. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
условия задачи, которые |
|
|
|
|
|
|
|||||
|
|
|
|
|
могут быть изменены. |
|
|
|
|
|
|
|||||
|
|
|
|
|
Может визуализировать |
|
|
|
|
|
|
|||||
|
|
Может |
|
|
и проектировать |
сложные |
|
|
|
|
|
|
||||
|
|
|
|
системы с несколькими |
|
|
|
|
|
|
||||||
|
|
произвести |
|
|
|
|
|
|
|
|
||||||
|
|
|
|
линейками продуктов |
|
|
|
|
|
|
||||||
|
Не способен |
декомпозицию |
|
|
|
|
|
|
|
|
||||||
|
|
|
и интеграцией |
с внешними |
|
|
|
|
|
|
||||||
Деком- |
думать |
задачи |
|
|
|
|
|
|
|
|
||||||
Может спроектировать систему, |
системами . Также должен |
|
|
|
|
|
|
|||||||||
о системе |
и спроектиро- |
|
|
|
|
|
|
|||||||||
позиция |
которая охватывает несколько |
уметь проектировать |
сис- |
|
|
|
|
|
|
|||||||
сложнее одного |
вать систему |
|
|
|
|
|
|
|||||||||
системы |
технологий/платформ. |
темы поддержки работы: |
|
|
|
|
|
|
||||||||
класса или |
в пределах |
|
|
|
|
|
|
|||||||||
|
|
|
мониторинг |
, генерация |
|
|
|
|
|
|
||||||
|
файла. |
одной |
|
|
|
|
|
|
|
|
||||||
|
|
|
отчетов, аварийные |
|
|
|
|
|
|
|
||||||
|
|
платформы или |
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
переходы на |
|
|
|
|
|
|
|
|
|
|||
|
|
технологии. |
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
использование запасных |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
ресурсов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
Важность этого кри- |
||||||
|
|
|
|
|
|
|
|
|
|
терия для программис- |
||||||
|
|
|
|
|
|
|
|
|
|
та часто недооцени |
ва - |
|||||
|
|
|
|
|
|
|
|
|
|
ют. С увеличением |
|
|
||||
|
Не может |
|
|
|
|
|
|
|
|
аутсорсин га разработ- |
||||||
|
|
|
|
Может понимать |
|
|
ки ПО в те страны , где |
|||||||||
|
выразить свои |
|
|
|
|
|
||||||||||
|
Его понимают. |
|
|
и объяснять мысли/дизайн/ |
английский не явля- |
|||||||||||
|
мысли/идеи. |
|
|
|||||||||||||
Общение |
Хорошие |
|
|
идеи/специфику в точно |
ется родным языком , |
|||||||||||
Плохо |
Может эффективно общаться. |
|||||||||||||||
правописание |
выраженной форме, |
|
этот вопрос стал более |
|||||||||||||
|
с правописани- |
|
|
|
||||||||||||
|
и грамматика. |
|
|
в общении соответствует |
актуальным |
. Я знаю |
||||||||||
|
ем |
|
|
|||||||||||||
|
|
|
|
ситуации. |
|
|
|
|
несколько |
проектов |
, |
|||||
|
и грамматикой. |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
которые |
провалились |
||||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
потому, что |
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
программисты не |
|
|
||||
|
|
|
|
|
|
|
|
|
|
могли понять смысл |
|
|||||
|
|
|
|
|
|
|
|
|
|
обсуждения |
. |
|
|
|||
|
|
|
|
|
Файл имеет разделы |
|
|
|
|
|
|
|
||||
|
|
|
|
|
"license header", "sum- |
|
|
|
|
|
|
|||||
Организация |
Нет четкой |
Методы |
Код разделен на регионы, имеет |
mary", хорошие |
|
|
|
|
|
|
|
|
||||
сгрупированны |
хорошие комментарии, в т.ч. со |
комментарии, |
|
|
|
|
|
|
|
|
|
|||||
кода в файле |
организации |
логически и по |
ссылками на другие файлы |
непротиворечивую |
|
|
|
|
|
|
|
|||||
|
в файле. |
вызовам. |
исходников. |
|
расстановку пробелов |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
и табуляции. Файл должен |
|
|
|
|
|
|
|||||
|
|
|
|
|
выглядеть красиво. |
|
|
|
|
|
|
|
||||
Организация |
Не приходит в |
Похожие файлы |
Каждый физический |
файл |
Организация кода на физи- |
|
|
|
|
|
|
|||||
кода между |
голову мысль |
группируются |
предназначен для чего-то одного , |
ческом уровне точно |
|
|
|
|
|
|
|
|||||
файлами |
четко |
в папку. |
например, служит для объявления |
соответствует |
проекту, и, |
|
|
|
|
|
|
|
организовать |
|
одного класса или для реализации |
глядя на имена файлов |
|
||||||
|
код с помощью |
|
одного функционала и т.д. |
|
и структуру папок, можно |
|
|||||
|
разделения на |
|
|
|
понять, как |
|
|
|
|
|
|
|
файлы. |
|
|
|
спроектирована данная |
|
|||||
|
|
|
|
|
реализация. |
|
|
|
|
|
|
|
|
|
|
|
Структура дерева |
|
Разница между этим |
||||
|
|
|
|
|
исходного кода |
|
|
пунктом и предыду- |
|||
Организация |
|
Простое |
Нет "круговых" зависимостей. |
|
соответствует логической |
щим состоит в масш- |
|||||
|
Бинарники, либы, документация, |
|
иерархии и организации |
табе организации. |
|||||||
Все в одной |
разделение кода |
|
|||||||||
дерева |
билды, сторонний код — все |
|
кода в проекте. Глядя на |
Организация дерева |
|||||||
исходников |
папке. |
в логические |
разложено в соответствующие |
|
имена файлов и структуру |
исходников относится |
|||||
|
подкаталоги. |
|
|||||||||
|
|
папки. |
|
папок, можно понять, как |
ко всему комплексу |
||||||
|
|
|
|
||||||||
|
|
|
|
|
спроектирована |
данная |
продуктов, которые |
||||
|
|
|
|
|
система. |
|
|
|
|
|
определяют систему. |
|
|
Хорошие имена |
|
|
Допущения в коде сопро- |
|
|||||
Чита- |
|
|
|
вождаются assert'ами, по- |
|
||||||
Односложные |
файлов, |
Нет длинных функций, а нестандарт- |
|
||||||||
бельность |
переменных, |
ный код, багфиксы и допущения |
|
ток операций в коде |
|
|
|||||
имена. |
|
естественный |
— нет глу- |
|
|||||||
кода |
классов, методов |
в коде поясняются комментариями |
. |
|
|||||||
|
бокой вложенности |
|
|
||||||||
|
|
и т.д. |
|
|
|
|
|||||
|
|
|
|
условий или методов. |
|
||||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
Безопасное |
|
Проверяет все |
|
|
Имеет свою собственную |
|
|||||
|
аргументы |
Убеждается, что проверил |
|
библиотеку , помогающую |
|
||||||
програм- |
Не понимает |
|
|
||||||||
и ставит assert'ы |
возвращаемое значение и что |
|
в безопасном |
про- |
|
|
|||||
мирование |
данной |
|
|
|
|||||||
на критические |
обрабатывает исключения |
|
граммировании, пишет |
|
|||||||
(defensive |
концепции. |
|
|
||||||||
допущения |
в потенциально бажном коде. |
|
юнит-тесты, которые |
|
|
||||||
coding) |
|
|
|
|
|||||||
|
в коде. |
|
|
эмулируют сбои. |
|
|
|||||
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|||||
|
|
|
|
|
Пишет код так, чтобы |
|
|||||
|
|
|
|
|
определять |
возможные |
|
||||
|
|
Обработка |
Убеждается, что после того, как |
|
ошибки на раннем этапе, |
|
|||||
|
Пишет код для |
ошибок в коде, |
произошла ошибка/исключение, |
|
придерживается |
|
|
|
|||
Обработка |
"идеального" |
который либо |
программа продолжает работать, |
|
последовательной |
|
|
||||
случая, когда |
кидает |
а ненужные более ресурсы, |
|
стратегии обработки |
|
|
|||||
ошибок |
|
|
|
||||||||
все работает |
исключение, |
коннекшены и память были |
|
исключений во всех слоях |
|
||||||
|
|
|
|||||||||
|
и нет сбоев. |
либо генерирует |
корректно освобождены |
|
кода, разрабатывает |
общие |
|
||||
|
|
ошибку. |
обработчиком ошибки. |
|
принципы обработки |
|
|
||||
|
|
|
|
|
исключений |
во всей |
|
|
|||
|
|
|
|
|
системе. |
|
|
|
|
|
|
Среда |
В основном |
Способен эф- |
Для самых используемых функций |
|
Написал свои макросы. |
|
|||||
програм- |
использует IDE |
фективно поль- |
среды знает горячие клавиши. |
|
|
|
|
|
|
|
|
мирования |
для редактиро- |
зоваться меню |
|
|
|
|
|
|
|
|
|
(IDE) |
вания текста. |
в IDE. Знает |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
некоторые тон- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
кости среды. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Написал библиотеки |
, |
|
|
||||||
|
Часто |
Помнит самые |
|
|
|
|
|
которые оборачивают API, |
Примером API может |
||||||||
|
нуждается |
|
|
|
|
|
для упрощения задач, |
быть Java-библиотека, |
|||||||||
API |
часто |
|
|
|
|
|
|||||||||||
в обращениях |
Обширные и глубокие знания API. |
которые наиболее часто |
.NET фреймворк или |
||||||||||||||
используемые |
|||||||||||||||||
|
к документа- |
|
|
|
|
|
встречаются. Эти |
|
|
API какого-либо |
|||||||
|
API. |
|
|
|
|
|
|
|
|||||||||
|
ции. |
|
|
|
|
|
библиотеки также часто |
приложения |
. |
||||||||
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
восполняют пробелы в API. |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Не использует |
Знает, но не |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
никаких |
использует |
Профессионально |
пользовался более |
|
|
|
|
|
|
|
|
|
||||
Фреймворки |
фреймворков за |
популярные |
чем одним |
фреймворком и хорошо |
Является автором |
|
|
|
|
||||||||
|
рамками |
фреймворки, |
разбирается в идиомах |
|
фреймворка. |
|
|
|
|
|
|
||||||
|
основной |
доступные для |
фреймворков. |
|
|
|
|
|
|
|
|
|
|
|
|
||
|
платформы. |
его платформы. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Понимает |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
выставленные |
Задает вопросы, |
Понимает картину |
в целом |
|
Может предложить |
лучшие |
|
|
||||||||
|
требования и |
касающиеся не |
|
альтернативы и следовать |
|
|
|||||||||||
Требования |
и предлагает дополнительные |
|
|
||||||||||||||
пишет код |
рассмотренных |
выставленным |
|
|
|
|
|
||||||||||
аспекты, которые |
должны быть |
|
|
|
|
|
|||||||||||
|
в соответствии |
в спецификации |
требованиям, основываясь |
|
|
||||||||||||
|
описаны в спецификации . |
|
|
|
|||||||||||||
|
со специфика- |
случаев. |
|
на собственном опыте. |
|
|
|||||||||||
|
|
|
|
|
|
|
|
||||||||||
|
цией. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Отсутствует |
|
|
|
|
|
|
Писал и публиковал |
|
|
|
||||||
Скрипты |
знание |
Batch- |
|
|
|
|
|
|
|
|
|||||||
Perl/Python/Ruby/VBScript/Powershell. |
повторно используемые |
|
|
||||||||||||||
скриптовых |
файлы/shell. |
|
|
||||||||||||||
|
|
|
|
|
|
скрипты. |
|
|
|
|
|
|
|
|
|||
|
инструментов. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||||||||||
Базы Данных |
Думает, что |
Знает основы |
Может спроектировать хорошие |
Может осуществлять |
|
|
|||||||||||
|
Excel — это |
баз данных, |
нормализованные |
схемы БД, |
администрирова ние БД, |
|
|
||||||||||
|
база данных. |
нормализацию, |
с учетом запросов, которые будут |
оптимизацию |
произ- |
|
|
|
|||||||||
|
|
ACID, |
выполняться; умело использует |
водительности |
БД, |
|
|
|
|
||||||||
|
|
транзакции |
представления, хранимые |
|
индексную оптимизацию, |
|
|
||||||||||
|
|
и может |
процедуры, триггеры и собственные |
писать сложные select'ы, |
|
|
|||||||||||
|
|
написать |
типы данных. Понимает разницу |
может заменить |
|
|
|
|
|||||||||
|
|
простые select'ы. |
между кластеризованными |
и не- |
использование курсора |
|
|
||||||||||
|
|
|
кластеризованными |
индексами. |
вызовами |
функций SQL, |
|
|
|||||||||
|
|
|
Специалист в использовании ORM- |
понимает, как данные хра- |
|
|
|||||||||||
|
|
|
тулзов. |
|
|
|
|
нятся внутри, как хранятся |
|
|
|||||||
|
|
|
|
|
|
|
|
индексы, имеет |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
представление о том, как |
|
|
|||||||
|
|
|
|
|
|
|
|
зеркалятся |
и реп- |
|
|
|
|
||||
|
|
|
|
|
|
|
|
лицируются БД и т.д. |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Понимает как работает
двухфазный commit.
Опыт: |
2n |
n2 |
n (Уровень2) |
log(n) (Уровень3) |
Коммен |
тарии |
|||
(Уровень0) |
(Уровень1) |
||||||||
|
|
|
|
|
|
|
|||
|
|
Декларативные |
|
|
|
|
|
|
|
|
|
(SQL) языки |
|
|
|
|
|
|
|
|
|
программиро- |
|
|
|
|
|
|
|
|
|
вания, допол- |
|
|
|
|
|
|
|
|
Императивные |
нительный |
|
|
|
|
|
|
|
Языки и |
бонус — если |
Функциональные языки прог- |
|
|
|
|
|
||
или объектно- |
|
|
|
|
|||||
понимает разни- |
раммирования, дополнительный |
|
|
|
|
||||
професси- |
ориентирован- |
Конкурентные (Erlang, Oz) |
|
|
|||||
цу между ста- |
бонус — если знает, что такое |
|
|
||||||
ональный |
ные языки |
и логические (Prolog). |
|
|
|||||
тической и ди- |
"ленивые вычисления", |
|
|
||||||
опыт |
программирова- |
|
|
|
|
||||
|
ния |
намической, |
каррирование, продолжения. |
|
|
|
|
||
|
слабой и строгой |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||
|
|
типизацией, |
|
|
|
|
|
|
|
|
|
статически |
|
|
|
|
|
|
|
|
|
выводимыми |
|
|
|
|
|
|
|
|
|
типами. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Годы |
|
|
|
|
|
|
|
|
|
професси- |
1 |
2−5 |
6−9 |
10+ |
|
|
|
||
онального |
|
|
|
||||||
|
|
|
|
|
|
|
|
||
опыта |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Годы |
|
|
|
|
|
|
|
|
|
професси- |
|
|
|
|
|
|
|
|
|
онального |
|
|
|
|
|
|
|
|
|
опыта |
1 |
2−3 |
4−5 |
6+ |
|
|
|
||
исполь- |
|
|
|
|
|
|
|
|
|
зования |
|
|
|
|
|
|
|
|
|
платформы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
Работал хотя бы |
|
|
Эксперт своей предметной |
|
|
||
Знание |
Не знает |
|
|
области, проектировал |
|
|
|||
над одним |
Работал над несколькими |
|
|
||||||
о понятии |
и реализовывал несколько |
|
|
||||||
предметной |
продуктом |
продуктами в одной и той же |
|
|
|||||
"предметная |
продуктов |
/решений в ней, |
|
|
|||||
области |
в предметной |
предметной области. |
|
|
|||||
область". |
хорошо разбирается в ее |
|
|
||||||
|
области. |
|
|
|
|
||||
|
|
|
|
сущностях и протоколах. |
|
|
|||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
Знания: |
2n |
n2 |
n (Уровень2) |
log(n) (Уровень3) |
Коммен |
тарии |
|||
(Уровень0) |
(Уровень1) |
||||||||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
Инстру- |
Ограничены |
Знает |
|
Хорошие знания редакторов кода, |
Написал свои инструмен- |
|
|||||||||
ментарии |
используемой |
о некоторых |
|
отладчиков , различных IDE, open- |
тарии и скрипты, дополни- |
|
|||||||||
|
IDE (VS.Net, |
альтернативах |
|
source альтернативах |
и т.д |
тельный плюс — если эти |
|
||||||||
|
Eclipse и т.д). |
популярным |
|
(например, это может быть кто-то, |
скрипты были |
|
|
|
|||||||
|
|
стандартным |
|
кто знает большинство |
тулзов из |
опубликованы. |
|
|
|
||||||
|
|
инструментари- |
|
списка Скота Ганзельмана). |
|
|
|
|
|
|
|
|
|||
|
|
ям. |
|
Использует ORM-тулзы. |
|
|
|
|
|
|
|
|
|||
|
|
Имеет общее |
|
|
|
|
|
Реализовал несколько |
|
|
|||||
|
|
|
Хорошие рабочие знания code base, |
больших |
фич в code base |
|
|||||||||
|
Никогда не |
представление |
|
|
|||||||||||
Code base |
|
реализовывал несколько багфиксов |
и может легко описать |
|
|
||||||||||
смотрел code |
о расположении |
|
|
|
|||||||||||
|
и, может быть, некоторые маленькие |
изменения, требуемые |
для |
|
|||||||||||
|
base. |
кода и о том, как |
|
|
|||||||||||
|
|
фичи. |
|
|
|
реализации |
большинства |
|
|||||||
|
|
его собрать. |
|
|
|
|
|
фич или багфиксов. |
|
|
|||||
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
Пробовал сделать |
что-либо |
|
|||||
Знание |
|
Слышал |
|
|
|
|
|
сам, и используя preview- |
|
||||||
Не слышал |
|
Скачивал alpha/preview/CTP/beta- |
версию, сбилдил свою |
|
|
||||||||||
о новейших |
|
|
|
||||||||||||
новейших |
о новейших |
|
версии и читал некоторые статьи |
программу |
. Допол- |
|
|
||||||||
технологиях |
|
|
|
||||||||||||
технологий |
технологиях. |
|
и руководства на эти темы. |
нительный плюс — если |
|
||||||||||
в своей области. |
|
|
|||||||||||||
|
|
|
|
|
|
|
|
сделал свое решение |
|
|
|||||
|
|
|
|
|
|
|
|
доступным |
для других. |
|
|
||||
|
|
|
|
|
|
|
|
Написал свои тулзы для |
|
||||||
|
|
|
|
|
|
|
|
расширения возможностей |
|
||||||
Знание |
Нулевые |
В основном |
|
Имеет глубокие познания |
платформы или для |
|
|
||||||||
|
извлечения |
|
|
|
|
||||||||||
знания |
знает, как |
|
внутренних аспектов платформы |
|
|
|
|
||||||||
внутренних |
|
дополнительной |
|
|
|
||||||||||
внутренних |
работает |
|
и может обрисовать, как платформа |
|
|
|
|||||||||
аспектов |
|
информации о работе |
|
|
|||||||||||
аспектов |
платформа |
|
превращает программу |
|
|
|
|
||||||||
платформы |
|
|
|
платформы. Например, |
|
|
|||||||||
платформы. |
внутри. |
|
в исполняемый код. |
|
|
|
|
|
|||||||
|
|
|
|
|
дизассемблер, |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
декомпилятор, отладчик |
|
||||||
|
|
|
|
|
|
|
|
и т.д. |
|
|
|
|
|
|
|
Книги |
Серии книг |
Совершенный |
|
Приемы объектно-ориентированного |
Structure and Interpretation |
|
|||||||||
|
"... за 21 день" |
код |
|
проектирования . Паттерны |
of Computer Programs |
|
|
||||||||
|
"... за 24 часа" |
|
|
проектирования |
|
|
|
|
|
|
|
|
|
|
|
|
"... для |
Не заставляйте |
|
|
|
|
|
Concepts Techniques and |
|
||||||
|
чайников". |
меня думать! |
|
Человеческий фактор: успешные |
Models of Computer |
|
|
||||||||
|
|
Регулярные |
|
проекты и команды |
|
|
|
Programming |
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
выражения |
|
Жемчужины программирования |
Искусство програм- |
|
|
||||||||
|
|
|
|
Algorithm Design Manual |
мирования |
|
|
|
|
|
|||||
|
|
|
|
Database systems, by C. J |
|
||||||||||
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
Программист-прагматик |
Date |
|
|
|
|
|
|
|
|
|
|
|
Мифический человеко |
-месяц |
Thinking Forth |
|
|
|
|
|
|
|
|
|
|
Little Schemer |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Читает |
|
|
|
|
|
|
|
|
|
технические |
|
|
|
|
|
|
|
|
Слышал |
блоги, блоги |
|
Ведет ссылочный блог, содержащий |
Ведет блог, в котором |
|
|
||
|
о программи- |
|
содержатся его |
|
|
||||
Блоги |
о блогах, но не |
|
коллекции ссылок на полезные |
|
|
||||
ровании |
|
собственные понимание |
|
||||||
уделял им |
|
статьи и тулзы, которые он |
|
||||||
|
и разработке ПО |
|
вопросов и соображения на |
|
|||||
|
внимания. |
|
собирает. |
|
|
|
|||
|
|
и регулярно |
|
|
|
|
тему программирования |
. |
|
|
|
слушает |
|
|
|
|
|
|
|
|
|
подкасты. |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Замечание:
Каждый следующий уровень включает в себя предыдущий, т.е. любой разработчик, находящийся на уровне 3, должен удовлетворять критериям двух предыдущих уровней.
Источник: Omega's Blog
Форматирование и исправление: Grom PE
Английская версия: Programmer Competency Matrix