Філософія програмування 4 - Технологія «Шапіто»

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

Перший: тоном капітана зорельота, — потрібна функція connectToDB() в головному файлі.
Другий: — відкриваю — відкриває файл, знаходить функцію.
Перший: — що тут відбувається?
Третій: — запукаю — ставить брейкпойнт, запускає додаток, у момент зупинки вимовляє: — dbinstance в порядку — виводить значення на екран --, remotePort дорівнює 8999 — це значення теж видно на екрані.
Перший: — дивно, треба б профілювати цей виклик.
Третій: — ок — диктує четвертому — новий рядок 123 console.time(), 125 console.timeEnd()
Четвертий: набирає, — готово.

Третій: запускає, — час виконання цього блоку 150 мілісекунд.
Перший: — а-а-а, все ясно, прибираємо тулинг профайлу, додаємо комент, що в цьому місці була така проблема, міняємо всі випадки появи змінної checkRemote host port на checkLocalPort port, — сьорбає чайку з варенням.
Другий: знаходить за допомогою пошуку всі шукані входження.
Четвертий: замінює проблемні ділянки.
П'ятий: — мені треба комент запив.
Другий: — та, — відкриває знову функцію.
П'ятий: — пишу, що треба завжди перевіряти localPort — забиває комент, — готово.
Шостий: — коммичу, — набирає git commit-am «виправлений баг 1827 з підключенням до сервера бази даних», git push.
Сьомий: мовчки проганяє всі тести але новому коммите, вносить зауваження баг трекер.
Восьмий: — прийшов отримати з пітерського офісі, і апдейт віжуал студії докачался.
Перший: — добре, став апдейт, потім мержим і проганяємо. — прикушує печиво, запиває чаєм з варенням.

Такі речі спостерігаються в MMORPG: воїн, маг, стратег, захисник, лікар, злодій. А в програмуванні менеджери б вже давно впровадили конвеєр, але, програміста неможливо перетворити в механіка, він залишається творчою особистістю навіть в умовах над-вузької спеціалізації. Для капіталу, — це проблема, але для самих програмістів, — це добре. Програміст як би його не форматували, залишається схожий на сценариста: сиджу пишу сценарій бойовика, двадцять тисяч і двісті мільйонів доларів чекають поки у мене все буде готово. Звідси були вигадані Java, C# і Haskell — щоб відформатувати програміста ще і ще сильніше. Тобто мова програмування вже давно не лише інструмент у руках програміста, але і інструмент управління програмістом, вписування його в конвеєр.

Конвеєр, це що ж таке, це — коли роботи збирають джипи. Ага, якби. Простіше навчити людину простої операції, ніж складного комплексу операцій. Одна справа коли вам треба навчити десять взуттєвих майстрів робити взуття від початку до кінця, і інша справа навчити кожного однієї операції. Порахуйте, якщо не лінь, яке масштабування. Виходить, що навчити тисячу осіб для конвеєра займе часу майже стільки ж, скільки і одного фахівця повного циклу. Тобто, конвеєр виник задовго до роботів, і суть конвеєра: «софт-технологія», технологія організації і навчання людей. А організація власне, це приватний випадок навчання. Спеціалізація неминуча. Вже зараз у вашій фірмі може бути людина, яка пише тільки UI код, або моделит тільки гарматки. Але поки-що програміст залишається «зіркою», в тому сенсі, що його праця унікальний і є твором мистецтва, і ще програмісту треба постійно «продавати себе», переконувати інших у тому, що його код хороший.

