Friday, May 14, 2010

Конкурсы мобильных приложений?

Вот попросили упомянуть:

Моя знакомая из SF, бывшая Полтавчанка, организовывает контест для украинских разроботчиков под iPhone. Взгляните пожалуйста: http://www.iappcontest.com/

Интересно, когда конкурсы приложений для Windows Mobile 7 появятся?

Sunday, May 9, 2010

С Днем Победы!

Всех с праздником Победы!

А еще -- пишу на случай, если кому пригодится -- обнаружил что пара неодимовых магнитиков отлично держит геогиевские ленточки на задней стороне багажника машины, если в ней достаточно металла:

Если кто помнит позравления предыдущих годов, то да, на Мерсе тоже без проблем держится:

 

Sunday, May 2, 2010

Перевернутые дубы в менеджменте и почему это плохо?

Думаете, опять о корпоративных паразитах? Не угадали. Это об иерархическом менеджменте (вертикальная пирамида менеджеров) и его органических ограничениях. Я уже не в  одной статье писал, что с переходом от индустриально-социалистического общества к обществу знаний, а тем более, экономике открытий, иерархический менеджмент со своими задачами просто перестает справляться. И да, одна из причин – корпоративные паразиты, но есть и другая, куда более глубокая органическая причина почему иерархический менеджмент должен будет уйти с переднего плана как ушли когда-то со сцены рабовладельцы и короли-феодалы.

К слову, долгое время я подходил к вопросу скорее как ученый-натуралист, там, зоолог или астроном. Вот наблюдаем, перешли к новой экономике и эти ребята категорически не справляются. Вывод – пришло их время. Интуитивно было понятно, что тупой менеджер не может справляться с умными работниками, но детали как-то уходили в сторону. А ведь иногда тупой менеджер вполне может справляться с умными – возьмите хоть надсмотрщика в концлагере. Да и в более демократической среде тоже – почитайте мою предыдущую статью " Как корпоративный менеджмент порождает монстров истории". Интуитивно было также понятно, что производства стали опять слишком большими для существующей системы упрвления. Но опять же, а что означает "слишком большими"? Так что, как всегда, не все так просто.

Так почему же? Для этого нужно рассмотреть вопрос с подходом ученого физика – построить теорию и проверить экспериментом. Вот это я и попробую сейчас сделать.

Супермозг общества и его информационная пропускная способность

А теория моя такова: чтобы управлять обществом, любая элита – "контролирующий класс" – должна представлять из себя некоторое подобие "супермозга", системы обработки управляющей информации в которой отдельные члены элиты представляют из себя индивидуальные "нейроны" этого мозга.

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

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

Перевернутый дуб сумермозга при социализме

До недавнего времени эти требования были не очень велики, хотя переход от капитализма к индустриально-социалистическому обществу в значительной степени был вызван именно этим -  капиталист одиночка уже не справлялся с управлением фабрикой и вынужден был нанимать менеджеров для передачи управляющих сигналов. Но и при социализме требования к системе были не так высоки – все что нужно было, это по сути огромный рупор, по которому товарищ (или мистер) на бочке мог приказать всем делать то или то, и контролирующий аппарат, который следил за тем, чтобы все делали как приказано. Помните Владимира Ильича – "социализм – это учет и контроль!" Эти две задачи – транслация приказов сверху вниз и контроль за выполнением – и выполнял иерархический менеджмент.

Структура была хорошо известна со времен строительства пирамид – поскольку у человека есть предел (7+-2) сколькими он может управлять, строилась система в несколько слоев. Нужно управлять командой в 50 человек – нанимаешь семь менеджеров, командуешь ими, а каждый из них командует семью работниками – все работает. Нужно управлять командой в 300-350 человек – нанимаешь 56 менеджеров, семь подчинаются тебе, каждый из них управляет еще семью менеджерами, а тем уже командуют где навоз копать и куда его носить. К слову, 7+-2 означает, что многие не будут справляться, поскольку 7+-2 это когда 9, а когда 5, поэтому часто мультипликатор поменьше, порядка 5, ну, а когда фирма заражена корпоративными паразитами, где никто не хочет работать, но все хотят "менеджить", тут и группы в 2-3 человека не редкость. Впрочем, мы отвлеклись.

С точки зрения информационных технологий, топология такой системы обработки информации имеет хорошо известное название – это дерево. Ну, как, представьте себе, там, березку или еще какой раскидистый дуб кроной вниз. У комля (в представлении данных, где все как обычно повернуто с ног на голову, это называется вершиной дерева) – президент, СЕО или еще какой товарищ на бочке, его подчиненные – это главные ветки, ну и так далее.

Вот и растет такой перевернутый дуб из чиновников-менеджеров-управленцев в каждой большой фирме или госструктуре.

Дубовые проблемы...

Однако даже при социализме дубовый менеджмент имел свои проблемы, а именно, уровень шума. Помните детскую игру "испорченный телефон"? Старый анекдот рассказывает, что однажды посадили в ряд переводчиков с нескольких языков и заставили перевести одну фразу через несколько языков. Ну, вроде, русский-английский-французский-немецкий-итальянский-испанский-греческий-русский. Фраза был "дух силен, а плоть слаба." На выходе вышло "мясо протухло и сильно воняет."

В теории информации есть "правило большого пальца", что каждый передающий узел (если этот узел – человек) теряет примерно половину информации и повышает уровень шума в два раза. Вот и пришло время провести эксперимент, компьютерный, ясное дело. Картинка ниже моделирует иерархическую систему передающую цвет. Ну, представьте себе выросшего Тома Сойера построившего под собой многотысячную организацию посвященную покраске заборов, и вот он пытается сообщить всем в фирме, в какой цвет надо красить заборы по всей стране. В этом году он перед выборами записался в партию "зеленых", и потому требует чтобы его фирма красила заборы исключительно в зеленый цвет. Программа-модель добавляет 50% шума при передаче команды от одного уровня менеджмента другому, и глядите сами, в какие цвета его фирма раскрасит заборы:

Причем заметьте, если бы в его организации был бы лишь один уровень, то дела обстояли бы вовсе не так плохо. Да, встречаются там салатный, бурый, защитный, но в общем зеленая тема везде присутствует. А вот семь уровней – полный абзац.

Конечно, с шумом можно бороться. Во-первых, можно отправлять шумящие реле в места не столь отдаленные, в качестве урока тем, кто их заменит. Можно дублировать иноформацию, проверять как поняли. Скажем, первый раз на общем митинге, второй раз в коридоре, третий на 1:1 или по email, еще раз, с мордобоем, по первому нарушению. Да-с, помогает, хотя и не на сто процентов. В общем, поверьте выстраданному опыту program manager'а, без мордобоя даже 20% шума – это уже ОЧЕНЬ здорово.

В общем, давайте взглянем на ту же структуру, передающую команду Тома Сойера по покраске заборов, если большинство этих мер принято и вожделенные 20% процентов шума не превзойдены. Вот как это выглядит:

Ага, несколько получше, но эти розовые и голубые внизу явно не из партии "зеленых". С точки зрения разнообразия, тоже неплохо – не всем же в камуфляже ходить, но с точки зрения теории управления – полный провал.

Кстати, это обьясняет и некоторые национальные различия строительства социализма по разные стороны океана. В США с их корпоративным социализмом вместо одного огромного дуба, была этакая дубрава из корпоративных дубов размером помельче, а поскольку проблема шума растет с увеличением уровней управления, то и бороться с шумом (включая, посылку шумящих реле в Сибирь) приходилось куда меньше. Так сказать, информационная база сталинизма. Причем, заметьте, как только в США возникали проекты национального масштаба и важности, тут же вылезали и все сталинские примочки вроде концлагерей для граждан японского происхождения во Вторую Мировую, Панамского канала, с жестокостью условий не сильно отличающихся от Беломорканала, или баз Гуантанамо в ходе "борьбы с терроризмом".

Вот тут-то и зарыта первая собака проблем социалистического способа производства – шум в системе управления. Индустриально-социалистическое общество не может функционировать не увеличивая концентрацию капитала и производства, не создавая огромные корпорации. Причина в том, что вопреки диссидендствующей советской интеллигенции, большие организации как раз очень эффективны, значительно эффективнее малых. Это управление в них очень трудно, поэтому  часто они производят совсем не то, что надо, но делают это они очень эффективно в смысле стоимости единицы продукции.

А чем больше корпорации, тем больше высота "дубов" систем управления, тем более критичен шум в них. Поэтому социализм, что государственный, что корпоративно-рыночный, по природе своей сам себя загоняет в кризис управления.

Дубы и экономика знаний

Как уже говорилось, с шумом, в принципе, можно бороться, если ты – босс и можешь надавать по башке, физически или фигурально. Так что, даже с большими фирмами социализм все-таки худо-бедно справлялся. Правда часто худо и бедно, но все-таки. Но тут случилась следующая неприятность – экономика знаний.

В экономике знаний уже не менеджер, а подчиненный знает что надо делать на благо компании и в какой цвет красить забор конкретного клиента. Причем, что еще хуже, для этого ему часто требуется связаться с другим подчиненным, часто отстоящим от него очень далеко в иерархической системе – в другой группе, отделении, подразделении.  А что это означает с точки зрения информационной теории и требований к "супермозгу"? Это означает, что информация должна теперь передаваться в ОБЕ стороны. И если настаивать на иерархической системе, что такой мозг тут же мгновенно перегружается.

Сами посудите, если чтобы получить белую краску для забора мне надо сначала получить разрешение бригадира, потом начальника покраски заборов, потом завсклада, и только потом кладовщик выдаст мне краску, и это при условии, что сам "Том Сойер" не хочет это разрешение персонально завизировать, это ж не работа выходит, а черт-те что! Кстати, если кто еще помнит СССР, ничего не напоминает? И заметьте, я описал всего лишь схему с тремя уровнями начальников, а если их семь, как в нашем эксперименте?

Причем, поскольку информация идет сначала снизу вверх, а потом сверху вних, то зашумление увеличивается экспоненциально – система в три уровня зашумляет сигнал идущий снизу как система из шести уровней зашумляет сигнал идущий сверху. Плюс еще когда сигнал идет снизу, он не защищен от мутаций как сигнал идущий сверху – какой начальник не хочет поправить глупого подчинненого и внести свою лепту? И вот что получается в этом случае:

 

Большой стрелочкой помечен красильщик заборов, которому нужна белая краска, а мелкими стрелочками помечены кладовщики на разных уровнях удаления от красильщика и какую краску они ему выдадут... Комментарии нужны?

