Правило 90–10: не тратьте 90% времени на беспокойство об оставшихся 10%.

Другими словами, не тратьте большую часть своих усилий на достижение 100%. Это почему? Две причины.

Первая причина - это Закон убывающей отдачи, который применим не только к разработке программного обеспечения, но и практически ко всему остальному. Возьмем, к примеру, команды разработчиков программного обеспечения. Увеличение размера команды разработчиков с одного разработчика до пяти, вероятно, увеличит продуктивность на 500%. Что будет, если мы продолжим добавлять разработчиков в команду? После определенного момента производительность увеличится лишь незначительно (например, с 7 до 8 разработчиков) или даже начнет снижаться (например, при наличии одной команды из 20 разработчиков).

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

Я приведу вам несколько примеров того, как я применяю правило 90–10.

Выбор правильной технологии

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

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

Код

Должен ли код быть понятным и удобным в обслуживании? Определенно. Должен ли код быть безупречным и в нем больше нет места для улучшений? Не обязательно.

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

Представление

У вас есть узкое место, и вам нужно улучшить время отклика или производительность? Обычно самые большие улучшения происходят от простейших изменений. Вы можете получить 200% или даже 500% улучшений с помощью простых изменений. После этого для дальнейших улучшений обычно требуются очень сложные изменения, и прирост производительности будет незначительным. Для большинства приложений, вероятно, не имеет смысла тратить месяцы усилий разработчиков, чтобы получить, скажем, еще 10% повышения производительности.

Тестирование

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

Обучение и самосовершенствование

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

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

Последние мысли

Я обычно замечаю, что разработчики склонны чрезмерно зацикливаться на качестве кода и лучших практиках (особенно после прочтения чистого кода!), Архитекторы - на производительности, а менеджеры - на показателях и внедрении лучших практик (TDD, Agility, охват тестированием и т. Д.).

Правило 90–10 не имеет ничего общего с посредственностью или поощрением лени. Речь идет о проведении логического анализа затрат и выгод, чтобы вы могли сосредоточиться на том, что действительно важно; это не сделает вас лучшим разработчиком или архитектором программного обеспечения, но поможет найти правильный баланс между всеми различными, а иногда и противоречивыми аспектами разработки программного обеспечения.