Оптимизация. Программирование и бизнес

Jan 25, 2013 02:50


В книге Джона Бентли «Жемчужины программирования» в главе 6.1 (нет на сайте) описан пример оптимизации программы, считающей гравитационное взаимодействие изрядного количества тел (планет, звёзд, галактик). Тел ~10 тысяч, в первоначальной реализации считать их программе год, если не отключат электричество за неуплату.

Книжка суперская, всем рекомендую, даже непрограммистам. Вы, например, знаете, что π секунд ≈ нановеку? А изящество алгоритмов… Я был близок к оргазму.



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


  Уровень разработки Ускорение Изменения 1 Алгоритмы и структуры данных ×12 Двоичное дерево 2 Оптимизация алгоритма ×2 Увеличение шага по времени 3 Реорганизация структуры данных ×2 Подгонка кластеров скоплений под реальную ситуацию 4 Системно-независимая оптимизация кода ×2 Замена двойной точности на одинарную 5 Системно-зависимая оптимизация кода ×2.5 Кодирование критического участка на ассемблере 6 Аппаратура ×2 Использование сопроцессора   Итого ×400  у меня получилось  ×480, ну да ладно
Как мы видим, самый большой выигрыш дали грамотно подобранные алгоритмы. Остальные способы ускорения тоже важны, но видно, кто здесь первая скрипка на деревне.

Для тех, кому интересны технические подробности, вот они (остальные - промотайте, это не принципиально):

«Прежде всего Эппель занялся поисками подходящего алгоритма. Ему удалось уменьшить затраты на выполнение одного шага по времени с O(n2) до O(n log n) благодаря выбору правильного представления объектов на бинарном дереве, где объекты верхнего уровня представляли собой кластеры физических объектов. Сила, действующая на конкретный объект, может вычисляться как сумма сил, действующих на него со стороны больших кластеров. Эппель показывает, что это приближение не вносит погрешностей в модель. Дерево состоит из log2 n уровней, а получающийся алгоритм с временем выполнения O(n log n) близок по духу алгоритму «разделяй и властвуй» из раздела 8.3.

Правильный выбор структуры данных уменьшил время выполнения исходной программы примерно в 12 раз». (стр. 82-84)

business.  Какова же ценность этого не для программистов а, скажем, для бизнес-консультантов? Она очевидна: перед тем, как заниматься тюнингом-тренингом, посмотрите всю систему.

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

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

level up, level down.  Бессмысленно пытаться закрыть дыры в стратегическом управлении поиском «правильных сотрудников», которые решат за тебя все проблемы, и принесут тебе рынок на блюдечке с голубой каёмочкой. Конечно можно попытаться найти чизес-крист-сейлз-суперстар (ага, HR обучением и мотивацией исправляют ошибки рекрутинга). Но, как справедливо писал Коллинз (а до него где-то за пару тысяч лет эту мысль озвучивал Сунь Цзы),

«…чем больше ваша компания, тем больше ваш "средний сотрудник" будет средним по всем параметрам. Хороший руководитель не полагается на "звёзд" в своих планах. Хороший руководитель выстраивает такую систему, в которой даже средние по рынку сотрудники будут достигать максимальных результатов».

То, с чем постоянно сталкиваюсь в консалтинге я, это поиск простых и быстрых решений со стороны руководителей компании. Само по себе это не так плохо: есть понятие «нормы изменений» - если даже самыми хорошими намерениями начать переформатировать всю компанию, даже в идеальном случае результат будет ужасен: всё встанет раком. Слона надо съедать по кусочку. Сперва мы проходимся по цепочке основного бизнес-процесса, смотрим, где в неё вкрался… где искрит. Потом составляем иерархическое «дерево изменений», и реализуем его - но не всё сразу, а чтобы люди успели привыкнуть.

Но, как я уже писал, всегда есть соблазн поддаться обаянию «чудо-таблетки», и сказать себе (и окружающим): «Да фигня эта ваша стратегия! Клал я болт на ваши бизнес-процессы со структурой! Почему продажи падают, я и без сопливых знаю: мои сейлзы не умеют общаться и продавать! Значит нужен тренинг продаж. А на складе не успевают оприходывать/отгружать - им точно нужен тайм-менеджмент!»

Вы знаете, может и правда сейлзы не умеют общаться, а кладовщики часов не наблюдают. Даже так: скорее всего это правда. Экспресс-диагностика почти всегда это подтверждает. Действительно, откуда взяться хорошим сейлзам в такой системе, разве что случайно. Принцы, они во дворцах живут, знаете ли. С CRM, KPI, чёткой маркетинговой и продажной стратегией. Но предложенный уровень решения… Скажем так, это примерно как заняться маникюром, когда туберкулёз. Не исключено, что ногти тоже грязные. Но, очевидно, это меньшая из проблем у человека. Хотя внешне конечно очень заметная. И - что важно - намного легче и быстрее решаемая.

Думаете, почему так адски популярны всякие таблетки для похудения, почему «магазины на диване» с их чудо-средствами не разоряются? Почему в общем то примитивные идеи во многих религизоно-философских системах так популярны? Почему люди предпочтут тибетскую медицину банальному ОБЖ? Да потому что люди хотят халявы. Люди хотят волшебной палочки, девида блейна в голубом вертолёте, универсального решения, не требующего усилий со стороны применяющего. Но халявы нет, сэр. То есть, мэм. Красота не требует жертв, ах если бы. Красота требует ежедневной работы над собой.

Меня часто спрашивают - чаще в реале, чем в Сети: «Что же нам делать?» И мой ответ почти всегда разочаровывает. Он прост, даже примитивен. Но его реализация требует многого. Как слова врача про здоровый образ жизни. Вкратце. Очень вкратце:
  1. Самое главное про компанию. Её миссия (и в голубые дали идут все, кто будет пытаться доказывать, что она не нужна, это уже уныло и скучно). Её стратегические цели - общие и по секторам (финансы, маркетинг, коммерция, HR…). Инициирует и всё делает БигБосс. Или - что чаще - не делает. Милостиво повелевая подчинённым подкрутить что-то там внизу, и не напрягать Их Высочество. 
    Начинать надо с себя. Откуда рыба гниёт, оттуда она и выздоравливать должна начать. Приход будет таким, каков поп. А если он разочаровывает, запрись в кабинете и помедитируй часок перед зеркалом.
  2. Процессы и структура компании, соответствующие её целям (и реалиям рынка ­- труда, в том числе). А не высосанные из Гарант-Консультанта. Процессы должны быть такими, чтобы средний сотрудник мог по ним спокойно идти. Ибо если их нет, бессмысленно предъявлять претензии к людям, что они что-то не выполняют. Что им выполнять, скажите сперва конкретно. И убедитесь, что эти требования адекватны и не требуют качеств супермена и 48-часового рабочего дня. Знаю, хозяева порой бурчат: «Я же это всё сам прекрасно делал!» Ну так все, кто так делают, уже хозяева своих фирм, мужик. Попробуй их схантить, а потом удержать, если считаешь, что только с такими сможешь работать. А нет, так снизь планку. 
    Нужна система, которая будет поддерживать хорошее (что есть «хорошее», см. п. 1), и подавлять плохое (см. там же). 
  3. Люди, которые получили на руки чёткие алгоритмы (вы всё ещё надеетесь купить экспертизу и крутейшего манагера, который принесёт вам в компанию свои секретные ноу-хау? тогда мы не идём к вам! потому что вы и этого манагера схарчите, так как если он профи - он будет требовать реализации этих самых пунктов, что вам не по душе).  
  4. И только потом Конкретные локальные решения. Те же тренинги. Но - обязательно - вписанные в цели отдела/департамента/компании. Потому что если требовать от тренера всего, то и контроль ему надо отдавать весь, и платить как биллу гейтсу ( вот почему). 
  5. Постоянная и честная ревизия того, куда движемся, и то ли делаем. Ошибки - нормально. Любой ошибается. Вот когда их замалчивают, это плохо. Можно нанять на топа, человека, который понравился, а он окажется не тем (даже ассессмент иногда даёт сбои). Бывает. Но настоящий идиотизм - не признать этого и держать неподходящего человека до последнего, пока он совсем уже не развалит всё. 

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

Только занимайся. Не жди чуда.







содержаниевся фототематикатолько фотографиимыслиновостиобзорыинтересноеalex-krylov.ru

алгоритмы • бизнес • бизнес-процессы • консалтинг • оптимизация • оргструктура • программирование

программирование, бизнес, оптимизация, идеи и мысли

Previous post Next post
Up