Skip to content

Latest commit

 

History

History
345 lines (333 loc) · 19 KB

partII.md

File metadata and controls

345 lines (333 loc) · 19 KB

                                                                    Матрица компетентности программиста ч.II.

 Область Уровень
  2^n (Уровень 0) n^2 (Уровень 1) n (Уровень 2) log(n) (Уровень 3)
Програм-

мирование

       
Среда программиро-

вания (IDE)

В основном использует IDE для редактирования текста. Способен эффективно пользоваться меню в IDE. Знает некоторые тонкости среды. Для самых используемых функций  среды знает горячие клавиши. Написал свои макросы.
API Часто нуждается в обращениях к документации. Помнит самые часто используемые API. Обширные и глубокие знания

API.

Написал библиотеки, которые оборачивают API, для упрощения задач, которые наиболее часто встречаются. Эти библиотеки также часто восполняют пробелы в API.
Фреймфорки Не использует никаких фреймверков за рамками основной платформы. Знает, но не использует популярные фреймворки, доступные для его платформы. Профессионально пользовался более чем одним фреймворком и хорошо разбирается в идиомах фреймворков.  Является автором фреймворка.
Требования Понимает выставленные требования и пишет код в соответствии со спецификацией. Задает вопросы касающиеся не рассмотренных в спецификации случаев. Понимает картину в целом и предлагает дополнительные аспекты, которые должны быть описаны в спецификации. Может предложить лучшие альтернативы и следовать выставленным требованиям, основываясь на собственном опыте.
Скрипты Отсутствует знание скриптовых инструментов. Batch-файлы/shell. Perl/Python/Ruby/VBScript/

Powershell.

Писал и публиковал повторно используемые скрипты.
Базы Данных Думает, что Excel - это база данных. Знает основы баз данных, нормализацию, ACID, транзакции и может написать простые select'ы. Может спроектировать хорошие нормализованные схемы БД, с учетом запросов, которые будут выполняться; умело использует представления, хранимые процедуры, триггеры и собственные типы данных. Понимает разницу между кластеризованными и не-кластеризованными индексами. Специалист в использовании  ORM -тулзов. Может осуществлять администрирование БД, оптимизацию производительности БД, индексную оптимизацию, писать сложные select'ы, может заменить использование курсора  вызовами функций sql, понимает как данные хранятся внутри, как хранятся индексы, имеет представление о том, как зеркалятся и реплицируются БД и т.д.  Понимает как работает двухфазный commit.

 

Опыт        
Языки и профессиона-

льный опыт

Императивные или объектно-ориентированные программирования Императивные, объектно-ориентиро-

ванные и декларативные (SQL) языки программирования. Дополнительный бонус - если понимает разницу между статической и динамической, слабой и строгой типизацией, 

статически выводимыми типами.

Функциональные языки программирования. Дополнительный бонус - если знает, что такое "ленивые вычисления", каррирование, продолжения. Конкурентные 

(Erlang, Oz) и логические (Prolog).

Годы профессиональ-

ного опыта

1 2-5 6-9 10+
Годы профессиональ-

ного опыта конкретной платформы

1 2-3 4-5 6+
Знание предметной области Не знает о понятии "предметная область". Работал хотя бы над одним продуктом в своей предметной области. Работал над несколькими продуктами в одной и той же предметной области. Эксперт своей предметной области, проектировал и реализовывал несколько продуктов/решений в ней, хорошо разбирается в ее сущностях и протоколах.
Знания        
Инструментарии Ограничены используемой IDE (VS.Net, Eclipse и т.д.) Знает о некоторых альтернативах популярным стандартным инструментариям. Хорошие знания редакторов кода, отладчиков, различных IDE, open-source альтернативах и т.д. (Например, это может быть кто-то, кто знает большинство тулзов из списка Скота Ганзельмана.)

Использует ORM-тулзы.

Написал свои инструментарии и скрипты, дополнительный плюс - если эти скрипты были опубликованы.
Code base (кодовая база) Никогда не смотрел кодовую базу. Имеет общее представление о расположении кода и о том, как его собрать. Хорошие рабочие знания кодовой базы, реализовывал несколько багфиксов и, может быть, некоторые маленькие фичи. Реализовал несколько больших фич в кодовой базе, может легко описать изменения, требуемые для реализации большинства фич или багфисков.
Знание новейших технологий Не слышал о новейших технологиях. Слышал о новейших технологиях в своей области. Скачивал alpha/preview/CTP

/beta-версии и читал некоторые статьи и руководства на эти темы.

Пробовал сделать что-либо сам. Используя preview-версию сбилдил свою программу. Дополнительный плюс - если сделал свое решение доступным для других.
Знание внутренних аспектов платформы Нулевые знания внутренних аспектов платформы. В основном, знает как работает платформа внутри. Имеет глубокие познания внутренних аспектов платформы и может обрисовать, как платформа исполняет программный код. Написал свои тулзы для расширения возможностей платформы или для извлечения дополнительной информации о работе платформы. Например расширения дизассемблера, декомпилятора, отладчика и т.д.
Книги

Серии книг

"... за 21 день"

"... за 24 часа"

"... для чайников".


Совершенный код

Не заставляйте меня думать!

Регулярные выражения


Человеческий фактор: успешные проекты и команды

Приемы объектно-ориентиро-ванного проектирования. Паттерны проектирования

Жемчужины проектирования

Руководство по разработке алгоритмов

Программист-прагматик

Мифический человеко - месяц


Искусство программирования

Структура и интерпретация компьютерных программ

Concepts Techniques and    Models of Computer Programming

Database systems , by C. J Date

Thinking Forth

Little Schemer
Блоги Слышал о блогах, но не уделял им внимания. Читает технические блоги, блоги о программировании и разработке ПО и регулярно слушает подкасты. Ведет ссылочный блог, содержащий коллекции  ссылок на полезные статьи и тулзы, которые [ссылки] он собирает. Ведет блог, в котором содержится его собственные понимание вопросов программирования.

 

Замечание 1:

Каждый следующий уровень включает в себя предыдущий , т.е. разработчик находящийся на уровне 3 должен удовлетворять критериям двух предыдущих уровней.

Замечание 2:

Версия документа от 17.05.2013. О дополнениях, ошибках сообщайте в issues. Спасибо всем, кто помог сделать этот документ лучше!

Замечание 3:

Эта перевод английской версии: Programmer Competency Matrix

Первая, более теоретическая часть таблицы - Матрица компетентности программиста ч.I.>>