В общем, в экономике знаний "супермозг" иерархического менеджмента просто не удовлетворяет требованиям производства ни по зашумленности, ни по пропускной способности. Ну, а что происходит в качестве приспособления – об этом отдельная статья.

Кросс-пост с персонального блога

Wednesday, April 21, 2010

"Не было гвоздя – подкова пропала..."

Недавно, в одной из статей я упомянул свою любимую тему, что проблемы в СССР были по сути результатом классического марксистского разрыва между социалистическими производственными отношениями и производительными силами экономики знаний, а перестройка была по сути социалистической контрреволюцией, организованной социалистическим правящим классом – чиновниками, номенклатурой, менеджментом – ради сохранения своей правящей роли. Ну, как реставрация Бурбонов во Франции, только с лучшим пониманием теории, в частности, что если не обкарнать производительные силы до уровня индустриального общества, то конфликт останется и все равно все опять крякнется.

Времени излагать подробно не было, в конце концов, статья была совсем о другом, а подробное изложение даже в отдельную статью не очень лезет – потому и пришлось целую книжку на тему писать. И что вы думаете? Тут же нашелся товарищ, который снисходительно похлопал меня по плечу и пояснил, что нечего, мол, тут обьяснять так "однобоко", там было много других факторов, и ваще, пошел бы я и почитал умных людей по теме...

Все-таки, российский сектор Интернета – это нечто. Кстати, по воспоминаниям, 20-30 лет назад в СССР такого не было. Недавно поспорил с женой почему так стало и во мнениях мы не сошлись. Я считал, что мы просто в других слоях общались, а она считает что это за 20 лет демократы культурный уровень страны опустили до ниже плинтуса. На случай, если она права (а женщины часто оказываются правы), решил написать статью дабы пояснить, что я считаю коренными причинами, а что собиранием марок по теме. Причем не только о перестройке, но и в ряде других моих любимых тем, включая управление большими корпорациями и их жизненный цикл.

В общем, это все – присказка, и пора приступать к сказке, чтоб не спрашивали "человека, человека, чего приходила..."

Помните у Маршака было такое стихотворение:

Не было гвоздя – подкова пропала,
Подкова пропала – лошадь захромала,
Лошадь захромала – командир убит,
Конница разбита, армия бежит,
Враг вступает в город, пленных не щадя,
Потому что в кузнице не было гвоздя.

И будь оно написано сейчас, какой-нибудь опытный российский интернет-юзер и ЖЖ-шник наверняка похлопал бы Самуила Яковлевича по плечу и пояснил бы ему, что конницу обошли с фланга, и генерал допустил стратегический промах, и вообще, не портил бы он бумагу, а пошел бы почитал умных людей по военному делу, или там, на худой конец, строем походил бы, что ли...

Так вот, я совсем не отрицаю значение обхода с флангов и стратегических промахов в бою. Более того, будь я военным – это было бы то, что меня бы и интересовало. А, скажем, будь я ветеринаром, я бы возмутился военными, который садятся на неподкованную лошадь. Нет, правда, варварство просто какое-то! А уж будь я либеральным демократом, то вволю повозмущался бы насчет "пленных не щадя", конечно, если это правильный город, а вступающие войска не являются восстановителями демократии и прочих "законнных порядков".

Вот только не являюсь я ни военным, ни ветеринаром, ни либеральным демократом. Я отлично понимаю, что отдельный потерянный гвоздь может случится везде, но если гвоздей регулярно не хватает, лошади регулярно хромают, вследствие чего командиров регулярно убивают, а битвы из-за этого регулярно проигрываются, то меня начинает занимать вопрос почему в кузницах регулярно не хватает гвоздей? И вот именно об этом и большинство моих теорий и статей.

Заметьте, в индустриальном (а.к.а. социалистическом) обществе вопрос в достаточной мере неактуальный. У Иосифа Виссарионовича в таком случае директора кузни и завода, производящего гвозди, тут же отправились бы в Сибирь убирать снег, а их сменщики все быстро поправили бы. Причем у Уинстона Черчилля и Франклина Делано Рузвельта картина в военное время тоже не сильно отличалась бы, про Адика с Беном я и не говорю, там и так все понятно. В этом и прелесть социалистического общества – иерархический менеджмент работает, а если где что застревает, достаточно дать по шапке и все приходит в норму.

Но то – в индустриальном обществе, а в экономике знаний и, тем более, в том обществе, что приходит за ней, иерархический менеджмент уже не справляется. На то есть отдельные причины, о которых, опять же, нет времени говорить в такой короткой статье, но суть в том, что не справляется и физически не может справляться.

Впрочем, это я опять сьехал на ответы, а в этой статье мы говорим о вопросах. Так вот, вопросы у меня не в том, был ли заговор в верхушке КПСС или нет, были ли Горби и ЕБН дураками или предателями (как будто одно исключает другое), я даже не обсуждаю было ли в СССР хорошо или плохо – те, кто жил – знают, а остальные все равно не поймут, тем более, что, как и везде, ответ был "кому – как". А вопросы, которые меня интересуют – это вопросы вроде:

  • Почему СССР, который держал в страхе полмира, не мог наладить производство туалетной бумаги? Или обязательно напугаться кого-то вроде СССР, что понять, что туалетная бумага нужна?
  • Почему страна, экспортировавшая зерно при царях, стала крупным импортером при Хрущеве и Брежневе?
  • Почему безлюдили деревни и переполнялись бесправной "лимитой" крупные города?
  • Почему народ не верил правящей "элите" и презирал ее?
  • Почему "служащие советской торговли" жили лучше чем образованный класс?
  • И главное, почему развалился СССР и произошла перестройка?

