Эта статья была первоначально размещена 26 ноября 2018 года по адресу: https://nickjanetakis.com/blog/optimize-your-programming-decisions-for-the-95-percent-not-the-5-percent
Несколько недель назад я наткнулся на интересный титул сообщения на Hackernews, который был « Почему я написал 33 расширения VSCODE и как я управляю ими « .
Этот заголовок действительно привлек мое внимание, поэтому я сделал то, что делает большинство из нас, что прямо к комментариям, прежде чем читать статью.
Вот где я обнаружил этот комментарий:
Моя проблема с добавлением плагинов или продлением моей среды, проходящей по умолчанию, заключается в том, что в конечном итоге мне приходится иметь дело с неисправной установкой по умолчанию коллеги по умолчанию. Я в конечном итоге слишком сильно полагаюсь на надстройки.
Чтение, которое действительно поразило меня домой, потому что я так давно думал.
Но потом я наткнулся на этот комментарий:
Мне категорически не нравится рассуждения, которые предполагают, что вы должны подкоемые в 100% случаев, чтобы приспособить потенциальную ситуацию, которая может повлиять на вас в 5% времени.
» Я не использую несколько мониторов, потому что иногда я просто с ноутбуком ».
» Я не настраиваю свою оболочку, потому что иногда мне приходится к серверу
» Я не настраиваю свой редактор, потому что иногда мне приходится использовать редактор коллег ».
И вот мы, потому что я думаю, что это действительно недооцененная тема.
«Что, если» Условия
Много лет назад я помню, как избегал использовать псевдонимы Bash, потому что вы знаете, что, если я переведен на сервер, у него могут быть эти псевдонимы А потом я закончил!
Я оптимизировал свою среду разработки на 5%, и все, что он делал, — это постоянная борьба.
Сумасшедшая вещь в том, что тогда это имело большой смысл в моей голове. Очень легко поговорить о том, чтобы согласиться с некоторыми из перечисленных выше цитат и многими другими.
Но оптимизация для 5% является примером оптимизации для сценария «что если».
Вы делаете все, что в ваших силах, чтобы убедиться, что то, что вы делаете, достаточно общее, чтобы работать везде, но то, что вы действительно делаете, это делает вещи труднее для себя в случае 95%, но 95% — это то, что важнее всего.
Это влияет на код Ты пишешь
Это также не связано только с решениями в области развития. Это то, что влияет на код, который вы пишете.
Если вы попытаетесь написать что -то, чтобы быть полностью общим с самого начала, потому что «Что если я сделаю другое приложение, и ему нужно зарегистрировать пользователей?» Тогда вы обычно делаете свою первоначальную реализацию намного хуже.
Не имея глубокого понимания того, что вы разрабатываете, и уделили время, чтобы придумать хорошие абстракции на основе реального опыта, вы просто снимаете в темноте, надеясь, что ваша общая пользовательская система работает для всех случаев, когда у вас нет Даже запрограммировал его на 1 вариант использования. Как это можно сделать?
Это влияет Как вы архитеете свои приложения
Когда вы слепо следите за тем, что делают Google и другие массовые компании, вы оптимизируете 5% немного по -другому.
Вместо того, чтобы просто запустить свое приложение и видеть, как оно идет, вы пытаетесь принимать решения, чтобы ваше приложение было разработано 100 различными командами, растянувшимися на 5000 разработчиков.
Между тем, вы только вы сами разрабатываете приложение практически во всех случаях для новых проектов.
Это влияет Как вы развертываете свои приложения
Когда вы пытаетесь оптимизировать стратегию развертывания, чтобы обработать миллиард запросов на секунду с первого дня, вы просто настраиваете себя для бесконечного цикла исследований, основанных на теории.
Он часто включает в себя проведение месяцев, рассматривая такие вещи, как создать таинственный и идеальный автоматическое, автоматическое кластер, автоматическое количество, многодатранскую кластеру Kubernetes, но это приводит к тому, что эти решения недостаточно общие, чтобы работать для всех случаев для всех случаев. Без множества конкретных приложений деталей.
Вы когда -нибудь задумывались, почему Google, Netflix, GitHub и т. Д. Дейт только кусочки информации об их инфраструктуре развертывания? Это потому, что это оптимизирует их шансы на то, чтобы иметь для них лучшие инструменты для них.
Что может быть лучше, чтобы заинтересовать людей и работать над своими проектами с открытым исходным кодом, чем сделать эти инструменты максимально привлекательными, а затем подкрепить их с «Мы используем это для обслуживания просмотров на 20 миллиардов страниц в месяц, чтобы вы знали, что это работает!» .
Это наверняка убедительная история, но она никогда не бывает так просто, как просто подключить 1 инструмент, такой как Kubernetes и иметь идеальный кластер, который работает так, как вы представляете, что все это должно работать в вашей голове, когда речь заходит о вашем приложении.
Легко взглянуть на демонстрацию, основанную на игрушечном примере, и увидеть, как она работает, но все, что делает, это делает инструмент похожим на рай снаружи. Это не полная история.
Как только вы начнете пытаться заставить его работать в реальном приложении, или, в частности, для вашего приложения, все это разваливается, пока вы не потратите время и действительно не узнаете, что нужно, чтобы масштабировать приложение (которое является больше, чем просто инструменты для выбора) Анкет
Компании, которые создали эти инструменты, затрагивали время за эти годы и обладают такими знаниями, но эти знания специфичны для их применения.
Они могут использовать определенные инструменты, которые облегчают процесс, а такие инструменты, как Kubernetes, абсолютно имеют ценность, но инструменты не полная история.
Что если поместить ваше приложение на один DigitaloCean Server за 40 долларов в месяц, позволив вам иметь нулевые развертывания времени простоя и обрабатывать 2 миллиона просмотров страниц в месяц с десятками тысяч людей, использующих ваше приложение, без пота — все без Kubernetes или попытки Чтобы перевернуть всю архитектуру приложения, чтобы использовать «без серверов» технологии?
Я тоже делал все вышеперечисленное
Я много говорил «ты» в этом посте Но я не нацелен на вас конкретно и не разговариваю с сообществом программирования в целом.
Я делал подобные вещи со всем, что было написано выше, но с разными инструментами и разными решениями, потому что технологии изменились со временем.
Я могу отчетливо помнить, когда все это переключилось в моей голове. Это было, когда узел впервые вышел около 8 лет назад.
Я помню, как был довольно счастлив, используя PHP, написание приложений, доставки приложений, фриланс и т. Д. Но потом я смотрел разговоры Райана Дхала на узле (он создал узел), и я начал пить Kool-Aid около 6 месяцев подряд.
Мысли, как «Черт возьми, петли событий!» , «OMG Web Scale!» , «1 Язык для заднего и фронтального? Заткнись и возьми мои деньги.» теперь гудели по моей голове по часам.
Итак, все, что я делал, это читал о узле и едва ли написал код, пока в конце концов я начал писать код, и хотя я немного узнал о шаблонах программирования и, как правило, улучшился как разработчик, я понял, что ни один из битов узла не имел значения.
И это в основном потому, что развитие заднего и фронт-энда всегда будет иметь контекстный переключатель, даже если вы используете один и тот же язык для обоих, и у многих языков есть решения для помощи с параллелизмом.
Эти 6 месяцев были одними из самых непродуктивных и несчастных дней в моей жизни. Не потому, что JavaScript отстой так сильно, а потому, что когда вы снаружи и ничего не делаете и не задаетесь вопросом «что если», это действительно сказывается на вас.
Я все еще благодарен, что прошел этот этап, потому что он действительно открыл мне глаза и радикально изменил то, как я думал обо всем — даже вне программирования.
Преждевременная оптимизация — корень всего зла
Дональд Кнут сказал, что это лучше всего в 1974 году, когда написал:
Превосходная оптимизация является корнем всего зла.
Оптимизация для 5% — это тип преждевременной оптимизации. Может быть, не столько для выбора среды развития, но и для других случаев.
Определите свои решения на оптимизации для 95%, держите их простыми и посмотрите, как оно идет. Другими словами, оптимизируйте, когда вам действительно нужно не из -за «что если».
Какие случаи вы оптимизировали на 5%? Дайте мне знать ниже.
Оригинал: «https://dev.to/nickjj/optimize-your-programming-decisions-for-the-95-not-the-5-2n42»