Философия программирования 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: Трёхнаправленное программирование