И да, в ответ каждый из этих вопросов есть тонны обьяснений вроде "обхода с флангов", плохишей, открывавших ворота за банку варенья с яркой этикеткой (надеюсь, история их не забудет), и личных бзиков очередных генсеков, но если копать глубже, то когда доходите "до гвоздей", то большинство из этих ответов сходится к одним и тем же ответам, базирующимся на теории универсальной эволюции, теории информации и марксизме. Вот этот уровень меня и интересует. Вот о нем я и пишу.

Кросс-пост с персонального блога...

Sunday, March 28, 2010

Как корпоративный менеджмент порождает монстров истории или почему IQ в корпоративных системах коррелирует с атмосферным давлением?

Ты – начальник, я – ...?

Вас когда-нибудь мучал вопрос, почему вы – такой умный – подчиняетесь таким... как бы это сказать... Причем, ваш прямой начальник может быть еще и неплох, но чем выше вы глядите вверх по корпоративной или государственной лестнице, тем более идеал начальника приближается к чему-то вроде Горбачева-Черномырдина, а иногда даже (GM, Chrysler, Enron…) и Ельцина. А оказывается тому есть хорошие технические причины.

Давным-давно, с сказочной стране СССР (люблю я эту присказку, здорово бесит некоторых персонажей...), на мат-мехе в Ленинградском Университете пришлось мне услышать интересную формулировку: "Подсистема с наивысшей сложностью определяет поведение всей системы в целом." Оставим нетривиальные тонкости как померить сложность системы и что это такое, но утверждение звучало весьма правдоподобно.

И правда, проецируя на социальные системы народная мудрость обычно вполне согласна с данным утверждением. Умный должен быть способен переиграть глупого. Система всегда бьет одиночек. А переросший мозг Homo самоуверенно называющего себя Sapiens однозначно побил все остальные виды в борьбе за ресурсы планеты. Более того, могу подтвердить это на собственном опыте. Когда я считал, что что-то надо сделать для фирмы, я вполне справлялся с контролем поведения групп более ста человек, включающих три прямых уровня начальников наверх и добивался принятия правильного плана действий. Вот только советское воспитание подвело – как всегда раньше думал о корпоративной родине, а потом о себе, а надо было наоборот. Если и когда я покину Майкрософт, моей первой задачей будет сделать для себя 10% того, что я заработал для Майкрософта, после чего моей второй задачей будет провести остаток моей жизни с максимальным удовольствием, благо, деньги позволят. Ну, может начну в 1-2%, чтобы не думать о деньгах до конца моей жизни, а уж потом займусь оставшимися 8-9% уже для удовольствия. Впрочем, мы отвлеклись на несущественное.

Недавно я вспомнил это утверждение и понял в чем оно неверно. Более правильная формулировка состоит в том, что "Подсистема с наивысшей сложностью, посвященной контролю системы в целом, определяет поведение системы в целом."

Непонятно? Поясню на примере. Допустим мы научились мерять сложность систем, или даже частного случая – людей. Представьте себе менеджера со сложностью 3 единицы. И его подчиненного со сложностью 10 единиц. Кто должен контролировать систему? Подчиненный, верно? И таки да, когда речь идет о том, что же будет делать продукт, подчиненный скорее всего сделает все так, как считает нужным. И это будет хорошо для фирмы и ее доходов. А вот в плане карьеры и продвижения по службе это скорее всего будет не так, поскольку из 10 единиц сложности подчиненного, 9 посвященно тому чтобы перебрасывать лопатой навоз, асфальт или, там,  С++ код, так что на контроль системы в целом (в том числе своей карьеры) у него остается только одна единица сложности, а у менеджера на это используются все три! Чувствуете разницу?

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

 

Грех корпоративной эволюции

Вот тут мы и подходим к моей любимой теме – корпоративной эволюции и чем она плоха. Для тех, кто не читал моих предыдущих статей, напомню.

Универсальная эволюционная теория применима не только к генам и биологическим видам, а к любым системам с множеством однородных обьектов, ограниченным ресурсом, за который они борются, и некоторое подобие размножения с наследственностью и мутациями. Классическая корпорация или чиновническая система (например, государство) под это определение подпадают. Есть люди в ней работающие, есть ограниченный ресурс – фонд зарплаты и премий, и есть подобие размножения с наследственностью и мутациями – найм новых работников через систему интервью, которая как известно приводит к найму похожих на тех, кто уже внутри системы. Если вам срочно захотелось что-нибудь возразить, почитайте сначала предыдущие статьи на тему, не могу я подробное изложение вставлять в каждую – читать невозможно будет.

Проблемы начинаются, когда одна и та же система оказыается сделанной с какой-то целью и одновременно вовлеченной в эволюцию, поскольку эволюционное развитие всегда в конечном итоге бьет дизайн, поскольку поддерживать функцию дизайна в системе под влиянием эволюционного развития требует постоянных усилий. Простейший пример, железяка, предназначенная возить грузы по воде, обрастает ракушками и водорослями. Кому корабль, а кому удобный для проживания риф... Лужайка или огород зарастают сорянками, поскольку сорняки растут сами, а траву или овощи надо бережно возделывать.

Явление это не новое, даже эволюционный дизайн подвержен той же проблеме, поскольку тело любого большого животного (например, человека) является очень вкусной средой обитания для куда более мелких живых и полуживых существ. Болели гриппом этой зимой? В общем, явление это не новой и называется паразитами. Сорняки на лужайке, ракушки на корпусе корабля, вирусы, бактерии и более крупные мелкие твари, которые любят селиться внутри человека и других животных – это все паразиты.

Паразит – это то, что селится внутри системы и перенаправляет на себя ресурсы этой системы, предназначенные на другие цели, без выполнения сравнимой полезной функции и иногда и с прямым вредом (например, выделяя токсины). Да-да, я знаю, что определение неидеальное, и что человек с его отношением к нефти тоже подпадает под него (в чем, впрочем, может быть доля истины), но главное – идея понятна, а точным определением можно заняться в другой раз.

Ну, а внутри корпорации паразит – это тот, кто направляет на себя ресурсы фирмы (лучшая должность, лучшая зарплата, лучшие бонусы...) не возвращая действиями, приводящими к большим доходам фирмы, ее живучести, устойчивости и процветанию. Все просто, правда?

Не могу не пнуть очередной раз Джека Велча – знаменитого главу General Electric введшего теорию альфа-персон, которых надо ставить в начальники (термин, взятый из наблюдений зоопсихологов над крысами) и годовых ревью с увольнением нижних 10%. Этакий селекционер, знатный Мичуринец, блин...

Так вот, как только подобные меры, даже в более мягкой форме, вводятся в фирме, она превращается в эволюционную среду. Результат? Выживают лучшие не для фирмы, а лучшие по определению эволюции. А для эволюции лучшие – это наиболее приспособленные. Это вовсе не самые умные. Это вовсе не самые сильные. Это вовсе не самые производительные или полезные. Это те, кто выжили. "Мальчик, который выжил!" в буквальном смысле этого слова. Ничто другое эволюцию не заботит. С чего сторонники Джека Велча и свободного рынка решили, что выжившие Гарри Поттеры – это автоматически лучшие для фирмы или общества для меня непостижимо, впрочем, это – отдельная тема.

Так вот, как только корпорация превращается в эволюционную среду, у каждого работника появляется две четко разных цели – первая, сделать деньги фирме, вторая, выжить. Отгадайте, какая занимает его внимание больше? Конечно, если вам надо за смену перебросить определенное количество навоза или С++ кода, то от этого никуда не деться, но отгадайте как это влияет на ваше выживание? В идеале, разумеется, именно количество навоза и должно определять ваше выживание, но идеал – вещь труднодостижимая. Вы часто видели идеальные корпоративные структуры? Вон, в СССР мы такой идеал в рамках государства 70 лет строили, коммунизм называется, а корпоративный коммунизм ничем не легче построить.

Короче, выживают выжившие, а не полезные. И этому не в малой степени способствует то, что даже очень талантливые люди внизу затрачивают большую часть своих ресурсов на вещи не относящиеся к выживанию. Например, на работу на фирму. Парадоксально звучит, правда? "Вещи, не относящиеся к делу..." Вот она – корпоративная эволюция в бизнес среде.

То есть, природа корпоративной эволюции такова, что у менеджера на три единицы сложности скорее всего продвинется другой паразит со сложностью пять единиц, который манкировал своими обязанностями и затратил все на управление своей карьерой, вместо работяги со сложностью десять единиц, которые девять, а то и все десять из них потратил на работу на фирму. Что приводит к классическому засорению системы паразитами или паразитической эволюции внутри системы, о чем я уже писал раньше.

Может показаться, что это и есть самое худшее что из корпоративной эволюции следует, но, увы, это еще не все...

Продвижение талантов и порождение монстров

А теперь, представьте себе, что нашелся работник с 14 единицами сложности. Он честно потратил 9 на благо фирмы, и у него еще осталось 5 на себя и свою карьеру. Продвинется такой? Да, продвинется. Но, только если он нашел это магический баланс сразу, если он сознательно выбрал карьеру паразита, по крайней мере на 5 единиц своей производительнсти. Если он сознательно решил, что эти 5 (или более) единиц он тратит не на благо фирмы, а на себя и только себя, что бы там ни говорил его контракт.

А если он начал с траты всех 14 единиц на благо фирмы, то он успел поесть корпоративного новояза вместо продвижения. Его "трехзвездочный" менеджер обьяснил ему, почему он – недостоин, почему он – плохой, почему он недовыполняет свою работу, почему... В общем, прежде чем наш минигений найдет баланс, когда он сможет отчитаться о работе и при этом затратить достаточные ресурсы на карьеру, его успеют оскорбить, унизить, смешать с дерьмом... И вот, когда он с размаху был брошен лицом в навоз и начал думать что же происходит, он начинает понимать, что надо делать. А 14 единиц при среднем уровне менеджеров 3 единицы – это не хухры-мухры. И прорывается наверх уже не наивный идеалист с чистыми глазами, а законченный мизантроп, который, увы, знает цену людям, и который сознательно выбрал карьеру паразита.

А теперь повторите процесс этого противоестественного отбора N раз и отгадайте, кто попадает на самый верх? То есть, самый страшный грех корпоративной эволюции даже не в том, что она продвигает почти исключительно паразитов. Ее еще больший грех в том, что когда в ней все-таки продвигаются умные и талантливые, это происходит после такой обработки, что эта система часто порождает монстров – умных и талантливых паразитов.

Не буду приводить навязшие в зубах примеры Гитлера или Хуссейна, у нас есть другие примеры. Ленин, Троцкий, Черчиль. Из  более близких примеров, Горбачев, Ельцин, Шеварднадзе, Ющенко, Сакашвили. Дополните или поправьте список по вкусу, суть от этого не изменится.

Так что может и не так плохо, что IQ в корпоративных системах коррелирует с атмосферным давлением – чем выше, тем ниже? По крайней мере способность целенаправленно делать зло ослабевает.

Как обычно, кросс-пост с персонального блога.

Thursday, March 18, 2010

Метрики при разработке софта

Все, конечно, слышали про метрики, используемые при разработке софта. Это может быть количество написанных строк кода, количество исправленных багов, количество исправленных багов в день, количество сделанных багов, количество регрессий, способность делать без опозданий, количество функциональных точек, имплементированных за релиз или этап проекта, и т.д., и т.п.

Долгое время мир делился на теоретиков-апологетов метрик и практиков. Апологеты гордо и самоуверенно вещали: "Ну, мы же инженеры или не инженеры? Инженеры должны мерять! И ваще, процесс!" В качестве положительных примеров приводились случаи, когда тот или иной процесс применялся и продукт таки удавалось создать и шипнуть!

Практики указывали на очевидную слабость любой метрики. Количество строк кода порождает стиль с обилием пустых строк, отдельными фигурными скобками на строку и многословными непонятными комментариями. Количество исправленных багов, ясное дело, стимулирует их создание в первую очередь, а количество сделанных багов или регрессий приводит процесс к скрежещащей тормозами скорости и функциональной бедности результата, поскольку ничего не удается успеть и почти все приходится перекладывать на следующую версию. А если мерять девов по числу исправленных багов, а тестеров по числу открытых, то команда достигает невероятного единения в желании растянуть этот процесс до бесконечности – гармония обычно плохо сочетающаяся с желанием менеджмента все-таки закончить проект в какой-то разумный срок.

Инженеры меряют, но что?

К слову, я лично в большинство метрик не верю и считают аргумент, что "инженеры меряют" полной фальшивкой. Инженеры во все времена меряли обьекты, которые они контролировали, или индустриальных работников, которыми они управляли. Насколько я знаю, успешных способов мерять инженеров вне разработки софта в истории не бывало, да и в разработке софта это в основном фальшивые успехи. Хотя тут история, конечно, чуть сложнее, о чем я скажу отдельно.

Дело в том, что разработка софта бывает очень разной. Сравните это с автомобилестроением. Одно дело завинчивать гайки на потогонной линии, другое дело создать новую модель. Первое меряется, второе – разве что по результату и продажам новой модели. А заметьте, и то, и другое – это "создание автомобиля".

Вот и с "созданием софта" так же история. Одно дело склепать типичный вебсайт типа брошюры или там, каталога с покупательской корзинкой. Это как завинчивать гайки на конвейере, меряй – не хочу. Вот только сайты создают не совсем инженеры, там работа ближе к индустриальному рабочему, потому и мерять такую работу легко, и проекты управляемые, если, конечно, заказчик не полный идиот и не меняет требования на лету каждый день, но тут уж не ваших рабоников надо мерять.

А другое дело, когда вы работаете на фирму, по положению обязанную выпускать каждый раз нечто, от чего должны челюсти на пол со стуком падать, а если этого не сделал, то во-первых, проигрываешь конкурентам, а во-вторых, тебя и твою фирму публика начинает обзывать разными неприличными именами, причем совершенно заслуженно.

И с чего вы решили, что ваши менеджеры смогут мерить и предсказывать то, что весь остальной мир считал невозможным и что ему даже в голову не приходило? Не обманывайтесь, вероятность того, что вы наняли всех умных людей в мире ничтожна, особенно, если вы управляете ими при помощи метрик – метода обычно приводящая к уменьшению количества умных людей в окрестности.

Много ли толку от метрик?

На ту же тему есть еще одно интересное рассуждение. Недавно, один из классиков инженерного подхода к разработке софта Том ДеМарко разродился статьей, где в основном отказывается от своей позиции сторонника метрик, причем приводит интереснейший пример.

Допустим, у вас есть два проекта, которые по смете каждый стоит миллион. Проект А, после реализации, принесет фирме 100 миллионов, а проект Б только 2 миллиона.

Теперь скажите сами, для какого проекта важнее контролировать его стоимость? Проект Б, верно? Если вы ошибетесь с оценкой стоимости проекта в два раза, то проект А принесет 98 миллионов вместо 99, разница около одного процента, а вот проект Б окажется полностью бесприбыльным и безполезным.

Видите что получается? Чем более бесполезен проект, тем более важны метрики.

Этот вывод имеет еще одно интересное следствие: Чем более менеджмент озабочен метриками, тем более он неспособен находить или выбирать прибыльные проекты, на которых значение метрик менее значительно. По сути это значит, что чем более менеджмент озабочен метриками, тем более он, менеджмент, бесполезен для фирмы.

Опять же, повторюсь, может быть ваша фирма – консалтинг, который делает коммодитизированную работу (например, клепает брошюрные вебсайты) и работает за небольшую маржу, определяемую конкуретным рынком. В этом случае и метрики, и процессы – все по делу. Только не заблуждайтесь, вы меряете не инженеров, а почти что промышленных рабочих, владеющих HTML и Javascript'ом. Никакого особого отношения к инженерии это не имеет. А если вам действительно нужна инженерия, то увы...

