Сучасний найм - відстій

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

Perl - це колись колишній популярним для веба, але нині вмираючий, язик. Вмираючий цілком обґрунтовано, тому хотілося б злізти з нього на щось масово затребуване (Java).

Проблема

Змінити стек технологій - це не таке просте завдання, проблема в тому, що якщо у тебе в досвіді роботи не вказана конкретна мова програмування, а то і конкретний фреймворк/бібліотека, то ти вважаєшся невідповідним кандидатом.

Неважливо який у тебе досвід за якістю і кількістю, немає різниці здатний ти вирішувати завдання -

головне, щоб у тебе в резюме був вказаний досвід роботи з інструментами описаними в вакансії.

Оскільки ІТ сфера досить нова, то не всім зрозуміло чому це цілковитий ідіотизм. Для зрозумілої ілюстрації розберемо як приклад столярні роботи. Якщо вам потрібен столяр для виготовлення дерев'яного столу, то ви не будете в вакансії писати щось на зразок «досвід роботи залізними фальцгебелями з пластмасовими ручками». Не виключаю, що ви напишете: «потрібен досвід виготовлення столів», це хоч якось можна зрозуміти, але і це не обов'язково. Хіба у когось є сумніви в тому, що хороший столяр може виготовити стіл?

Тобто. головне завдання - знайти хорошого столяра, а не столяра, що володіє конкретним інструментом і не обов'язково столяра виконував аналогічні проекти. Хоча друге якраз може бути цінним, але в додатку до ІТ сфері тут є певні складнощі - зазвичай потрібно виготовляти щось настільки рідкісне, що знайти людину з таким досвідом практично неможливо.

Приклад зі столяром це звичайно лише аналогія, він полегшує розуміння, але не дає повної картини. Наприклад, висувати програмістам вимоги до володіння інструментами ще більш нерозумно ніж до столярів, адже біля столярів набір інструментів змінюється гранично повільно, а у програмістів інструменти змінюються з космічною швидкістю. Програмування передбачає постійно вивчення нового - сьогодні ви наймаєте людину для роботи з одними технологіями, а завтра їй доведеться використовувати інші. Я хоч і не client-side розробник, але добре пам'ятаю, що в 2007 році на клієнтській стороні популярними бібліотеками були jQuery і ExtJS (як сьогодні ReactJS і Angular), а в 2017, коли я виступав на конференції The Rolling Scopes # 37. Gomel з'ясувалося що у великому залі всього кілька людей пам'ятають такі назви. І так скрізь - всі постійно впроваджують нові технології і нікого чомусь не бентежить, що поточні співробітники не мають досвіду з цими технологіями (а якщо технологія досить нова, то може бути, що в усьому світі немає людей з досвід роботи з ними). Крім цього можна сказати, що програмісти, на відміну від столярів, займаються складними завданнями в досить новій сфері людської діяльності, ще майже немає накопиченого і тиражованого галузевого досвіду. Це столяр може взяти підручник або довідник з величезною кількістю креслень різних столів або проконсультуватися у більш досвідченого фахівця, а в ІТ сфері цього немає - навіть у типових завданнях на кшталт розробки сайтів немає готових рішень, наприклад популярні і давно існуючі CMS нерідко в нових версіях переробляють свою архітектуру в пошуках хорошого та універсального рішення. А якщо взяти трохи менш типовий проект, то буде зовсім сумно.

Виходячи зі сказаного можна зрозуміти, що досвід роботи в аналогічних проектах (на відміну від досвіду з тими ж інструментами) цінний. Воно і зрозуміло - якщо людина працювала в тій же сфері, вона знає предметну область (має в голові її модель), набила якісь шишки і вже може робити краще, ніж робила в перший раз. Якщо не помиляюся, у Фредеріка Брукса було твердження, що програма стає хорошою, тільки після того як вона переписана три рази, так ось, якщо ви наймаєте людину, яка один раз вже написала, то вам залишається всього два. Однак, як вже було сказано, знайти людину з досвідом у таких же проекти дуже складно і дорого. Подумайте скільки в світі людей створювали таск менеджери (на кшталт Redmine)? Писали білінги хостингу? Створювали месенджери? Їх досвід дуже цінний якщо ви розробляєте аналогічний проект, та ось тільки знайти і найняти їх гранично складно з безлічі причин.

Хто винен?

Не знаю, точно не HR'и, вони грають як скажуть. Може насправді все нормально в цьому світі, а я ненормальний.

Що робити?

Думайте гарненько перш ніж сформулювати вимоги до кандидата. Адже хороший програміст повинен вміти вчитися, а значить здатний освоїти будь-які потрібні вам технології. А якщо справа не в технологіях, то в чому? Очевидно, що він повинен вміти програмувати, вирішувати алгоритмічні завдання і це потрібно перевіряти даючи тестове завдання. Але треба робити це тестове завдання близьким з реальної роботи - якщо ви наймаєте системного програміста, то цілком допустимо дати йому завдання, що вимагає знання алгоритмів і т. п., щоб перевірити не тільки здатність програмувати, а й знання накопичених практик (у системному програмуванні якраз є якийсь накопичений досвід, це найстаріша частина галузі, та й зростає корінням у більш старій математиці). А якщо ви берете прикладного програміста, то вам треба перевірити здатність писати простий, ясний, читаний код правильно вирішує завдання і здатність вчитися і з високою ймовірністю ви отримаєте потрібну людину.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND