Типові помилки програміста при влаштуванні на роботу

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

Криве резюме

По резюме відразу видно, уміє людина думати, чи ні. Нормальна людина, коли пише резюме, робить це з точки зору користувача, ставлячи саме собі питання: чи “Допоможе моє резюме працедавцеві вибрати мене”?. Зрозуміло, що хедхантер або мійкруг самі формують каркас резюме, але навіть користуючись цими платформами претенденти примудряються робити помилки.

Типові помилки в резюме:

  • немає контактів (так, так буває!)
  • немає супровідного листа, коли це необхідно (чому ви хочете до нас саме на цю вакансію). Буває, що лист не треба, тому що все вже зрозуміло: працював 20 років у фронтенді і хоче продовжувати. А ось якщо кандидат працював сантехніком і вирішив стати програмістом – виникають питання. Їх краще відразу зняти, написавши про свої мотиви в супровідному листі
  • не вказаний рівень передбачуваного доходу. Іноді здається, що якщо ви не вкажете з/п, то у вас буде більше простір для маневру. Проте, таким чином ви виявляєтеся поза фільтром працедавця, якщо він вказав при пошуку конкретний діапазон грошей.
  • резюме написане не на мові працедавця. Якщо хочете влаштуватися в Україні, – пишіть на українською. Якщо за рубіж – на англійському. Краще всього мати дві версії.
  • дебільні жарти. Почуття гумору – штука небезпечна і відносна, не намагайтеся блиснути їм в резюме. Текст не передає емоцій, тому ваш жарт можуть не зрозуміти.

Немає проектів і досвіду

Якщо ви влаштовуєтеся на роботу програмістом, у вас має бути досвід. Навіть, якщо ви влаштовуєтеся на позицію джуниора, все одно треба мати за спиною якісь проекти на рівні хобі або навчання. Ідеально, якщо у вас є пристойний аккаунт на гитхабе, куди ви хоч би раз в декілька місяців щось розпушуєте. Особисто у мене такий аккаунт є і я в нім постійно працюю. Часто доводиться чути, що кандидат не може показати код, тому що у нього NDA. Особисто я в це не вірю. Завжди можна показати свій код, навіть якщо він закритий NDA, але у відриві від контексту: просто показати якусь частину, по якій зрозумілий ваш стиль кодування. Якщо показати зовсім нічого, доведеться робити тестове завдання, а це витрати часу, причому, в першу чергу, претендента. Так що в інтересах претендента підготувати код для демонстрації заздалегідь.

Не відповідає на дзвінки/листи

Ця штука відбувається настільки часто, що я дивуюся, як такі люди взагалі знаходять роботу. У моєму розумінні пристойна людина передзвонює по пропущених дзвінках і відповідає на листи. Якщо я бачу, що мені наполегливо дзвонить один і той же номер вже четвертий раз за два дні, я обов’язково передзвоню. Якщо пишуть лист, – відповім хоч би однією пропозицією. А деякі кандидати відгукуються на вакансії на HH, відправляють резюме і не відповідають на дзвінки і листи. Особисто для мене це ознака безвідповідальності і/або неуважності. І те і інше погано, так що таких кандидатів я записую в анунахи.

Криве тестове завдання

Часто присилають погано зроблене тестове завдання. Наведу приклад типових помилок для джави, але цей список прекрасно підійде і для інших мов.

  • Неуважне читання завдання. Наприклад, використання ORM, коли написано, що його використати не можна;
  • Глушення виключень через e.printStackTrace ();
  • Відсутність коментарів;
  • Криве ТОП: які класи чим повинні займатися;
  • Недостатнє розділення коду;
  • SQL Injection;
  • Лапшекод; Величезні методи, які можна розбити для зрозумілості на декілька частин;
  • Робота з гитом: зайві файли в репозиторії;
  • Іменування класів, методів, стиль кодування;
  • Налаштування БД в неправильному місці;
  • “My English is very good”. Якщо хріновий англійський, пишіть на росіянинові
  • Відсутність тестів
  • Незакриті ресурси: файли, підключення