Баланс между риском и шампанским, или любовь – зла...

Я уже приводил этот пример в статье про экономику открытий, но рискну повторить его. Очень уж хорошо он описывает суть дела.

Представьте себе сказочного принца, решившего спасти сказочную принцессу. Явилась она ему в "видении"... Одна беда – он понятия не имеет где она, как туда добраться, сколько драконов окажется по дороге, и прочие мелочи, делающие жизнь интересной и непредсказуемой. Причем непредсказуемой оказывается не только жизнь, но и время и денежные затраты, требующиеся для миссии, что совершенно не устраивает папу-короля, которому нужно только чтобы его балбес в предсказуемый срок и с предсказуемыми затратами притащил особу женского пола, которую можно будет выдать замуж за принца и посадить королевой, когда придет их время. И начинается процесс планирования с метриками и прочими причандалами управления проектами спасения сказочных принцесс.

Во-первых, "открытый поиск" не входит в планы королевства, так что требуется спецификация. Спецификация, как обычно, включает задачу минимум и задачу максимум. В качестве задачи максимум записываются смутные воспоминания принца о его видении или там сновидении, а в задачу минимум вставляется упомянутое выше описание короля. Дальше начинается планирование work items – промежуточных задач, и milestones – этапов проекта для достижения результата.

По ходу дела выясняется, что воспоминания принца мягко говоря смутные, поэтому менджмент решает, что надо максимально ясно специфицировать как принцессу, так и маршрут. По обоим направлениями создаются task force, которые исследуют обычные маршруты сказочных принцев и характеристики принцесс.

С маршрутом оказывается, что практически все принцы (и царевичи) начинали с первого этапа – визита к Бабе-Яге, благо маршрут хорошо известен. Правда, проходит он по соседнему королевству-царству-государству, так что создается еще одна группа, занимающаяся отношениями с партнерской командой, но в остальном первый этап выглядит неплохо и достаточно ясно.

Вот со вторым этапом появляются проблемы. Оказывается, что большинство успешных принцев получило указания на второй этап от Бабы-Яги, а эти указания совершенно невозможно получить, не выполнив первого этапа. И что же делать? Не бойтесь, нет такой задачи, которую не мог бы решить менеджерский ум. Создается еще одна таск форс, которая анализирует успешных принцев и на основе этого решает, какие указания даст Баба-Яга. Оказывается, что все они следовали одному и тому же шаблону. На втором этапе они сразили дракона. На третьем этапе женились на принцессе, которую этот дракон охранял.

К сожалению, драконов никто из менеджеров в глаза не видел, а допустить плохо определенный термин при планировании просто недопустимо. В результате задача второго этапа формулируется как "Добраться до места, указанного Бабой-Ягой. Сразить мечом животное, на которое укажет Баба-Яга." Правда, "место, указанное Бабой-Ягой" звучит несколько неопределенно, так что в задачу принцу так же ставится добиться, чтобы "указанное место" было в пределах X дней пути. По поводу величины X разворачивается длительная дискуссия, приводящая к тому, что после времени затраченного на дискуссию, на X остается не более одного дня.

Этап три в этом случае уже совсем простой. Есть правда проблема с определением принцессы, поскольку ни в одной сказке ни одна принцесса не размахивала сертификтом о королевском рождении, но все сказки описывали другой признак, которым обладали принцессы. Таким образом и третий этап формулирется достаточно точно и предсказуемо.

В результате такого планирования получается техническое задание для принца:

Этап 1. Добраться до избушки Бабы-Яги.

Этап 2. Добраться до животного, на которое укажет Баба-Яга (убедить Бабу-Ягу указывать на зверя не далее одного дня пути, либо предварительно найти такого самостоятельно) и сразить его.

Этап 3. Жениться на особе женского пола, которую охраняло сраженное животное и привезти ее обратно в королевство.

В общем, вы уже поняли, что женится наш принц на внучке Бабы-Яги, сразив козла, которого та пасла на лужайке огородом.

Так, к чему это я? А к тому, что баланс между риском проекта и его полезностью обычно в той же пропорции, что и в старой пословице про рискующих и пьющих шампанское. Да, вы можете снизить риск проекта и получить предсказуемый результат в предсказуемое время. Но вы можете это сделать только ценой полезности этого результата, либо времени.

Есть классическое высказывание, что в любом проекте имеет место баланс между функциональностью, качеством и временем. Практически любой проект можно сделать с практически сколь угодно хорошим качеством при наличии бесконечного времени. Практически любой проект можно сделать в почти любое фиксированное время, если не требуется, чтобы результат реально работал. Практически любой проект можно сделать с практически сколь угодно хорошим качеством, если можно отрезать произвольное количество запланированной функциональности (например, снизив функциональность до нуля). Ни одна их этих крайностей недопустима, поэтому приходится достигать баланса между ними – приемлемый обьем функциональности в приемлемое время с приемлемым качеством. Слово "приемлемое", как вы понимаете, никакого отношения к пользователям (скажем, принцу) не имеет, и является функцией хорошего отношения к группе высшего менеджмента. Если время начинает истекать, первым теряется функциональность, вторым – очень часто – качество.

