Як ти допомагаєш своїм колегам-програмістам рости?


20

Як керівник команди, як ви можете допомогти своїм програмістам рости?

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

Але я не зовсім знаю, як це зробити, чи потрібно це робити

  1. Часто спілкуєтесь з ними або приділяйте їм спокійний час, залишайте їх непорушеними?
  2. Попросіть їх дотримуватися вказівок кодування, таких як примусове виконання тестів одиниць, стилів кодування чи дозвольте їм робити все, що вони вважають за потрібне?
  3. Будьте поблажливі з ними. Такі, як насправді не цікавить, чи дійсно вони приходять на посаду протягом 8 годин чи 4 години, чи потрібно виконувати деякі "дисципліни" на робочому місці?

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

Що ти думаєш?


21
Годуйте їх пончиками.
SK-логіка

1
Кожен програміст працює по-різному. Ви дійсно повинні розповісти нам більше про те, чого вони хочуть досягти. Якщо ви це знаєте, все, що вам потрібно зробити, - це запропонувати їм необхідні інструменти, поговорити про те, над чим вони працюють, для інших команд та закликати всіх допомагати один одному. Це вірно, навіть якщо ціль вашої команди вже визначена, оскільки навіть у такому випадку вони зберігають свободу того, як вони досягнуть цієї мети. З іншого боку, Scrum не грає добре з такою поведінкою.
Thaddee Tyl

@ SK-логіка: навколо, де я працюю, піца - це сприятливий метод.
Дональні стипендіати

Відповіді:


9

Це дуже тонка лінія, яку ви повинні пройти.

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

З іншого боку, вибір процесу за вами. У цих рішеннях нехай команда керує вами, але в кінцевому підсумку вам потрібно їх приймати. Принаймні спочатку.

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

І якщо вам вдасться витягнути команду з Хаосу в Midlife, змінити свою поведінку в цей момент, інакше вони не рухатимуться далі (це останнє з особистого досвіду).


6

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

Розробники ІМХО за звичайних обставин мають природний потяг до навчання (якщо тільки їх не спалили або не зазнали попереднього поганого досвіду роботи). Отже, все, що вам потрібно зробити, - це зрозуміти, що і як вони хотіли б навчитися, і забезпечити їм інструменти та час для цього (звичайно, в розумних межах).

Наприклад, у нашій команді ми можемо вільно визначати навчальні завдання для себе, якщо вони так чи інакше (прямо чи опосередковано) пов'язані з проектом. Зазвичай ці завдання - від декількох годин до одного дня за спринт (хоча не в кожному спринті). (Недавній приклад. У мене з’явилося завдання вивчити та експериментувати зі Scala, прийнятим, виходячи з того, що це - і функціональний підхід в цілому - може допомогти спростити складну частину нашого Java-коду.) Потім вони стають пріоритетними і плануються в Спринт, як і звичайні завдання. Також заохочується та очікується проведення демонстрацій / лекцій про те, що ми дізналися, для передачі знань іншим членам команди (і, можливо, навіть розробникам у різних командах).

Попросіть їх дотримуватися вказівок кодування, таких як примусове виконання тестів одиниць, стилів кодування чи дозвольте їм робити все, що вони вважають за потрібне?

Працюючи в команді, обов’язково слід дотримуватися того самого процесу розвитку. Звичайно, цей процес повинен бути найпростішим, що могло б працювати, а не тим, що описано в посібнику на 600 сторінок. І процес повинен визначатися і постійно адаптуватися до ситуації самим колективом . Тож якщо команда погодилася на стандарт кодування та TDD, вони повинні дотримуватися цього.

Будьте поблажливі з ними. Такі, як насправді не цікавить, чи дійсно вони приходять на посаду протягом 8 годин чи 4 години, чи потрібно виконувати деякі "дисципліни" на робочому місці?

