160  

Помните, что вы не сможете добиться успешной оптимизации, работая одновременно с несколькими переменными. Выберите самую важную и сконцентрируйте на ней свои усилия.

Рефакторинг

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

Эрик Наггум, программист

Не все изменения системы или мероприятия по ее совершенствованию обязательно повлияют на результат ее работы.

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

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

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

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

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

Несколько важнейших элементов

Чаще всего причины, затрачиваемые средства и усилия делятся на две категории: 1) большинство, имеющее незначительное влияние, и 2) меньшинство, имеющее сильное, доминирующее влияние.

Ричард Кох, автор книги «Принцип 80/20» [74]

Вильфредо Парето — экономист и социолог, живший в XIX веке, — интересовался вопросами владения землей и распределения благосостояния в обществе. После сбора и анализа огромного массива информации Парето обнаружил наличие интересного шаблона: свыше 80 % земли в Италии принадлежало менее чем 20 % населения. Итальянская экономика была достаточно несбалансированной. Распределение земли имело форму колоколообразной кривой: огромное богатство было сконцентрировано в руках сравнительно небольшой группы людей.

Изучая другие аспекты жизни, Парето постоянно натыкался на тот же самый шаблон: к примеру, в его собственном саду 20 % гороховых стручков приносили 80 % семян. О чем это говорит?

В любой сложной системе за значительную часть результата отвечает минимальное количество входных параметров. Этот нелинейный шаблон в наши дни получил название принципа Парето, или правила 80/20. Лично я предпочитаю называть его правилом нескольких важнейших элементов.

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

— Во множестве компаний менее 20 % клиентов обеспечивают 80 и более процентов доходов.

— Менее 20 % сотрудников компании делают 80 и более процентов самой ценной работы.


  160  
×
×