Погані стосунки

Я живу в маленькому провінційному місті Череповці і усі програмісти один одного знають. Коли до мене приходить кандидат, я майже завжди знаю, у кого навести про нього довідки. Майже завжди мені щось розповідають і я приймаю рішення, виходячи з чужої думки. Мало бути хорошим програмістом, треба бути ще і хорошою людиною. Навіть, я б сказав, що людські якості грають первинну роль при прийомі.

Одного разу до мене прийшов влаштовуватися хороший програміст на ім’я Микола. Поговоривши з ним, я зрозумів, що він мудак і в якійсь формі йому відмовив. Через пару днів мені дзвонить мій самий головний керівник і питає:

  • Дзвонив Микола Пупкин і скаржиться, що ти його не узяв. Чому не узяв?
  • Тому що він мудак
  • А, зрозумів, добре.

Іноді ми беремо абсолютно непідготовлених джуниоров, тому що “хороша людина”. Була б людина хороша, а знання ми в нього запихнемо на внутрішніх курсах або відправимо вчитися на зовнішні.

Невміння обгрунтувати свої рішення

Якщо ви робите тестове завдання або скидаєте приклад свого коду, треба уміти розповісти про цей код: чому були прийняті ті або інші рішення. Якщо ви відразу розумієте, що рішення неочевидне, пишіть відразу, чому ви зробили так, а не інакше.

У мене був випадок, коли я узяв на роботу програміста, а він розпочав постійно з мене сперечатися з якихось архітектурних питань. Сперечатися – це добре, але треба уміти обгрунтовувати свою позицію, а не говорити “тому що так потрібно”. З часом вийшла дивна ситуація: я говорю одно, а він тихенько робить інше. Довелося розлучитися. Але в цій ситуації була і моя помилка: треба було відразу при прийомі на роботу прояснити, хто у будинку хазяїн і хто приймає кінцеве рішення. Коли я шукав заміну цьому хлопцю, я цю помилку виправив і ми відразу на вході договорлись, хто приймає кінцеве рішення. Тепер жодних проблем.

Нерозуміння рівня доходу

Часто кандидат приходить і не знає, скільки він хоче заробляти. Коли ставлю питання, часто чую таку відповідь: “Ой, це складне питання, я про це доки не думав”. Такий кандидат завжди отримує мінімум. Моя тактика:

  • Скільки ви хочете заробляти?
  • Не знаю
  • 10 тисяч досить?
  • Ні, замало
  • Добре, а 25 тисяч досить?
  • Ні, мало, це тільки на кредит за машину
  • Окі, тоді 45?
  • Так, більше менш.

При таком диалоге кандидат всегда получает меньше, чем мог бы. Если же он подготовился заранее, знает свой уровень и зарплаты по рынку для своего уровня, он сам может себя реально оценить.При такому діалозі кандидат завжди отримує менше, ніж міг би. Якщо ж він підготувався заздалегідь, знає свій рівень і зарплати по ринку для свого рівня, він сам може себе реально оцінити.

Лінощі в саморозвитку

Я запитую кандидатів про книжки, які він мені порекомендував би шанувати у своїй галузі. Я говорю приблизно так: “Я погано знаю Angular 6. Що порекомендуєте шанувати/подивитися, щоб навчитися”? Якщо кандидат не захоплений своєю справою, він відповість щось дуже відносне. А якщо кандидат звик до постійного навчання, він негайно порекомендує конкретну книжку або конкретні курси.

Ось такі вийшли помилки. Іноді здається, що у мене занадто завищені вимоги, проте, по результату, виявляється, що в команді працюють тільки самі класні люди.
Сподіваюся, це комусь допоможе знайти хорошу роботу. Всім щастя та Божественної Любові =)