Categories: Мнение

Оптимизация кода в мире, который не хочет оптимизации

Преждевременная оптимизация – это корень всех зол.

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

Участвуя в группе по обзору тем WordPress около года назад, я снова натолкнулся на этот совет. Преждевременная оптимизация – это корень всех зол. Ответ был дан автору темы, который хотел уменьшить количество и вес скриптов, необходимых для загрузки их темы. С одной стороны, автор темы мог загрузить скрипт размером 1,29 КБ без каких-либо зависимостей, чтобы выполнить свою работу. Другой вариант заключался в использовании jQuery-зависимого скрипта, включенного в ядро ​​WordPress, общим объемом 105 КБ, потому что «большинство» сайтов WordPress все равно загружают jQuery.

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

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

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

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

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

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

Не все подключены к гигабитному Интернету

Большинство разработчиков, которых я знаю, используют сверхбыстрые интернет-соединения, часто со скоростью загрузки 1 Гбит / с и неограниченным объемом данных. В этой ситуации легко забыть, что большая часть мира все еще находятся на медленных соединениях с ограничениями данных.

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

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

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

Для такой технологически развитой страны многие ее жители едва догоняют то, что было десять лет назад.

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

Хотя это анекдотично, это суровая реальность сельской жизни в некоторых регионах США.

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

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

Когда вы живете в месте, где важен каждый байт, вы стараетесь не тратить их зря.

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

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

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

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

writer

Recent Posts

Плагин Delete Me для WordPress помогает владельцам веб-сайтов предоставить право на забвение GDPR

Поскольку до крайнего срока соблюдения GDPR ЕС осталось всего 178 дней , многие владельцы сайтов…

2 года ago

Команда Gutenberg наращивает юзабилити-тестирование в WordCamp US

Команда Gutenberg создаст станцию ​​тестирования удобства использования в WordCamp US, где посетители смогут принять участие…

2 года ago

Плагин распространителя теперь в бета-версии: новое решение для синдикации контента WordPress от 10up

Сегодня компания 10up опубликовала предварительную версию своего плагина Distributor , нового решения для синдикации контента…

2 года ago

Gutenberg 1.8 добавляет большую расширяемость для разработчиков плагинов

На этой неделе был выпущен Gutenberg 1.8 с несколькими заметными улучшениями, которые предоставят разработчикам плагинов…

2 года ago

Gutenberg 15.5 представляет экспериментальную поддержку разметки сетки

На этой неделе был выпущен Gutenberg 15.5 с новыми функциями и улучшениями возможностей полнофункционального редактирования…

2 года ago

DesktopServer 3.8.4 включает подарок сообществу

DesktopServer выпустил версию 3.8.4 своего программного обеспечения для локальной разработки. Эта версия включает в себя…

2 года ago