Конвеєр це не єдина «софт-технологія». Проблема в тому, що ми сильно відстаємо в цих різних «софт-технологіях». І я не тільки про «управлінські технології» або «технології навчання». Спробую пояснити. Коли в Європі вже в кожному містечку видавали газету, в Росії ще писарі не стали станом. Це намагався виправити Петро, є такий термін — вестернізація. Але суть вестернізації не в тому, щоб одягнутися за європейською модою, а в тому, що суспільства, де всі мислять однаково, — моно свідомість, — перетворитися на суспільство, де люди копають кожен в свою сторону. Поки один стругає кораблі, інший пише сонети. Начебто. Але ні, це ще не воно. Можна залишитися моносознательным суспільством, і просто призначити людей на різні завдання. Що у нас і відбувається, по сей день. На заході тебе не призначають робити кораблі, ти сам придумуєш, ні, не кораблі, а саме це завдання. Самостійність у пошуку завдань. Я не кажу, що це добре. Просто так воно влаштоване, я показую пальцем на факт. Але призначити людей можна тільки на ті заняття, які вже хтось придумав, тобто завжди буде відставання від тих, хто, власне, придумав.

Як же так у них вийшло? Справа в конкуренції, але не в тій конкуренції, про яку нам розповідали казки під час перебудови, де всі радісно змагаються на чесній основі, дотримуючись правила і закони, а в тій конкуренції, де ти перегрызаешь глотки — щоб вижити. Брешеш, изворачиваешься, здійснюєш підлості, посміхаєшся, а потім — б'єш у спину. Але цього мало, інакше б у нас не було технологічного відставання. Тут є ще один момент. Групова конкуренція. Високоорганізовані групи конкурують один з одним. І їх вища форма, яку я називаю — «шапіто». Можете називати це «братство кільця», «друзями Оушена», «піратської командою». У нас це називається просто «банда» або «розбійницька зграя», зрозуміло з негативним відтінком. Суть у тому, що конкурентні особини, кожен з яких звик всім перегризати глотки, виживати, домінувати в будь-якому співтоваристві, або хоча б просто володіє високою кваліфікацією — збираються разом, в одному «шапіто», в одній зграї. Вони разом виконують завдання, «проходять левел», «видобувають Ескалібур та інші няшкі включаючи золото і XP», і розбігаються. Сама така група складається з конкуруючих особин зі своїми спеціалізаціями перетворюється у високо-конкурентноспроможну одиницю. Тобто це не просто банда, а банда складається з ватажків банд, для нас щось неймовірне, а на заході — ключова форма організації протягом сотень років.

Як це ні сумно, тут мені доведеться зробити маленький відступ, і показати, що таке традиційне суспільство, де нічого подібного немає, і навіть якщо й виникає, то не вітається. Ось вам тато каже в дитинстві: «так не роби, не добре». А звідки він знає, що добре, а що погано? А йому теж тато сказав. І всі ці папи і діти — думають однаково. Великий громадський мега-мозок. Усією країною дивимося під новий рік про те, як пацани пішли в лазню. В якийсь момент, цей мега-мозок, традиційний соціум, розуміє, що аби розв'язувати внутрішні конфлікти і боротися з зовнішніми ворогами, йому потрібен лідер. Тобто треба згуртуватися навколо царя. Царя взяти ніде, все ж однакові, от і починається «прийдіть і володійте» гості дорогі, Рюриковичі наші. Всі учасники налаштовуються на лідера як на камертон, як на генератор нових ідей. Якщо у вас виникла нова ідея, ви, знову ж таки, йдете до царя і її доповідаєте. А він її приймає і транслює в суспільство зверху, або відкидає. До речі, «традиційне суспільство», це термін, гуглируемый і так далі.

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

Але в Росії, навіть професіоналізм, — зародковий, люди лише засвоюють основну властивість професіонала — створення закінчених висловлювань. Тобто ви спілкуєтеся з людиною, як зі своїм, поступово приходячи до розуміння один одного, на емоційному, побутовому рівні. Професіонал же, спілкується на рівні закінчених висловлювань, таке спілкування не вимагає ніякої спорідненості і залученості, але і висловлювання повинні бути цільними і закінченими. Не «я намагався це зробити, начебто, щось виходить», «ой, Міш, давай потім поговоримо, поки нічого не ясно, але ніби готове», а «ситуація на сьогодні така: пункти два і три завдання 123 виконані, передбачуваний час повного завершення — наступна п'ятниця», «я зіткнувся з непередбаченими труднощами при виконанні пункту 5, обговореный термін виконання буде зірвано». Ті, хто з цим стикався, зрозуміють про що я, причому відразу, зльоту — це болюча тема для всієї індустрії. Замість того, щоб розмовляти з людиною, як два високо розумних істот, ми воліємо «снюхиваться». Давайте обговоримо по скайпу. Ну давайте, що з Вами робити. Необхідність чітко сформулювати положення справ, викликає у людини головний біль. Зазвичай рік роботи з західним замовником вирішує.

