суббота, 15 января 2011 г.

Термины и понты: как оценивать опыт специалиста?

Один мой коллега, перейдя на работу в другую компанию, как-то с сожалением констатировал, что чувствует себя в новой команде "полным нубом". Далее между нами произошёл такой диалог:

Я: Что заставляет тебя оценивать себя так скромно?

Коллега: Меня окружают очень опытные люди.

Я: Почему ты так решил?

Коллега: По их разговорам и используемым терминам. Многие из терминов я просто не знаю...

Этому разговору можно было бы не придавать значения, если бы не обсуждения на программерских форумах, посвящённые тому, как оценивать квалификацию программиста, и не мой интерес к этому вопросу.

Предыдущие публикации и обсуждения смотрите здесь:


Зададимся вопросом: А как инженеры оценивают квалификацию других инженеров?


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

Чтобы подтвердить эту мысль, приведу другой пример. Недавно один мой коллега "обиделся" на меня: "Почему ты всё время говоришь "анриэловский движок"? Этим ты как бы принижаешь его роль. У тебя получается, что будто бы это движок одной игры - Unreal Tournament. Правильнее говорить Unreal Engine!"

Неправильная профессиональная терминология режет слух и часто заставляет усомниться в квалификации специалиста.

С другой стороны, квалифицированных программистов не так много, и оценивать опыт исключительно по терминологии (а иногда - и по понтам), на мой взгляд, неразумно. Это открывает широкие возможности для слабо образованных специалистов - достаточно лишь поднабраться правильных терминов.

Другой мой коллега является мастером по прохождению собеседований. Сразу скажу, что, помимо этого, он ещё и является хорошим специалистом. Как-то в разговоре он поделился секретом своего успеха: на многие типовые вопросы, которые задают на собеседованиях, у него заготовлены типовые ответы. Важное замечание: эти ответы составлены терминологически правильно - так, что создают у собеседующего правильное впечатление.

Например, на вопрос "Что такое программная архитектура?" мой коллега имеет заготовленный ответ - "Это набор функциональных компонентов и взаимосвязей между ними".

Честно признаюсь, звучит красиво. ;)

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

Критерий 1: количество завершённых коммерческих проектов.
Сразу скажу, не интересуют демо-версии, программы, написанные для души, курсовые и дипломные работы.

В жёстком варианте следует учитывать только те программы, которые были не только сделаны, но и поступили в продажу (для продуктовых разработчиков) или установлены и используются клиентом (для разработчиков, пишущих софт на заказ).

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

Критерий 2: вес/объём каждого из выпущенных проектов.
Важно понимать, о проектах какой сложности идёт речь.

Сложность можно оценивать по трудозатратам. Но не по фактическим (т.к. при плохой организации разработка даже самой простейшей программы может занять месяцы и годы), а по нормативным (важно оценить, за какое время и какими силами такой проект может быть сделан).

Критерий 3: вклад специалиста в каждый проект.
Если целиком проект оценить в 100%, то какая часть из этого реализована собеседуемым специалистом?

Если пользоваться приведёнными критериями, то опыт можно посчитать по формуле:

Опыт = Сумма_по_всем_проектам (Вес_проекта * Вклад_специалиста)

6 комментариев:

  1. Хм а если один кандидат сделал 352000 проектов уровня сложности сайта визитки, а другой сделал 1 проект: например написал движок для инет магазинов, который используется многими разработчиками.
    То судя по вышеприведенной формуле первый будет котироваться намного выше, хотя возможно он не будет уметь и трети того что умеет 2й...
    Одного моего знакомого верстальщика не взяли на работу из за того что он предоставил 10 работ, а там требовалось минимум 30, пускай однотипных, но 30!
    Разве это не бред?

    ОтветитьУдалить
  2. У простого проекта вес по критерию 2 будет низким, а у сложного - высоким. Соответственно, диспропорции не возникнет.

    ОтветитьУдалить
  3. волшебной формулы для определения квалификации не существует. другое дело испытательный срок, во время которого можно в боевых условиях сделать правильные выводы о способностях индивида.

    ОтветитьУдалить
  4. Лично я исповедую репутационную модель: программист настолько хорош, насколько он известен. Анонимы и темные лошадки могут быть супер-гениями, но это еще доказать нужно.

    ОтветитьУдалить
  5. 2 Dmitry Timofeev:
    Для прохождения испытательного срока человека тоже нужно отобрать. Не будете же Вы всех желающих устраивать на работу, чтобы потом сделать окончательный выбор.

    2 Dmitri:
    Программисты - не актёры кино и не эстрадные артисты. Очень многие - просто работают и не создают вокруг себя излишнего шума. Среди моих коллег таких большинство.

    ОтветитьУдалить
  6. 2askofen: так я знаю! Я знаю! 95% программистов - анонимы. Ничего нет ни в сети ни в журналах, монографий нуль, итп. Я как раз и говорю что _может_ они и хорошие программисты, но лично я предпочитаю работать с людьми, у которых есть имя и репутация. Так больше уверенности в результате.

    ОтветитьУдалить