Якщо ви не знаєте розробника, нормально уважніше слідкувати за тим, що він робить, її доставку, робочий ритм тощо. Також добре перевірити її код (або ви самі, або досвідчена та довірена команда член). Як тільки вона заслужила довіру, вона може поступово отримати більше свободи. Але цю довіру потрібно заслужити спочатку. Щодо робочого часу, на мій досвід, гнучкі години чудово досягають обмеження, тобто добре мати загальний узгоджений мінімум, як щодня між 11:00 та 14:00, коли розробники (як правило) знаходять їх робоче місце, щоб вони можна звернутися з питаннями або запросити на зустрічі. Але крім цього, немає сенсу бути суворим.


3

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

Однак ви хочете допомогти їм рости, що є чудовим атрибутом лідера.

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

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

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

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

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

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

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

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

Залежно від того, як розраховується час ваших розробників (це складніше в ситуації з оплатою клієнтів), розробникам зазвичай варто мати 4-8 годин на тиждень для роботи над особистими проектами. Вони будуть раді цього зробити. Найкращі люди захочуть працювати там, і вони навчаться багато, що стане корисним у майбутньому. Лічильникам квасолі важко зрозуміти необхідність цього, але цей час буде окуплено багато разів за задоволення співробітників, нові функції або програмне забезпечення, яке нікому не потрібно (або яке допоможе автоматизувати частину вихованості) та швидший розвиток завдяки засвоєні нові методики. Деякі розробники використовуватимуть цей час строго для особистих проектів, не пов’язаних із тим, що ви робите (і це добре, вони все одно набуватимуть навичок та будуть раді за можливість), але багато інших будуть використовувати його для вирішення стійких проблем, які, в силу характеру управління проектами, ndbody встигли заздалегідь виправити. Таким чином, ви можете отримати рефактори, які приносять користь усім; деякі люди можуть написати тести, щоб поліпшити охоплення тесту, щоб зробити його простіше; деякі інші можуть вивчити деякі нові функції, які можуть зробити ваше програмне забезпечення кориснішим для своїх клієнтів. Взагалі, якщо ви зможете переконати лічильники бобів, втратити немає можливості, дозволивши їм цю свободу.

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

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


1
+1 про те, щоб зробити різницю між тим, як робити хорошу роботу як керівник команди та допомагати команді зростати. Єдине, що я хотів би додати, це переконатися, що кожен член має можливості взаємодіяти з іншими професіоналами зовні організації. Це можна зробити за допомогою семінарів або конференцій або інших зустрічей. Керівник команди, можливо, не зможе безпосередньо зробити це, але вони, безумовно, можуть вплинути на того, хто має сили це дозволити.
Анджело

2
  1. Дайте своїй команді складну роботу та інструменти для їх вирішення. Навіть якщо ви бачите свою роботу як щоденну, тому що ви просто підтримуєте застарілу систему, підштовхніть усіх до її покращення.
  2. Ваша команда повинна розробити стандарти кодування. Ваше завдання - допомогти їм у дотриманні та адаптації стандартів.
  3. Попрацюйте зі своєю командою, щоб розробити систему оцінювання. Ваше завдання - допомогти координувати ці зусилля з командою та забезпечити виконання. Зовнішні сили вчасно очікують коду якості, і вони не завжди мають розумний характер або не надають логіки для своїх запитів. Ви не можете уникнути цього, але вам доведеться керувати обома сторонами. Після того, як ваша команда створить собі репутацію щодо виконання завдань, всі будуть більше сприймати ваші оцінки часу. Вони повинні знати, що ви їх підтримаєте, якщо вони докладуть зусиль.

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


1

Часто спілкуєтесь з ними або приділяйте їм спокійний час, залишайте їх непорушеними?

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

Попросіть їх дотримуватися вказівок кодування, таких як примусове виконання тестів одиниць, стилів кодування чи дозвольте їм робити все, що вони вважають за потрібне?

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

Будьте поблажливі з ними. Такі, як насправді не цікавить, чи дійсно вони приходять на посаду протягом 8 годин чи 4 години, чи потрібно виконувати деякі "дисципліни" на робочому місці?

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


5
"Приблизно один раз на кілька годин звучить потрібна частота" - я особисто би ненавиджу це, якби мій менеджер так часто клопотав мене ...
Péter Török

1
@ Péter Török Ось чому я сказав, що це грає на слух. Це правильний рівень для мене, але я впевнений, що багато людей воліють менше
Том Сквайрс

0

Пов’язані з трьома пунктами:

Часто спілкуєтесь з ними або приділяйте їм спокійний час, залишайте їх непорушеними?

Я скажу, що це дійсно залежить від типу людини, з якою ви працюєте. Деякі вважають за краще обговорювати у фіксований час кави (близько 10 ранку), а в іншому випадку працювати самотужки, безперешкодно. З ними (гаразд, я визнаю, я точно такий) я зазвичай надсилаю електронні листи (навіть коли вони поруч зі мною, наприклад, на відстані 2-3 метри), щоб ви могли залишити їх вибір, коли вони читатимуть вашу інформацію . І, до речі, не запитуйте їх, чи "вони отримали вашу пам'ятку" :-) І звичайно, деяким "потрібно" більше керівництва, більше взаємодії.

Попросіть їх дотримуватися вказівок кодування, таких як примусове виконання тестів одиниць, стилів кодування чи дозвольте їм робити все, що вони вважають за потрібне?

Що стосується наступних вказівок, то мені це досить зрозуміло. Якщо ви встановлюєте вказівки, пов'язані зі стилем кодування, завжди вкажіть тестовий випадок і т.д., тоді вам доведеться їх застосовувати, якщо ви провідний розробник. У проекті, яким ви керуєте, кожен розробник повинен дотримуватися ваших вказівок, не виняток, навіть для « суперзірок ».

Будьте поблажливі з ними. Такі, як насправді не цікавить, чи дійсно вони приходять на посаду протягом 8 годин чи 4 години, чи потрібно виконувати деякі "дисципліни" на робочому місці?

Якщо ви вже знаєте, як люди працюють і впевнені в собі, ніж вони не порушать вашу впевненість, можете розслабитися. Але я думаю, що для цього моменту визначене вами правило (або не правило) має стосуватися всіх. Важливим є те, що не повинно бути винятку. Наразі я дуже радий працювати менеджером проектів, який просто каже: "Ти робиш 40 робіт на тиждень, і робота виконана, це нормально". Таким чином, ви можете прийти пізно одного ранку, попрацювати лише 6 годин, а наступні два дні - по 9 годин. Не має значення "доки робота виконана". Мені подобається це правило.


0

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


0

Але я не зовсім знаю, як це зробити, чи потрібно це робити

  1. Часто спілкуєтесь з ними або приділяйте їм спокійний час, залишайте їх непорушеними?
  2. Попросіть їх дотримуватися вказівок кодування, таких як примусове виконання тестів одиниць, стилів кодування чи дозвольте їм робити все, що вони вважають за потрібне?
  3. Будьте поблажливі з ними. Такі, як насправді не цікавить, чи дійсно вони приходять на посаду протягом 8 годин чи 4 години, чи потрібно виконувати деякі "дисципліни" на робочому місці?

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

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


0

Ви запитуєте їх, як вони воліли б працювати.
Що вони хотіли б змінити тощо.

Не всі відразу. Просто ... як з’являються речі.
Будьте природними. (або вони будуть пахнути страхом)

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

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

Встановіть демократичний процес , проголосуйте справи, обговоріть питання.

Як і кожен президент там, ви дотримуєтеся остаточного слова: вето .
Решта - до групи.


0

Один із способів допомогти вашим людям рости - це дозволити їм робити те, що вони роблять найкраще.

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

Завдяки «гнучкому часу» ви можете дозволити собі більше свободи для своїх більш продуктивних працівників. Поки вони отримують роботу, я б менше хвилювався про їхні години. Деякі люди приходять, ставлять за 5–6 годин «без зупинки» і досягають більше, ніж інші, які ставлять за 10 годин з уповільненим темпом.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.