Как выбрать хорошие зависимости для производственного кода. Цитируя удивительную статью Фила Бута.

Присоединяйтесь к более чем 32 000 человек и получайте информацию о самых важных идеях в области ИИ прямо в свой почтовый ящик через мою бесплатную рассылку — AI Made Simple

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

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

-Источник: Принятие зависимостей становится дорогостоящим делом?, Карнеги-Меллон. Выбор правильных зависимостей очень важен»

К счастью, я наткнулся на эту замечательную статью, отвечающую именно на этот вопрос. В сегодняшнем выпуске Tech Made Simple мы расскажем, как вы выбираете между различными проектами, над которыми следует работать (PS-количество звезд Github за проектом не является хорошей оценочной метрикой). Давайте приступим к делу.

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

— Социальное доказательство — плохой показатель, особенно в сфере технологий.

Как оценить программные зависимости

Что такое зависимость от программного обеспечения.Для тех из вас, кто не знаком с жаргоном: зависимость от программного обеспечения — это отношения между программными компонентами, при которых один компонент зависит от другого для правильной работы. Например, если программное приложение использует библиотеку для запросов к базе данных, приложение зависит от этой библиотеки. Я получил это определение из этой статьи, которая является отличным руководством по зависимостям, если вы хотите прочитать больше.

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

  1. Это решает вашу проблему?
  2. Вы знаете, как его использовать?
  3. Есть ли что-то непонятное в инструкции?
  4. Есть ли журнал изменений или примечания к выпуску?

Это отличная отправная точка, которую вы можете использовать для оценки вариантов. Это может быть горячая точка зрения, но я лично считаю, что b и c крайне игнорируются и не получают должного уважения. Если решение не соответствует этим двум параметрам, я бы рассмотрел возможность переделки решения для использования другого инструмента. По мере того, как архитектуры становятся все более сложными, нам нужно больше простоты, и опора на структуры, которые вы не понимаете, не принесет вам никакой пользы. Чтобы уточнить конкретно по поводу b- я не имею в виду, что вы должны отказаться от фреймворка только потому, что он новый для вас. Однако, если структура/дизайн вас не устраивает (после усилий), скорее всего, вы будете делать с этим относительно немного. Подумайте, хотите ли вы справиться с долгосрочной головной болью. Кроме того, если вы хотите написать лучшую документацию, у нас есть полное руководство по этому вопросу здесь

Шаг 1. Прочтите код

Опять что-то очевидное, но трудно сделать хорошо. И здесь снова Фил приходит с большим набором наводящих вопросов:

  1. Насколько он чистый? Разбита ли она на функции и/или файлы так, как вам удобно?
  2. Соответствует ли то, что вы видите в коде, тому, что вы поняли из документации? Придерживается ли он принципа наименьшего удивления?
  3. Содержит ли он другие зависимости? Они актуальны? Как выглядят эти другие зависимости? Насколько глубока кроличья нора?
  4. Делает ли он только то, что вам нужно, или он также обслуживает множество других проблем, которые не соответствуют вашему использованию? Влияют ли эти другие проблемы на производительность или удобство использования?
  5. Получает ли он ненадежные входные данные, если да, предотвращает ли он злоупотребление этими входными данными?
  6. Можете ли вы оценить примерное значение реализации? Ищите вложенные циклы или неподходящие типы данных, которые могут привести к квадратичной производительности.
  7. Есть тесты? Сколько? Анализы чистые? Вы можете запустить их? Все проходят? Сколько времени они занимают?
  8. Попробуйте представить ситуацию, когда вам нужно разветвить код и реализовать что-то самостоятельно. Это удобно или страшно?

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

Посмотрите на активность проекта-

Следующий набор вопросов касается проектной деятельности и того, как она работает.

  1. Сколько нерешенных вопросов? Как давно они открыты? Касаются ли какие-либо нерешенные вопросы?
  2. Сколько решенных вопросов? Как быстро их закрыли? Насколько полезными были сопровождающие в решении каких-либо проблем? Были ли вопросы закрыты из-за несогласия с журналистами?
  3. Посмотрите историю коммитов. Первоначальные сопровождающие все еще участвуют? Если нынешние сопровождающие не являются первоначальными, как долго они работали над этим? Работают ли они над внутренностями кода или просто касаются его краев?
  4. Посмотрите историю выпуска. Как часто выходят новые выпуски? Как часто происходят критические изменения API? Каденс — это то, за чем вам было бы удобно следить?

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

