Skip to content

Instantly share code, notes, and snippets.

@rela589n
Last active September 14, 2020 10:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rela589n/1c59ca242ad60c1676e83cca031a512f to your computer and use it in GitHub Desktop.
Save rela589n/1c59ca242ad60c1676e83cca031a512f to your computer and use it in GitHub Desktop.
lecture.md

Роль командної роботи в створенні програмного забезпечення. Загальна характеристика команди розробників ПЗ. Класифікація команд

(1) Роль командної роботи в створенні програмного забезпечення

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

Основні відмінності між командою і групою показано в таблиці 1.

              Група                     Команда 
  1. Ціль:
  • Група: Ставиться вузька задача, загальні цілі не виясняються
  • Команда: Чіткі, зрозумілі всім цілі і стратегія їх досягення
  1. Участь в роботі
  • Група: Виконання посадових інструкцій і розпоряджень
  • Команда: Активна позиція, спрямованість на результат, особиста відповідальність
  1. Рольова структура
  • Група: Строгий розподіл ролей, посад, обов’язків
  • Команда: Розподіл компетенцій, гнучка структура, ротація ролей
  1. Керівництво
  • Група: Адміністрування, наявність формального лідера-начальника
  • Команда: Лідерство на основі компетентності і довіри, наставництво, допомога і підтримка
  1. Прийняття рішень
  • Група: В основному накази, і рішення ухвалені більшістю
  • Команда: Ефективні процедури ухвалення рішень на основі довіри і взаємної вигоди
  1. Конфлікти
  • Група: Замовчування, приховування, ігнорування
  • Команда: Визнання, інтелектуальна конкуренція, ефективне вирішення: «ми з одного боку барикади, а проблема — з іншого»
  1. Взаємодія
  • Група: Закритість, уникнення критики, принцип «не висовуватися»
  • Команда: Довіра, свобода, ініціативність
  1. Комунікація
  • Група: Через формального лідера службова переписка
  • Команда: Відкритість, впевненість один в одному і взаємна повага
  1. Творчість
  • Група: Стереотипність, робота за правилами та інструкціями
  • Команда: Гнучкість і адаптивність, безперервне вдосконалення і ріст компетенцій, розкриття творчого потенціалу кожного

(2) Загальна характеристика команди розробників ПЗ. У сфері розробки ПЗ Команда – це група взаємозалежних осіб, які працюють спільно шляхом розподілу між собою як робочих операції, так і відповідальності за отримання результатів.

Команда – це група людей, що мають спільні цілі, взаємодоповнюючі навики та уміння, високий рівень взаємозалежності (+взаємозамінності) та розділяють відповідальність (+ ризики + успіхи) за досягнення кінцевих результатів. Головною відмінністю команди від робочої групи є наявність синергетичного ефекту, який полягає у зростанні ефективності діяльності в результаті об’єднання зусиль.

У процесі формування команди важливим питанням є чисельність команди. Вважається, що для невеликих та середніх проектів команда розробників повинна складатися хоча б з п'яти людей, а максимальна кількість членів команди - дванадцять. "7±2" є магічним числом та ідеальною чисельністю команди.

У випадку якщо команда складається з понад 12 людей, рано чи пізно природним чином така команда поділиться на "неформальні групи за інтересами", представляючи в загальному вигляді розрізнений і неконсолідований колектив.

Склад команди є найважливішою передумовою високої продуктивності, тому при підборі персоналу потрібно враховувати три основні чинники:

  1. професійна кваліфікація: професійні вимоги залежать від конкретних завдань тієї або іншої команди, тому до початку формування команди слід скласти список вимог, пов'язаних з конкретним завданням;
  2. особові характеристики;
  3. здатність працювати в команді: це може бути як передумовою, так і результатом розвитку команди. Без базової здатності співпраці з іншими членами команди, орієнтації на результат, нічого не вийде. Отже, при формуванні команди вимога до здатності працювати в ній висувається в першу чергу. Необхідно визначити чи хоче і чи може кандидат працювати в команді, і в якій степені.

