Один мой коллега, перейдя на работу в другую компанию, как-то с сожалением констатировал, что чувствует себя в новой команде "полным нубом". Далее между нами произошёл такой диалог:
Я: Что заставляет тебя оценивать себя так скромно?
Коллега: Меня окружают очень опытные люди.
Я: Почему ты так решил?
Коллега: По их разговорам и используемым терминам. Многие из терминов я просто не знаю...
Этому разговору можно было бы не придавать значения, если бы не обсуждения на программерских форумах, посвящённые тому, как оценивать квалификацию программиста, и не мой интерес к этому вопросу.
Предыдущие публикации и обсуждения смотрите здесь:
Зададимся вопросом: А как инженеры оценивают квалификацию других инженеров?
При помощи тестовых заданий и грамотных вопросов на собеседовании? Не только. Реплика моего коллеги показывает, что немаловажную роль играют терминология и характерные речевые обороты.
Чтобы подтвердить эту мысль, приведу другой пример. Недавно один мой коллега "обиделся" на меня: "Почему ты всё время говоришь "анриэловский движок"? Этим ты как бы принижаешь его роль. У тебя получается, что будто бы это движок одной игры - Unreal Tournament. Правильнее говорить Unreal Engine!"
Неправильная профессиональная терминология режет слух и часто заставляет усомниться в квалификации специалиста.
С другой стороны, квалифицированных программистов не так много, и оценивать опыт исключительно по терминологии (а иногда - и по понтам), на мой взгляд, неразумно. Это открывает широкие возможности для слабо образованных специалистов - достаточно лишь поднабраться правильных терминов.
Другой мой коллега является мастером по прохождению собеседований. Сразу скажу, что, помимо этого, он ещё и является хорошим специалистом. Как-то в разговоре он поделился секретом своего успеха: на многие типовые вопросы, которые задают на собеседованиях, у него заготовлены типовые ответы. Важное замечание: эти ответы составлены терминологически правильно - так, что создают у собеседующего правильное впечатление.
Например, на вопрос "Что такое программная архитектура?" мой коллега имеет заготовленный ответ - "Это набор функциональных компонентов и взаимосвязей между ними".
Честно признаюсь, звучит красиво. ;)
Выше я писал, что оценивать опыт специалиста исключительно по правильным словам, которые он говорит, неразумно. Попробую предложить для оценки квалификации другие критерии, на мой взгляд, более инструментальные.
Критерий 1: количество завершённых коммерческих проектов.
Сразу скажу, не интересуют демо-версии, программы, написанные для души, курсовые и дипломные работы.
В жёстком варианте следует учитывать только те программы, которые были не только сделаны, но и поступили в продажу (для продуктовых разработчиков) или установлены и используются клиентом (для разработчиков, пишущих софт на заказ).
В мягком варианте можно учитывать программы, которые были сделаны до конца, но не были выпущены не по вине разработчика (например, в связи с банкротством издателя).
Критерий 2: вес/объём каждого из выпущенных проектов.
Важно понимать, о проектах какой сложности идёт речь.
Сложность можно оценивать по трудозатратам. Но не по фактическим (т.к. при плохой организации разработка даже самой простейшей программы может занять месяцы и годы), а по нормативным (важно оценить, за какое время и какими силами такой проект может быть сделан).
Критерий 3: вклад специалиста в каждый проект.
Если целиком проект оценить в 100%, то какая часть из этого реализована собеседуемым специалистом?
Если пользоваться приведёнными критериями, то опыт можно посчитать по формуле:
Опыт = Сумма_по_всем_проектам (Вес_проекта * Вклад_специалиста)
Хм а если один кандидат сделал 352000 проектов уровня сложности сайта визитки, а другой сделал 1 проект: например написал движок для инет магазинов, который используется многими разработчиками.
ОтветитьУдалитьТо судя по вышеприведенной формуле первый будет котироваться намного выше, хотя возможно он не будет уметь и трети того что умеет 2й...
Одного моего знакомого верстальщика не взяли на работу из за того что он предоставил 10 работ, а там требовалось минимум 30, пускай однотипных, но 30!
Разве это не бред?
У простого проекта вес по критерию 2 будет низким, а у сложного - высоким. Соответственно, диспропорции не возникнет.
ОтветитьУдалитьволшебной формулы для определения квалификации не существует. другое дело испытательный срок, во время которого можно в боевых условиях сделать правильные выводы о способностях индивида.
ОтветитьУдалитьЛично я исповедую репутационную модель: программист настолько хорош, насколько он известен. Анонимы и темные лошадки могут быть супер-гениями, но это еще доказать нужно.
ОтветитьУдалить2 Dmitry Timofeev:
ОтветитьУдалитьДля прохождения испытательного срока человека тоже нужно отобрать. Не будете же Вы всех желающих устраивать на работу, чтобы потом сделать окончательный выбор.
2 Dmitri:
Программисты - не актёры кино и не эстрадные артисты. Очень многие - просто работают и не создают вокруг себя излишнего шума. Среди моих коллег таких большинство.
2askofen: так я знаю! Я знаю! 95% программистов - анонимы. Ничего нет ни в сети ни в журналах, монографий нуль, итп. Я как раз и говорю что _может_ они и хорошие программисты, но лично я предпочитаю работать с людьми, у которых есть имя и репутация. Так больше уверенности в результате.
ОтветитьУдалить