"Копаючи картоплю, ви час від часу викопуєте ту, яку садив ще ваш батько і дід. Це legacy-код". Пояснюємо ІТ-терміни на прикладі садіння картоплі
[Олександр Краковецький — CEO компанії DevRain, співзасновник «ДонорUA», Microsoft Regional Director, Microsoft AI Most Valuable Professional, кандидат технічних наук]
Значення терміна «інкапсуляція» я зрозумів лише на третьому році роботи розробником програмного забезпечення, на технічному інтерв’ю в одній з компаній. Точніше, я знав, що таке інкапсуляція і навіть її використовував. Однак просто пояснити, що означає цей термін (так, щоб зрозуміла шестирічна дитина, як казав Айнштайн), не міг. Навчання в аспірантурі допомогло прокачати досить екзотичний скіл — пояснювати складні речі простими словами. Так народилась ідея серії жартівливих публікацій, які були зібрані в єдину статтю, якою я ділюсь із читачами ДОУ.
Про розробку програмного забезпечення
Ілюстрації Аліни Самолюк
Припустімо, є завдання — посадити на городі картоплю. Звісно, у вас є багато опцій, як це зробити.
Ви можете знайти людину з трактором, яка приїде і посадить вам картоплю, а також людину, яка буде стежити, щоб людина з трактором правильно посадила картоплю. Вони приїжджають зі своєю картоплею. Це аутсорсинг (outsourcing).
Ви можете знайти людину, яка на вашому тракторі посадить вам вашу картоплю. Це аутстафінг (outstaffing).
Ви можете знайти людину, яка прийде і зробить заміри городу, запропонує декілька моделей тракторів і режиму роботи тракториста. У цьому випадку картопля посаджена не буде, але ви будете знати найкращий спосіб, як це зробити. Це R&D, або науково-дослідний інститут.
Ви можете покликати сусіда Колю, щоб він посадив вам картоплю за пляшку самогону і дві пачки цигарок. Це фриланс (freelance).
Ви можете покликати всіх своїх родичів, сусідів, друзів і разом посадити картоплю. Це краудсорсинг (crowdsourcing).
Ви можете пройтись по друзях, сусідах, родичах і розповісти про те, що ви — той, хто найкраще знає, як треба садити картоплю, але для цього потрібні гроші. Але ви обіцяєте, що як тільки картопля виросте, то обов’язково пригостите всіх, хто дав гроші, першими. Це краудфандинг (crowdfunding).
Ви можете взяти плуга, кілька відер, картоплю, книгу «Посадка картоплі за 21 день» і сам посадити картоплю. Правда, якщо вам потрібно буде посадити інший сорт картоплі, аніж той, про який йдеться в книзі, то доведеться перекопувати весь город ще раз. Ризик: може прийти сусід вночі й викопати вашу закопану картоплю. Це розробка на WordPress.
Ви можете взяти лопату і посадити картоплю на городі, де вже є добриво, накопані ямки й стоять стрілки, за якими зрозуміло, в якій послідовності потрібно садити картоплю. Це розробка на .NET/C#.
Ви можете спочатку зробити лопату, сконструювати відра, вивчити склад ґрунту, після чого порахувати кількість ямок і послідовно одну за одною заповнювати картоплею. Не пропускаючи жодної ямки. Це розробка на C++.
Ви можете прийти до голови радгоспу і сказати йому, що чудово знаєте, як садити картоплю, проте цього року ви її садити не будете, але 100% займетесь цим наступного року. І це буде реально круто, а врожай буде в 10 разів більший за урожай сусіда. Тому вам потрібні зараз гроші, лопати, трактор, тракторист (краще два), п’ять копачів і секретарка. Це стартап.
Ваш прадід садив картоплю, ваш дід садив картоплю, ваш батько садив картоплю. І ви теж продовжуєте садити картоплю. Це підтримка продукту (support).
Копаючи картоплю, ви час від часу викопуєте ту, яку садив ще ваш батько і дід. Це legacy-код.
О 8 годині ранку ви зі своїм другом, батьком і сусідом збираєтесь на городі, щоб обговорити прогрес у садінні картоплі. Ви розповідаєте всім присутнім про те, що вчора садили картоплю, сьогодні теж будете садити картоплю і що у вас немає жодних проблем, які заважають садити картоплю, крім комарів, які постійно кусають вас. Але це не вплине на якість і швидкість садіння картоплі та майбутній урожай. Після цього всі беруть лопати і продовжують садити картоплю. Це scrum-мітинг.
Ви посадили картоплю. За деякий час вона стала проростати. І на вашій картоплі з’явилися колорадські жуки. Ви починаєте їх труїти, збирати вручну, давити і палити. Більшість з них вдається знищити, але скоро вони де-не-де з’являються знову. Це відладка (debugging) коду і виправлення помилок (bug fixing).
Ви посадили картоплю. На город прийшов ваш батько і сказав, що картопля посаджена неправильно, бо рядки криві і ви забули залишити місце для буряків. І тому вам треба пересадити частину картоплі. Через два дні, коли ви закінчуєте роботу, приходить ваш дід і каже, що глибина, на якій ви закопали картоплю, недостатня, тому вам потрібно перемістити всю картоплю в лунках на 5 см нижче. А сам йде пити пиво з сусідом Колею і вашим батьком. Це керівник команди (Team Lead), проджект-менеджер (Project Manager) і рефакторинг (refactoring).
Ви хочете трохи підзаробити. Йдете до сусіда Колі й кажете, що хочете допомогти йому садити картоплю. Сусід просить вас показати найбільшу картоплю, яку ви торік виростили, а також назвати імена інших сусідів, яким ви вже садили картоплю. Сусід також питає, чому ви прийшли саме до нього садити картоплю, на що маєте відповісти, що все життя мріяли садити картоплю лише на його городі. Потім вас попросять пояснити різницю між граблями і садовими ножицями, розповісти про найкращі граблі, з якими доводилось працювати, а також пояснити процес заготівлі сіна та чистки колодязя. І лише після того, як мати сусіда підтвердить, що «це ж Ольчин малий — тої, що хата на краю села», вам видадуть найгіршу лопату і ви почнете садити картоплю. Це інтерв’ю в аутсорсингову компанію.
Ви приходите до сусіда Колі та набираєте в його погребі картоплю, щоб посадити у себе на городі. Обіцяєте, що коли ваша картопля виросте, то частину повернете назад або допоможете наступного року її посадити. Ви, звісно, нічого не робите і за рік знову йдете до сусіда, щоб взяти в нього трохи картоплі. Це програмне забезпечення з відкритим програмним кодом (open source).
Біля вашого села є велике поле, де люди з навколишніх сіл викидають свою картоплю, а іноді й інші овочі. Хтось викидає гнилу картоплю, а хтось — гарну. Тому ви ухвалюєте рішення не садити свою картоплю, а замість цього періодично навідуєтесь на поле, щоб назбирати картоплю там. Це Stack Overflow.
Ви просто хочете посадити картоплю наодинці. Але на городі чомусь зібралась сотня незнайомих вам людей. Вони не допомагають садити картоплю, але уважно спостерігають за процесом. Після того, як ви закопуєте картоплю в лунку, всі починають записувати в блокнот кількість посаджених лунок, рядків і картоплі, яка залишилась у світі. Потім обмінюються своїми блокнотами й біжать до вашого сусіда, який теж саджає картоплю. Ніхто зі спостерігачів не вірить, що ви щойно посадили картоплю, доки всі не перепишуть інформацію з інших блокнотів. Це блокчейн (blockchain).
Ви друкуєте на принтері 1000 світлин з картоплею. Кожну продаєте своєму сусіду за гривню, розповідаючи, що садити реальну картоплю — то минуле століття і вже дуже скоро ця реальна картопля нікому не буде потрібна, а всі будуть їсти світлини картоплі. А оскільки надрукувати нові світлини в майбутньому буде неможливо, то ці світлини зростатимуть у ціні. Оскільки реальна картопля є у всіх, а світлин немає ні в кого, то сусіди з радістю купують світлини. Але на вечерю все ще варять реальну картоплю. В цей час у сусідньому селі інші люди продають інші світлини картоплі й розповідають, що лише ці фотки будуть відомими за 10 років. Це біткоїн (bitcoin).
У вас є 10 га засадженої картоплі. Ви починаєте її викопувати. Але вас цікавить не вся картопля, а лише квадратної форми, зеленого кольору і така, що схожа на Мікі Мауса. Після того, як викопали всю картоплю на всіх 10 га, ви забираєте знайдених десять картоплин, що відповідають вашим критеріям, і щасливі йдете додому. Це Data Mining, або пошук знань у великих масивах даних.
Ви живете в селі, де вже 20 років ніхто не садив картоплі. Але ви впевнені, що десь вона є. Тому берете лопату і починаєте перекопувати все підряд — городи, стежки, поля, лісопосадки й навіть озера. Через деякий час наполегливої праці вам таки щастить і ви знаходите картоплину. Невдовзі вже все село починає шукати картоплю, перекопуючи все підряд. Це майнинг криптовалют (cryptocoin mining).
Картопля багато може розповісти про того, хто її виростив. Зокрема, чи хороший та сумлінний хазяїн її виростив, чим удобрював землю, якими інструментами користувався, чи виростив він її сам, чи, може, просто вкрав у сусіда, а ще чи гарна у нього ґаздиня (дружина).
На краю села є місце, куди всі селяни мають відправляти зразки своєї картоплі, щоб всі охочі могли оцінити їхню працю.
Але з часом це місце перетворилось на сміттєзвалище. Хтось картоплю взагалі відмовився нести, хтось приніс гнилу, а хтось почав розповідати, що картопля у нього є, але показати він її не може. Деякі селяни встановили охорону і почали брати гроші з усіх тих, хто хоче подивитись на їхню картоплю.
З часом, щоб знайти картоплю конкретного селянина, потрібно перебрати гори сміття. Це відкриті дані (open data) і data.gov.ua.
Ви накопали багато картоплі. До вас приїхав голова колгоспу і видав документ, де написано, скільки картоплі ви накопали. Але щоб прочитати цей документ, вам потрібно їхати до голови колгоспу, бо тільки він єдиний в селі вміє читати. Інші сусіди можуть бачити документ, але ніхто не розуміє, що там написано. Це хешування (hashing, hash function).
У вас є інструкція, як правильно саджати картоплю. В ній описано, як викопувати лунку, якої глибини вона має бути, яким боком класти туди картоплю. Ви починаєте саджати її. Після кожної закопаної картоплини ваш батько перевіряє, чи виконані всі інструкції правильно. І якщо хоча б одна інструкція порушена, вам потрібно викопати картоплину, засипати лунку і почати процес заново. Це test-driven development, або TDD.
Ви купили ділянку, виорали та удобрили город, купили лопати, відра, картоплю і протягом тижня її посадили. Дід з бабою доглядають город, борються з колорадськими жуками, знищують бур’яни. А в кінці літа самостійно викопують картоплю і несуть до погреба. Це on-prem, або наземна інфраструктура. А дід з бабою — системні адміністратори.
Якось до баби з дідом приїхав внучок з міста і запропонував частину городу засадити картоплею, а якщо не вистачить, то купити й привезти з магазину. Це гібридна інфраструктура (hybryd).
Через кілька років, коли вартість палива збільшилась, у діда знайшли грижу, а колорадські жуки з’їли третину врожаю, внучок переконав бабу з дідом відмовитись від свого городу, і всю картоплю почати купувати в магазині. Це хмарна інфраструктура (cloud). А внучок — DevOps.
Якось сусід, що жив через дорогу, запропонував бабі з дідом, що буде сам купувати картоплю в магазині й приносити їм за пляшку самогону. Баба і дід погодились. Це модель підписки (subscription model).
Ідея сподобалась й іншим жителям, і сусід почав возити картоплю всім охочим. Це системи доставки типу Zakaz.ua.
Приїхав якось до баби з дідом їхній наймолодший внучок, який тільки школу закінчив і хотів навчитись садити картоплю. Про те, як росте картопля, внучок знав лише з уроків біології в 6 класі, чим дуже пишався. Це вайтішнік, а уроки біології — онлайн-курси типу Coursera чи Prometeus.
Внучок взяв лопату і почав копати ямки на городі, не порадившись з дідом і бабою. Йшов грудень. Це Junior Developer.
Дід забрав лопату у внучка і почав показувати, де наступного року будуть садити картоплю, де будуть бурячки, а де — кукурудза, показав погріб, де лежить картопля, і навіть намалював схему городу. Це процес створення архітектури програмного забезпечення.
Намалювавши схему городу, дід сказав, що садити будуть не раніше як першого травня, а закінчити треба до п’ятого. І обвів цю дату в настінному календарі. Це планування задач і створення діаграми Ґанта. 5 травня — це дедлайн.
— А можна ми спочатку посадимо бурячки, а потім картоплю, а якщо залишиться місце, то кавунчики? — запитав внучок діда. Це гнучка модель розробки програмного забезпечення на кшталт Scrum.
— Ні, внучку. Треба все садити за планом. Ніякої самодіяльності! — прокричав дід. Це модель розробки «водоспад», або «каскадна модель» (waterfall).
4 травня пів городу ще не було засаджено. Тому дід покликав бабу, сусіда, іншого внучка, і всі разом активно почали садити картоплю. Це Kanban.
Про штучний інтелект і машинне навчання
Ваші сусіди копають картоплю. Хтось уже заніс викопану картоплю в погріб, а хтось викопав, але ще не зібрав. І вона так і лежить на городі. А хтось ще навіть не починав, і його картопля досі в землі.
Ваша задача — зібрати точну копію всієї картоплі в своєму погребі, навіть тієї, яка ще не викопана. Крім того, важливо підписати кожну картоплину — хто її виростив, на якому конкретно городі її зібрали, якого вона сорту.
До того ж вам треба це зробити так, щоб ніхто із сусідів не дізнався, що ви створили точну копію їхньої картоплі й зберігаєте її у своєму погребі. Це скрепінг (data scraping) або парсинг даних (data parsing).
Ви приходите на город, а там роботи саджають картоплю. Оптимальний розмір картопин, глибина лунок і швидкість посадки розраховується в реальному часі на базі таких показників, як швидкість вітру, вологість, температура, вартість картоплі на світовому ринку і акцій Kartoplya Inc. на Нью-Йоркській біржі. Це штучний інтелект (Artificial Intelligence).
Вам потрібно посадити картоплю, але ніхто у вашій сім’ї не вміє це робити. Тому ви йдете до сусіда і дивитесь, як він садить картоплю. Через деякий час всі садять картоплю як ваш сусід. Це машинне навчання (Machine Learning).
Ви викопали всю картоплю і зсипали її на одну купу. Після чого починаєте її сортувати на велику, середню та маленьку. Це класифікація.
У процесі сортування виявилось, що маленьку картоплю потрібно додатково ділити на маленьку і дуже маленьку, а також окремо розкладати за сортами. Це кластеризація з невідомою кількістю кластерів.
Ви берете картоплю і не знаєте, вона велика чи середня. Це нечітка класифікація (fuzzy classification).
Ви берете картоплю і розумієте, що це картопля. Ви берете іншу картоплю і розумієте, що це картопля. Ви берете огірок і розумієте, що це огірок. Ви берете буряк і розумієте, що це буряк. Це розпізнавання образів (image recognition).
Ви берете картоплю і розумієте, що це картопля. Ви берете іншу картоплю і розумієте, що це картопля. Ви берете огірок і розумієте, що це не картопля. Ви берете буряк і розумієте, що це не картопля. Це бінарна класифікація.
У вас величезний город, що засаджений картоплею, але ви не пам’ятаєте, де який сорт садили. Тому починаєте викопувати по кілька кущів картоплі з різних боків. Викопавши їх, ви згадуєте, де що посаджено. Це summarization.
Ви садите картоплю, і раптом виявляється, що її не вистачає. Тому починаєте різати картоплю навпіл і кидати в лунки лише половинки. Це розбалансований набір даних (imbalanced dataset) і алгоритм SMOTE.
Ви садите картоплю і бачите, що багато картоплин — гнилі. Тому викидаєте їх на смітник. Це процес очищення даних.
Ви садите картоплю, і раптом виявляється, що її бракує. Тато каже, що можна взяти трохи у родичів, що живуть у сусідньому селі. Але перед цим можна зайти до сусідів і спитати, чи є у них картопля, і якщо є, то до родичів у сусіднє село бігти не треба. Ваш дід також просить по дорозі купити йому сигарет. Вам потрібно повернутись до обіду з картоплею і сигаретами. Це завдання комівояжера.
Ви садите картоплю. Ваша бабця каже садити рідше. Ваш дід рекомендує робити навпаки. А мама взагалі каже, що треба посадити помідори. Крім того, мама каже, що лунки варто робити глибшими. Ви повинні правильно виконати всі настанови. Це розпізнавання та обробка природної мови (natural language processing).
У вас є цілий погріб з картоплею різних сортів. Вам потрібно вибрати сорт, який дасть найкращий врожай. Сусід, що проходив мимо, каже, що найкращий врожай дасть сорт А. Це просунена аналітика (advanced analytics).
— Наступного разу ми засадимо город на два дні раніше! — сказав дід після того, як город був засаджений. Це модель прогнозування (prediction model), що була побудована на історичних даних (historical data).
Щоб швидше посадити та викопати картоплю, замість лівої руки ви прироблюєте металеву руку з моторчиком. Продуктивність ваша значно зростає. Це трансгуманізм (H+).
Ви постійно садили картоплю під лопату. І всі ваші сусіди постійно садили картоплю під лопату. А потім ви почали садити картоплю за допомогою плуга. І всі ваші сусіди почали садити картоплю за допомогою плуга. А потім ви почали садити картоплю за допомогою трактора. І всі ваші сусіди почали садити картоплю за допомогою трактора. Це машинне навчання.
А потім приїхав Ілон Маск на гіперлупі й сказав, що більше садити картоплю не треба, бо він її буде садити на Марсі. Це сингулярність.
Ви садите картоплю. І тут приїжджає ваш далекий родич, який навчався в Кембриджі, й здивовано запитує вас, а для чого садити картоплю, якщо її можна купити в магазині. Це суперінтелект.
Про діджиталізацію та «державу в смартфоні»
Весь рік їздимо по селах та показуємо світлини майбутнього врожаю картоплі. Правда, при цьому демонструємо переважно естонську картоплю та сорти, привезені з Амстердама та Барселони. Потім виявляється, що саму картоплю, яку маємо скоро садити, ми не купили. А та, що була зібрана торік, вже згнила.
Щоб був хороший врожай картоплі, потрібно удобрити землю. Але добрива купити забули, а город віддали в оренду, де на ньому грають футбол.
Віддавати землю сусідам на обробку ми не хочемо, тому наш город так і стоїть — необроблений і в бур’янах.
Вчора їздили в сусіднє село і підписали меморандум про обмін досвідом про садіння картоплі. Правда, останні 10 років ми картоплю не садили і не сильно розуміємо, як це робити. Але вечорниці були класні. А, ще лісапед подарували!
Колорадські жуки повзають усюди — навіть у будинку, але сільський голова написав папірець, що колорадських жуків у селі немає. Папірець є, значить, жуків немає. Все чотко.
Вчора знову приїжджали поважні люди з міста, хотіли дати нам грошей на садіння картоплі, але просили не пропивати ці гроші й не віддавати сусідському діду Юхиму, який минулого разу забрав усе й не зізнається, куди подів. Коротше, послали цих «городських» назад, бо дід Юхим — то наш пацан і він краще знає, як садити картоплю.
Вирішили, що будемо вирощувати е-картоплю. Не ясно, як її їсти, але звучить круто!
Моя бабка любить швидкість. Тому купили їй комбайн. Я хз, як комбайном садити картоплю, але виглядає круто.
Будемо запрошувати молдован, щоб у нас в селі садили картоплю. Чекаємо зі своєю картоплею і тракторами. Ми можемо показати дорогу, як доїхати. Ну... як дорогу.
Поставив своїй бабці вайбер. А вона мені зробила смузі із самогону. Ще б газ провели — взагалі було б добре.
Тут у вайбері сказали, що зроблять електронні права. Що таке права?
Потрібно посадити картоплю. Покликав кума, який ніколи не садив картоплю. Але ж то кум, швидко навчиться!
Коли кум почав запрягати корову в плуг, я почав здогадуватись, що щось тут не так. Але кум сказав, що багато разів так робив. Ну кум знає, як робити. Хай робить!
Через тиждень перевірив роботу. Картопля не посаджена, а кум з дідом Юхимом п’ють самогон. Корова стоїть прив’язаною на городі до лісапеда.
За місяць спитав кума, як там картопля. Кум сказав, що все зроблено, а сам звалив на ПМЖ в сусіднє село. Корову забрав сусід. Виявилось, що це його корова.
Картоплі немає. Комора порожня. Кум змінив прізвище і не відповідає на вайбер.
Терміново взяв двох хлопчиків, що живуть через дорогу. Сказав посадити картоплю за 2 дні. Хлопчики погодились, попросили 2 яблука та покататись на лісапеді. Я погодився.
До вечора посадили картоплю. Задоволений.
Кум, звісно, падлюка, підвів, але ж я не лох, все нормально порішав. Минув місяць. Картопля не зійшла. Зате зійшла кукурудза і то по діагоналі. Біда.
Позичив гроші, поїхав у сусіднє село, зробив світлини естонської картоплі й зараз показую їх, розповідаючи, що це наш майбутній врожай.
Про лідерство, бізнес і стартапи
1. Неважливо, хто ти в реальному житті — бізнесмен, ІТ-спеціаліст чи менеджер в банку, але 1 травня ти мусиш бути в селі, щоб допомогти посадити картоплю.
2. У тебе може бути свій бізнес, ти можеш багато заробляти, а найближчий магазин з картоплею може бути в ста метрах від твого будинку. Ти навіть можеш не любити картоплю, але ти просто зобов’язаний взяти хоча б пів мішка картоплі після поїздки до батьків.
3. Щоб стати мільярдером, спочатку потрібно посадити кілька гектарів картоплі або мати друга-фермера, який допоможе посадити картоплю швидше.
4. У кожного Джобса завжди був свій Возняк, який активно садив картоплю, поки умовний Джобс займався всякою хернею.
5. В житті кожної відомої компанії був такий момент, коли все залежало від однієї дрібниці — чи поїде ключовий співробітник на картоплю, чи ні. Здебільшого компанії не мали впливу на цю дрібницю.
6. Усі найкращі копачі картоплі були скромними, педантичними людьми із 30+ річним стажем, які майже ніколи не йшли на ризик.
7. Більшість історій успіху, коли картопля була висаджена до 1 травня — це помилка тих, хто вижив.
8. Немає жодного способу визначити, який саме сорт картоплі дасть гарний урожай цього року. Максимум, на що здатні найкращі менеджери — правильно визначити момент, коли твоя картопля росте повільніше за картоплю сусіда.
9. Вся стартап-культура («посадімо менше картоплі цього року» або «посадімо під плужок», або «купімо картоплю в магазині») працює лише в теорії. А по факту повна маячня.
10. Щороку ти обіцяєш собі висаджувати картоплю точно в ряд згідно з бізнес-планом, але кожен раз хтось вже на третьому рядку починає косити, чим херить весь бізнес-план.
11. Немає жодної кореляції між «корпоративною культурою» садіння картоплі, бажанням садити картоплю і майбутнім урожаєм.
12. Жодне поле з картоплею не було посаджене без навозу, криків, родичів і кумовства, а також феноменального збігу вихідних днів.
13. Якщо ти став всесвітньо відомим, ти можеш писати книги, зніматись у фільмах і писати романи про те, як садив картоплю. Ці висери будуть розлітатись великими тиражами.
14. Підприємництво неможливо в країні без культури, де люди охоче продають і купують картоплю.
15. Не має значення, чи ти виростив хорошу картоплю, чи ні. Важливо те, чи зможеш ти її продати. Якщо навчився продавати — якість картоплі і її сорт неважливі. Люди постійно її потребують. Вони з радістю куплять твою гівняну картоплю.
16. Всі брешуть і обманюють, що саме їхня картопля не кропилась хімікатами.
17. Вся економіка посадки картоплі зводиться до єдиної формули: кількість викопаної картоплі > кількості посадженої картоплі.
18. Всі книги з мотивації та лідерства зводяться до того, що чувак, який живе в Беверлі-Гіллз і купує картоплю в магазині, радить чуваку, що живе в Тульчині, який усе життя садив картоплю на городі, як правильно садити картоплю.
Про ролі на проєкті та HR-процеси
Уся ваша сім’я садить у селі картоплю. А ви в цей час ходите по базару і розповідаєте всім, що у вас є недорогі ресурси, які можуть якісно і швидко посадити картоплю, яку потім зможуть дорого продати на цьому ж базарі. Це Sales-менеджер, який продає свою offshore-команду.
На городі ж завжди є чітка ієрархія. Є бабуся, яка без калькулятора знає, скільки городу треба висадити, в які терміни й що має в результаті вирости. Це Product Owner, який формує технічні вимоги до проєкту (technical requirements) та визначає критерії успішності (definition of done).
Є сусідський Толік, який часто ходить через ваш город, сперечається з бабкою щодо того, який сорт картоплі краще посадити цього року, термінів дозрівання і загальної необхідності садити такий великий город. Це незалежний консультант (Consulter).
Толік і бабка також обговорили, що буде посаджено на якому городі й де буде проходити стежка між їхніми городами. Це інтеграційні тести (integration tests).
Дід заводить трактор, починає нарізати рядки, в які буде висаджена картопля. Це архітектор програмного забезпечення (Software Architect).
До речі, деякі рядки — рівні, а деякі — криві. Це все тому, що архітектор має бути хороший, але використовуємо те, що є.
Далі виходить мама, яка керує загальним процесом садіння картоплі. Вона кричить на тата, щоб той швидше підносив картоплю, підганяє внучків і шипить на курей і гусей, що бігають городом. А ще викидає погану картоплю та постійно свариться з бабкою, якій постійно здається, що все йде не за планом і якщо так всі будуть працювати, то картопля в цьому році не виросте. Мама — це керівник команди (Team Lead), а тато — технічний лід (Technical Lead).
Старший внучок, який приїхав всього на три дні, працює надзвичайно відповідально, бо знає: що раніше посадять город, то швидше можна буде побігти на став і до Оленки, місцевої дівчини. Старший внучок — це Senior Developer, а Оленка — QA в іншій компанії.
Середній внучок найбільш засмучений. Він вже достатньо дорослий, щоб виконувати всі типи робіт — і копати, і садити, і колоти дрова, і годувати корову, але в сільський клуб його ще не відпускають по вечорах, а Оленка тусить з його старшим братом. Це Middle Developer.
Молодші внучки бігають по городу, кидаються грудками один в одного і при першій же нагоді тікають у тіньок або пограти у футбол. На них кричить мама, сердиться старший брат, але ніхто сильно не гримає, бо розуміє, що вони ще діти. Це Junior Developers.
Тут мимо проходять тітка Клава і дядько Льоша. Вони зупиняються біля вашого городу, щоб розповісти, що грядки у вас криво посаджені, у сусідів уже все посаджено, а вони самі ще не починали, бо допомагати вашим сусідам все посадити. І питають, чи не може бабка налити трохи самогончику, щоб вони й надалі могли давати свої поради. Це аудитори.
Ввечері, коли всі пішли до хати відпочивати, на город виходить бабка з мамою, щоб перевірити, скільки городу висаджено, скільки залишилось, а також обговорити причини, чому город садиться так повільно, коли всі сусіди навколо вже все висадили. І що потрібно зробити завтра, щоб всіх наздогнати. Це закінчення спринту, ретроспектива і планування нового спринту.
Але тут середньому внучку подзвонила інша бабуся, що жила в іншому селі. Вона кликала його приїхати до неї наступного літа. Обіцяла, що можна буде ходити на ставок купатись, грати з іншими хлопчаками у футбол, а ще в село приїдуть сусідські дівчата. Та й город в неї вдвічі менший, не треба буде так багато працювати. Це рекрутинг.
Наступного року внучок поїхав в інше село садити картоплю. Це прийняття пропозиції (offer) і перехід в іншу компанію.
Наступного літа внучок приїхав в інше село, а там дівчата вже тусять з іншими хлопаками, став висох, город — більший, а бур’яни по пояс. Це реальність.
Якщо вам сподобалась стаття, підтримайте волонтерський проєкт DonorUA — автоматизовану систему рекрутингу та управління донорами крові в Україні.