Як знайти хорошого програміста - будь альфою


Як впізнати хорошого програміста будучи бізнесменом?

Це не так-то просто, як може здатися. Досвід, зазначений в резюме мало чим допомагає, так як кращі програмісти часто не мають "офіційного" досвіду, що доводить, що вони кращі. Насправді, досвід, зазначений в резюме, часто може вводити в оману. Проте, навіть ця інформація може допомогти визначити хорошого програміста.







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


У своїй статті 18 помилок, які вбивають стартапи, Пол Грем пише:

Як правило, бізнесмен наймає людину, якого вважає хорошим програмістом (у нього ж написано в резюме, що він Сертифікований Розробник Мікрософт), а на ділі він виявляється поганим. В результаті стартап виявляється в ситуації бомбардувальника часів Другої світової війни, в той час як інші стартапи проносяться мимо, як сучасні винищувачі. Такі стартапи стають схожими на великі компанії, але без їх переваг.

Так як же знайти хорошого програміста, якщо ви не є програмістом? Я сумніваюся, що на це питання існує відповідь. Спочатку я хотів написати, що для того, щоб наймати працівників, вам потрібно знайти програміста, але як зробити хоча б це? "

Я не згоден з Гремом в цьому питанні. Думаю, що існують ознаки, за якими можна визначити хорошого програміста (і, відповідно, не дуже гарної), такі, що можуть бути використані навіть бізнесмен.

1. Пристрасть. За час роботи в великих компаніях я зіткнувся з новим типом IT-фахівця, з яким раніше ніколи не зустрічався: програміст-кар'єрист. Такі люди працюють в IT тому, що вважають, що це хороша кар'єра. Вони не займаються програмуванням у вільний час. Вони дивуються, коли дізнаються, що у мене вдома сітка з трьох комп'ютерів. Вони програмують тільки на роботі. Вони не вивчають нічого нового, якщо тільки їх не відправляють на додаткове навчання (або не мотивують новою роботою, для якої потрібно вивчити нову технологію). Вони нечасто розмовляють про комп'ютери поза роботою. А коли роблять це, то їй не довіряють ентузіазму. Кажучи коротко, вони не одержимі комп'ютерами.

2. Самообучение і любов до навчання. Програмування - це постійно розвивається область. Жодного року не проходить без того, щоб якась нова технологія не змінила стару, встановивши нові стандарти і змінивши половину IT-індустрії. Не потрібно говорити, що хороші програмісти намагаються прийняти ці зміни і триматися на гребені хвилі. Однак існують такі програмісти, які ні за що не будуть вивчати нові технології, якщо тільки їх не змусять, тому що вони не люблять вивчати нове. Такі програмісти ймовірно вивчали програмування в університеті, і тепер думають, що їм вистачить того, чого вони там навчилися і може бути того, чого вони навчаться на курсах, на які їх відправить їх компанія.







Це, звичайно, не означає, що вони вільно почувають себе в будь-якому суспільстві. Але це означає, що якщо суспільство досить комфортно, то ви зможете так само нормально спілкуватися з ними, як ви б спілкувалися і з іншими "товариськими" людьми.

4. Прихований досвід. Я вже говорив про це в розділі "Пристрасть", але це такий важливий ознака, що я хочу поговорити про нього окремо.

Згадував я коли-небудь про це в своєму резюме? Ні.

Я впевнений, що у більшості хороших програмістів ціла купа подібного досвіду і вони не пишуть про нього в своєму резюме. Часто вони думають, що такий досвід не відноситься безпосередньо до майбутньої роботи, і не є "відповідним досвідом", але насправді, це приголомшливі досягнення. Хорошим питанням на інтерв'ю міг би бути: "Чи є у вас якийсь власний проект, необов'язково відноситься до вашої майбутньої роботи, яким ви займалися у вільний час, але не згадали про нього в резюме?". Якщо у вашого кандидата немає таких проектів (звичайно, якщо їх резюме не займає 20 сторінок), то цілком ймовірно, що він не є хорошим програмістом. Навіть у програміста з величезним резюме є проекти про які він не згадав.

5. Безліч технологій. Ну, це досить просто. Якщо людина любить вчитися і йому подобається возитися з новими технологіями, що є ознаками хорошого програміста, то він неминуче (якщо йому більше 22 років) буде розбиратися в дюжині різних технологій. Вивчення нових технологій це одне з найулюбленіших занять, яким може займатися людина, одержимий програмуванням. Таким чином його портфоліо буде набито різними технологіями, з якими він "трохи возився". Він необов'язково буде експертом у всіх них, але якщо він пристойний програміст, то він буде розбиратися в цілій купі технологій, що не мають прямого відношення до його роботи.

Ці "не стосувалися безпосередньо до роботи" технології не завжди вдається розпізнати, особливо непрораммісту. Будь Java-програміст може написати цілий список різних технологій, з якими він працював: Java, J2EE, Ant, XML, SQL, Hibernate, Spring, Struts, EJB, Shell Scripting, і так далі. Але це все частини однієї і тієї ж технології, і все тісно пов'язані один з одним. Сильна спеціалізація в одній лінійці технологій часто є ознакою не дуже гарної програміста.

І нарешті, якщо деякі з цих технологій є зовсім новими, це теж ознака хорошого програміста.

6. Формальні сертифікати. Це скоріше не анти-ознака, а не-ознака. Головне, що варто тут відзначити, це те, що формальні сертифікати нічого не значать при пошуку хорошого програміста. Багато хороших програмісти закінчували якийсь інститут по комп'ютерній спеціальності. Багато немає. Сертифікати на кшталт MCSE або SCJP теж нічого не значать. Вони розроблені таким чином, щоб бути доступними для всіх. Єдине, що вони показують, це те, що їх власник володіє деякими знаннями в певній технології. Вони є додатковими доказами знань, що дозволяють людям у великих корпораціях до співбесіди дізнатися, що "ця людина знає Java і у нього є сертифікат, що підтверджує це". Якщо ви наймаєте людей для маленького бізнесу, або вам потрібні дуже розумні програмісти, для команди хакерів, якій потрібно швидко щось написати, вам потрібно ігнорувати більшість з цих сертифікатів. Вони справді не дуже багато говорять про якість програміста. Те ж саме відноситься до віку. Є відмінні програмісти, яким 18 років. Є відмінні програмісти, яким 40. Неможливо оцінити якість програміста, грунтуючись на його віці (хоча, можливо, краще наймати людей приблизно одного віку; будь ласка, зверніть увагу, що дискримінація за віком є ​​нелегальною в багатьох країнах!).

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

висновок
Зрозуміло, всі ці ознаки не є абсолютними. Ви можете знайти програміста, який не підходить під деякі з них. Але моя думка полягає в тому, що навряд чи ви знайдете хорошого програміста, який не підпадає під всі ці ознаки. Теж саме відноситься і до поганих програмістам, які можуть відповідати деяким з цих критеріїв. Але чим більшій кількості ознак відповідає ваш кандидат, тим більша ймовірність, що він той самий "хороший програміст", якого ви шукали.







Схожі статті