(3) Класифікація команд

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

За рівнем ефективності взаємодії членів команди:

  • робоча група - це група, у якої немає потреби в підвищенні ефективності сумісної праці. Члени групи взаємодіють між собою перш за все для того, щоб обмінятися інформацією, досвідом роботи або для визначення перспективи і ухвалення рішень, щоб допомогти кожному працювати в межах його області відповідальності. У таких групах немає загальної мети і взаємної відповідальності. На відміну від команд робочі групи не ставлять за мету колективне виробництво продукту, що вимагає об'єднаних зусиль;

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

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

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

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

Ознаки ефективної та неефективної команди. Поняття ефективності програміста в команді

Ознаки ефективної команди:

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

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

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

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

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

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

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

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

  9. При виконанні дій робляться і приймаються чіткі призначення.

  10. Керівники групи не домінують в ній, як і група не покладається на них надмірно. Фактично час від часу керівництво міняється залежно від обставин. Різні члени групи, відповідно до їх знань або досвіду, розглядаються як лідерський «ресурс» і виконують лідерські ролі, поки це потрібно. Коли група працює, ніхто не займається боротьбою за владу. Для групи важливо не хто контролює, а як робота здійснюється.

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

Ознаки неефективної команди:

  1. Байдужість, нудьга, напруга. Група не усвідомлює свої завдання і не залучена в процес роботи.
  2. Декілька чоловік домінує в процесі дискусії. Часто тільки вони визначають точку зору групи.
  3. З слів важко зрозуміти, в чому полягає групове завдання або які цілі.
  4. Люди реально не слухають один одного. Ідеї ігноруються або відкидаються.
  5. Бесіда з учасниками після зборів показує, що вони бояться виражати свої ідеї або відчуття із-за страху критики або звинувачення їх в дурості.
  6. Незгода загалом не має відношення до ефективності групи. Вона може ховатися або пригнічуватися, з одного боку, керівником, що боїться конфліктів, з іншого боку, домінуванням однієї підгрупи над іншою, що виникло в ході відкритого зіткнення.
  7. Рішення може бути результатом «тиранії меншин», коли людина або невелика підгрупа поводяться так агресивно, що більшість погоджується з їх бажаннями, щоб зберегти мир або виконати завдання.
  8. Дії часто виконуються передчасно, до того як результат проходить перевірку і ухвалюється рішення. Після зборів залишається багато незадоволених людей, незгодних з рішенням, але що побоялися виступити відкрито на зборах.
  9. Як виконувати рішення, людям не ясно. Ніхто реально не знає, хто, що збирається робити.
  10. Керівництво залишається постійним. Керівник може бути сильним або слабким, але завжди «сидить на чолі столу».
  11. Критика присутня, але вона все утрудняє, заплутує, викликає напругу. Люди часто починають відчувати особисту ворожість, відчувають дискомфорт і не в змозі з цим справитися.
  12. Особисті відчуття ховаються. В цілому група демонструє, що відчуття - це щось неважливе і дуже небезпечне для обговорення.
  13. Група уникає будь-яких дискусій про її власний «зміст».

Поняття ефективності програміста в команді: Фактори незрілості та неефективності співробітника:

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

Типові хибні судження неефективного програміста:

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

Інститут програмної інженерії SEI розробив індивідуальний процес розробки ПЗ PSP, в якому детально описано методи планування, оцінки та рекомендації розробникам, як вимірювати власну продуктивність та як застосовувати описані методи на практиці. Ефективний програміст, згідно PSP, повинен володіти такими професійними навиками:

  • вміти оцінити час на виконання проекту;
  • вміти враховувати знайдені дефекти;
  • вміти класифікувати типи дефекті;
  • вміти оцінювати обсяг завдання;
  • освоїти систематичний підхід до опису результатів тестування;
  • планувати програмні завдання;
  • складати графік роботи;
  • здійснювати індивідуальну перевірку архітектури;
  • здійснювати індивідуальну перевірку програмного коду.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment