Як оцінювати роботу програміста Думка співробітників Яндекса, SavePearlHarbor
Ще одна копія хабора
Як оцінювати роботу програміста? Думка співробітників Яндекса
Давно точаться суперечки про те, що таке робота програміста — ремесло, навик чи мистецтво. У цьому постійно постає питання оцінки результату. Про те, як різні розробники та керівники в Яндексі підходять до питання оцінки роботи програміста, ми поговоримо на цьому посту.
В Яндексі працюють сотні програмістів, і результати їхньої роботи впливають на сервіси, якими користуються мільйони людей. Коли на тобі така відповідальність, потрібно вміти зупинитися і оцінити, що можна зробити краще, у чому ти найсильніша і де ці твої навички стануть у нагоді ще. Для цього треба вміти оцінити і свою роботу, і працю людей, з якими ти разом щось створюєш. Про те, як це робити, ми запитали наших колег.Андрій styskin СтискінПрограмує 19 років. В Яндексі - 8 років.

Насправді є дві важливі характеристики. Перша, наскільки те, що робить програміст, естетично правильно: наскільки його код красивий, сприймаємо іншими. І друге, що може конфліктувати з першим, але при цьому дуже важливо, це те, наскільки він вміє своїми діями, своїм кодом досягати результату за якимись метриками. Наприклад, якість пошуку.
Антон pg83 СамохваловПрограмує 19 років. В Яндексі - 9 років.
Прийшов у Маркет програмістом на C++. Працював над різними завданнями сервісу. Через кілька років перейшов у пошук, де зайнявся надійністю та продуктивністю runtime пошуку. Зараз займається системою збирання, яка дозволить збирати всю нашу кодову базу за кілька хвилин на великому розподіленому кластері.

Мені здається, найправильніший спосіб - коли тебеоцінюють колеги. Це як оцінити, хороша сторінка в інтернеті чи погана. Якщо на неї заходять люди, то вона хороша, якщо ні — погана. Те, що називається Page Rank. Також люди можуть оцінювати одне одного. Якщо більшість людей навколо тебе вважає, що ти добрий програміст, значить, ти добрий програміст. Якщо не рахує, значить, це не так.
Андрій yafinder ПлаховПрограмує 25 років. В Яндексі - 6 років.
Прийшов до Яндекса старшим розробником. Першим його завданням було створення нового типу чинників ранжирування – доменних. Зараз керує службою функціональності пошуку, зокрема, розробляє пошукові підказки.

А як оцінювати роботу митця? У певному сенсі, це дуже схожі питання. Є два ступені — художник-початківець і професійний художник. Як оцінити початківця, зрозуміло. Набагато складніше ранжувати між собою професійних художників. Починається вже деяка смаківщина, критерії можуть ставати погано вербалізованими. Але потім несподівано виявляється, що дійсно топових художників усі уявляють собі приблизно однаково. Навіть якщо у сліпих тестах показуватимуть картини великого художника та картини його учнів, то люди набагато частіше вибиратимуть картини майстра. Мені здається, із програмістами також — складно вербалізувати, проте внутрішня ієрархія завжди вибудовується.
Степан stepancheg КольцовПрограмує 11 років. В Яндексі - 8 років.
Керівник групи розробки моніторингу у пошуку. Степа з тих співробітників Яндекса, які йшли, але потім поверталися. Один із тих, хто пропагує Rust в Яндексі і не тільки.

Роботу будь-якої людини треба оцінювати за результатами. Якщо людина вирішилапоставлене перед ним завдання він молодець, якщо не вирішив — не молодець. Але бувають різні завдання. Є ті, в яких можна все зробити абияк — аби працювало. Тоді нікому не має значення, наскільки криво і як це зроблено. А бувають проекти, які дуже довго мешкають — роки. І там дуже важливо, щоб після людини залишався якісний код, щоб він міг передати його іншому.
Олександр Садовський СадовськийПрограмує 27 років. В Яндексі - 11 років.

Це дуже цікаве питання, бо програміст — це, з одного боку, начебто професія інтелектуальної праці, а з іншого, вона місцями перетворилася на ремесло. Є елементи програмування, які масштабуються, де досить легко передаються знання одного програміста до іншого. І оцінювати тут треба по-різному. Там, де програмування перетворилося на ремесло, де це стало менш зрозумілим автоматизованим процесом, можуть бути введені поняття, як у фізичній праці — нормативи, вироблення. Класика жанру - створення корпоративних сайтів, які більш-менш однакові створюють сотнями. А в інтелектуальній частині слід оцінювати складність завдання. Швидше за все це можна зробити шляхом розмови з самим програмістом, з його колегами, з тим, хто розуміє суть роботи. І рішення про оцінку в такому разі досить складне, засноване на здоровому глузді. Його не можна прийняти механічно. І у нас, на щастя, цього інтелектуальнішого типу роботи дуже багато, чому й цікава робота в Яндексі.
Михайло ПарахінПрограмує 25 років. В Яндексі - 1 рік.
Після закінчення МІФІ почав працювати у ЗАТ НТЦ «Модуль». У 90-х це було майже єдине місце у Москві, де займалися системами автоматичного навчання. Потім пішов у компаніюParascript, яка фактично є монополістом у галузі розпізнавання рукописного та друкованого тексту. Довгі роки працював у США. Останні сім років — у Microsoft, п'ять із яких очолював у Bing підрозділ мультимедійних пошукових сервісів. Навесні прийшов до Яндекса директором з пошукових технологій.