Что я пытаюсь сказать в этой статье, это то, что используя мудреные процессы для снижения риска (предсказуемое время) вы всего-навсего частично переводите процесс отрезания функциональности в начало проекта, и когда функциональности оказыватся так мало, что ее действительно можно запланировать – менеджмент рапортует о победе. Вот и получаются проекты, где "сразили животное и женились на особе женского пола, которую оно охраняло." И хорошо, если это – внучка Бабы-Яги, а не она сама, или там, коза, которая паслась рядом. Кстати, не оттуда ли взялась сказка о царевне-лягушке?

Послесловие к метрикам при разработке софта и опять об экономика открытий

В заключении к этой статье о метриках при разработке софта, хочу повториться (см. мою предыдущую статью "Экономика открытий") и сказать, что метрики можно использовать, но, как сказал Омар Хайам о вине, надо знать когда, и где, и с кем.

Разработка софта скрывает за собой очень разные виды деятельности. В некоторых случаях, проекты могут быть нивелированы до практически индустриальной эры, когда менеджер знает в точности, что надо делать, а работники просто выполняют его указания. Тут и метрик особенно не нужно, разве что такие простые типа количества закрученных за смену гаек. Иногда это проекты экономики знаний, где менеджер не знает, как конкретно достичь результата, но это знают работники, потому что они обладают знанием предмета. В этом случае обычно метрики можно использовать, хотя и куда сложнее.

Вот только похоже, что все больше и больше компаний жизенно зависит от своих групп и подразделений, работающих в экономике открытий. Давайте прикинем, сколько отраслей уже не могут существовать даже в экономике знаний, производя просто небольшие улучшения своих продуктов тут и там, а вынуждены каждые несколько лет удивлять чем-то новым... Я даже не упоминаю индустрию разработки софта, вот несколько другиих примеров:

  • Автомобильная индустрия – конкуренция и постоянно меняющиеся требования покупателей. Гонка за экономичностью, безопасностью, маневренностью, комфортом. Три крупнейшие группы производителей – японские, европейские и американские, готовы друг друг глотку перерезать, не говоря уж о конкуренции внутри групп, Тойота проти Хонды и Ниссана, Даймлер против БМВ, Форд против GM и Крайслера... Неудивительно, что производители, оставшиеся в индустриальной эпохе, вроде Лады или Фиата большинству даже в голову не приходят, несмотря на то, что и те, и другие имеют свои наработки – Фиат, например, вроде бы лидер в экономичности, к сожалению, с непримлемой для многих мощностью двигателей.
  • Авиастроение – все слыхали историю с Dreamliner от Боинга? Вот, кажется, ярчайший пример компании, застрявшей в экономике знаний, а то и индустриальной. Люди у них грамотные, образованные, а вот методы управления... Это ж насколько надо было плевать на людей, чтобы перевести штаб-квартиру компании из Сиэттла в Чикаго, просто потому что новый CEO с Восточного побережья!
  • Тяжелое машиностроение – опять же гонка между японскими, европейскими и американскими производителями. Знаете разницу между экскаватором за полмиллиона и три миллиона? Бортовое ПО, которое знает как его выкрутить в стабильное положение, когда он стоит на крае котлована и его покачнуло к краю.
  • Военная техника – вот уж индустрия, где победа в конкурентной борьбе буквально вопрос выживания.

Конечно, все эти индустрии не такие очевидные как разработка софта. В конце концов, у них всех есть и чисто производственные отделения, ресурсы. Та же автомобильная конвейерная линия к экономике знаний имеет относительное отношение, но в том-то и дело, что эти отделения – это вовсе не то, что определяет успех или провал этих компаний.

Так что, когда мне возражают, что и гвозди все еще надо штамповать, и картошку, или там, ананасы растить – я и не спорю. Конечно, есть сектора экономики по-прежнему живущие вне экономики знаний или экономики открытий. Вот только не они определяют выживание фирм и конкурентоспособность национальных экономик.

Хотите два примера? Пример номер один: Россия начала 20-го века. Вся страна была еще по сути феодальной с какой-то степенью капитализма. Социализм нарос только в столицах и нескольких крупных городах, так что конфликт производительных сил и производственных отношений был весьма локализован географически. И все равно жахнуло так, что мало не показалось. Кстати, в феврале, а не октябре. Вся эта кодла Временного правтельства была по сути разношерстной смесью социалистов представляющих уже не капитализм или феодализм, а социализм – индустриальное общество.

Пример номер два? Ага, Россия конца 20-го века. Опять же, экономика знаний нарасла в столицах плюс нескольких крупных центрах. Вся глубинка была индустриальной, с отдельными вкраплениями микрокапитализма, специфического феодализма и даже местами первобытнообщинного строя. Конфликт производства и управления из-за прогресса производства опять весьма локализованный. И тем не менее, опять жахнуло.

По сравнению с Россией Америка имеет громадное преимущество – ее социализм корпоративный, а не государственный, так что она может ломаться и "перестраиваться" по кусочкам, отдельными компаниями или индустриями. Там, отдельно дот-комы, отдельно коммуникации, потом банки... Все равно неприятно, но полегче чем перестройка. Но если экономику открытий в производстве и дальше игнорировать, то выводов Маркса никто так и не отменял, и перестройка в рамках отдельно взятой фирмы тоже будет не мед, если окажешься в ней в этот момент.

Как обычно, кросс-пост с персонального блога.