Важлива особливість «шапіто» в тому, що виконавши завдання, награбувавши каравани, наприклад, люди «розбігаються». І розбіглися вони формують свої банди, групи, створюють нові компанії. І в них переносять всі технологічні прориви, які отримали в цьому завданні, в попередній групі. Розмноження поділом і брунькуванням. Будь-яка сучасна корпорація, або мега-корпорація, це традиційне суспільство у своїй нижній частині, але нагорі, завжди — банди шапіто. Це пірати, вони створюють або захоплюють корпорації, грабують їх або модернізують, продають і купують, розпадаються, поділяють, з'єднуються і з'єднують. Це зовсім інший світ, і дуже непрозорий. Зовнішня, офіційна сторона, як правило ніяк не розкриває членів цієї «банди». У Росії вистачає конкуруючих до смерті груп, але всі вони влаштовані за принципом вовчих зграй, «разом в гойдалку ходили». Вкрай рідко вони взагалі змінюють структуру, розділяються, і то з конфліктом і страшним шоком для всіх. «Шапіто» передбачає, що люди, часто незнайомі швидко зібралися, зробили справу і розбіглися. Технологічно.

Головне, звичайно, вміти спілкуватися з рівними, адже начальників і підлеглих у нас більш ніж достатньо, одні вміють підкорятися, інші командувати. Мене просто бісить, що скільки я не намагався спілкуватися з талановитими людьми в інтернеті, авторами цікавих програм, бібліотек, або організаторами спільнот, сайтів, спілкування завжди з їх боку дико гальмується тому, що вони чекають що або я їх очолю, дам роботу, і вони будуть підкорятися, (це «справа»), або навпаки, буду підкорятися їм, «поступлю у розпорядження», теж «дело». Це — кам'яний вік спілкування. Культури спілкування на рівних немає взагалі, — це вважається марною тратою часу. Ну або тоді особиста дружба, тобто ніяких закінчених висловлювань, ніяких алгоритмів спілкування, будемо «снюхиваться», «бухати разом». А воно треба?

Джобс, який «незрозуміло чим конкретно займався», насправді впровадив технологію шапіто в розробку айті проектів. Спочатку він застосовував її інтуїтивно, піратський прапор над офісом вивішував, але після роботи в голлівуді, який весь працює за принципом шапіто, антрепризи, project-oriented-production, він став усвідомлено працювати над новими проектами в Яблуці як працюють над голлівудськими проектами: збирається банда піратів, розмаїтих талантів, але не просто в одному місці на зарплату під керівництво, а ПІД ПРОЕКТ. Дедлайн проекту, це одночасно дедлайн розпуску зграї, всі сили зосереджуються на сценарії, потім на зйомках, потім на постпродакшені, тільки в Яблуці це було застосоване на їх айтишных аналогах. Випуск чергового Маку, це як створення фільму. Це вирішує багато проблем, не хочу в деталі вдаватися, але наприклад, ви не можете собі дозволити взяти в свою фірму кращого в місті дизайнера, але ви можете запросити його на один проект, з чітким дэдлайном. Просунуті «бандити» давно зрозуміли, що створювати банди, пробивати один проект і здавати його традиционалам, не тільки веселіше, але й вигідніше, ніж вчепитися в одне почате діло і тягнути його традиційними способами довгі роки. Заснував як Джеф Атвуд Stackoverflow, або як Те Престон-Вернер, про який я вже писав, GitHub, отримав своє, — здав «звичайним людям».

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


Група «шапіто» в ролі групи «шапіто»
Філософія програмування
4: Технологія «Шапіто»
3: Чичиков і программиат
2: Міф і мова
1: Трехнаправленное програмування

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.