Шаг 3. Просмотрите статистику проекта –

В наших статьях об открытом исходном коде мы говорили о том, что аспект открытого исходного кода для сообщества является большим преимуществом. Таким образом, важно посмотреть на сообщество в области технологий и увидеть, какие из них наиболее важны. Вот критерии Фила с моими комментариями (курсивом):

  1. Сколько нижестоящих иждивенцев? Больше зависимых говорит о том, что разработчики с меньшей вероятностью будут идти на поводу у своих проектов, чтобы перевернуть свои платформы.
  2. Сколько скачиваний в день/неделю?– Хорошее место для проведения маркетинговых исследований – узнать, сколько скачиваний у чего-либо и почему это происходит. Может помочь вам лучше понять проект.
  3. Успешно ли другие люди используют его в своей работе? – Опыт других — отличное место для обучения – на этом основан этот информационный бюллетень. Учитесь на их отчетах, реализациях и проблемах. Ресурсы потрачены не зря

Шаг 4. Примите решение.По сути, использование зависимости — это не одноразовое решение, о котором впоследствии можно забыть. Зависимости больше похожи на обязательство или налог, и предварительным условием вашего решения является расчет долгосрочных затрат. Вы должны провести исследование, чтобы можно было рассчитать стоимость, а затем сопоставить ее с альтернативами (и одной из этих альтернатив может быть ее самостоятельное внедрение).

В конечном счете, в Tech слишком много всего, с чем нужно поддерживать связь, и делать все самому глупо и непрактично. Некоторые люди романтизируют фразу «создай с нуля», но очень редко что-то делается с нуля. Если вам это нравится, продолжайте, но вам лучше приложить много усилий для понимания и оценки различных инструментов. В конечном счете, большая часть разработки программного обеспечения склеивает выходные данные API/функций с другими API/функциями в качестве входных данных. Обучение работе с зависимостями похоже на Casemiro — очень полезно и недооценено.

Фото Christopher Gower на Unsplash

Это все для этого произведения. Я ценю ваше время. Как всегда, если вы хотите связаться со мной или ознакомиться с другими моими работами, ссылки будут в конце этого письма/сообщения. «Если вам нравится то, что я пишу, я был бы очень признателен за анонимный отзыв. Вы можете бросить его здесь. И если вы нашли для себя ценность в этой статье, я был бы признателен, если бы вы поделились ею с другими людьми. Мне помогают расти мои рекомендации, такие как ваши.

Сэкономьте время, энергию и деньги, просмотрев все эти видео, курсы, продукты и "тренеров" и легко найдя все, что вам нужно, в одном месте Технологии стали проще! Оставайтесь на шаг впереди в области искусственного интеллекта, разработки программного обеспечения и технической отрасли с помощью экспертных идей, советов и ресурсов. Скидка 20 % для новых подписчиков, перешедших по этой ссылке. Подпишитесь сейчас и упростите свое путешествие в мир технологий!

Использование этой скидки снизит цены-

800 индийских рупий (10 долларов США) → 640 индийских рупий (8 долларов США) в месяц

8000 индийских рупий (100 долларов США) → 6400 индийских рупий (80 долларов США) в год

Получи скидку 20% на 1 год

Свяжитесь со мной

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

«Если вам нравится то, что я пишу, я был бы очень признателен за анонимный отзыв. Вы можете бросить его здесь.

Чтобы помочь мне понять вас, заполните этот опрос (анонимно)

Небольшие фрагменты о технологиях, искусственном интеллекте и машинном обучении здесь

Ознакомьтесь с другими моими статьями на Medium. : https://rb.gy/zn1aiu

Мой Ютуб: https://rb.gy/88iwdd

Свяжитесь со мной в LinkedIn. Подключаемся: https://rb.gy/m5ok2y

Мой Инстаграм: https://rb.gy/gmvuy9

Мой Твиттер: https://twitter.com/Machine01776819