Це складне питання, і, гадаю, ніхто не знає відповіді на нього. Але найкраще, що ми зараз вигадали, це запитати тих, хто багато працює з людиною. Зазвичай люди навколо, які читають його код, спілкуються з ним, дивляться, як він працює, досить добре уявляють, хто хороший, а хто поганий програміст. У системі ревью, яку ми зараз створюємо, наголос у значній мірі зроблений на опитування таких людей. А об'єктивно оцінити, звичайно, є багато методів та спроб, але я не знаю, як насправді зробити це точно.
Михайло mlevin ЛевінПрограмує 19 років. В Яндексі - 5 років.
Дуже більша частина діяльності – робота у наших академічних програмах. Він викладає у Школі аналізу даних, бере участь у створенні програми навчання на факультеті Computer Science Вишки та Яндекса. Двічі здобував медалі на ACM ICPC у складі команди МДУ ім. М.В. Ломоносова.

Оцінювати роботу будь-якого співробітника слід за результатом. За результатом як у бізнесі, так і, якщо його робота безпосередньо на бізнес не впливає, у створенні інструментів, інфраструктури, внутрішніх речах, у тому числі відносинах з колегами. Це цілий комплекс. Програмісти у цьому сенсі нічим не відрізняються від решти. Єдина, мабуть, відмінність у тому, що в нашій компанії, у багатьох IT-компаніях, вони ті, хто створює продукт. Тому про їхню роботу можна судити з того, наскільки продукт хороший, наскільки він успішний.настільки і їхня робота хороша. Звичайно, вони не єдині, хто поділяє цю відповідальність. Є ті, хто вирішує, що взагалі потрібно робити у продукті. Вони відповідають за те, як. Хороший програміст, звичайно, ставить питання, а навіщо робити саме це і відмовляється від завдань, які поставлені просто зі стелі
Андрій МіщенкоПрограмує 25 років. В Яндексі - 10 років.
Прийшов у Яндекс розробником на C + +, довго був керівником розробки Пошуку по блогах і писав на Perl. Андрій – кандидат фізико-математичних наук. Зараз працює над покращенням алгоритмів машинного навчання у пошуку.

На кожному рівні свої вимоги. Якщо програміст — стажист, то його потрібно оцінювати в основному по тому, як у нього очі горять, наскільки йому хочеться все це вчити, як він уміє змусити себе не нудьгувати, знайти ті завдання, які йому будуть цікаві. Коли людина вже починає зростати, важливіше, звичайно ж, наскільки у неї віддача велика, наскільки вона робить завдання швидко, наскільки рішення виходять якісні та їх не доводиться переробляти потім. Якщо ще вище піти і говорити про архітектора, то вже, природно, його роботу потрібно оцінювати не тому, як швидко він щось написав, а через те, скільки через рік довелося змін до цієї архітектури вносити, і наскільки вона дивилася в майбутнє далеко .
Сергій svv ВавиновПрограмує 28 років. В Яндексі - 6 років.
Прийшов у Яндекс розробником в Яндекс.Відео. Був головним у розробці Музики, потім у службі медіасервісів. Зробив кілька проектів для Яндекс.Діска. Зараз керівник групи технологій роботи з великими даними. Одне із завдань, над яким працює Сергій, — проекти Яндекса для ЦЕРНу.

Тут є кілька факторів. Простийвідповідь, це, звісно, оцінити за результатом. Людина витратила стільки часу, вирішила чи не вирішила завдання. Але це лише одна сторона. Код, який він написав, слід підтримувати. Потрібно, щоб підтримувалися певні стандарти, він проходив ревью, щоб були єдині правила того, як ведеться розробка, щоб колеги перевіряли один одного та оцінювали код з погляду того, наскільки він годиться для довгострокової роботи над проектом.
Григорій bobuk БакуновПрограмує 26 років. В Яндексі - 10 років.
Колись прийшов працювати системним адміністратором, а зараз — директор із розповсюдження технологій.

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