Почему фронтенд-разработка такая нестабильная?

внешний интерфейс JavaScript Программа перевода самородков React.js

Все мы знаем анекдот: к тому времени, когда вы изучаете одну передовую технологию, три другие новые технологии уже выпущены. Не только это, но и тот, который вы только что узнали, также устарел.

Мы не часто видим объяснение, почему это так.

Типичное объяснение (от redditr/programmingканала), которое, кажется, коррелирует с врожденным нетерпением разработчиков интерфейса, погоней за популярностью и ограниченными возможностями, это объяснение представляет собой более общую ошибку: предположение, что поведение, которое вы не понимаете, вызвано глупостью, злобой или жадностью вся группа (И ваше собственное неразумное поведение полностью вызвано факторами, находящимися вне вашего контроля).

Ошибка это или нет, но у нас есть эта проблема, верно?

проблема количественного определения

Прежде чем сбиться с пути, необходимо определить, действительно ли этот вопрос имеет под собой реальную основу. Действительно ли фронтенд-технологии меняются быстро?

С точки зрения основной (или нет) технологии, рассмотрите этоGithubВ рейтинге передовых технологий JavaScript «высокая звезда»:

+------------------------------------------------------------+
| 库               | Star 数  | 发布时间        | 年龄      |
|------------------------------------------------------------+
| React            | 96986   | 2015 年 3 月    | 3 年      |
| Vue              | 95727   | 2015 年 10 月   | 2.5 年    |
| Angular (1)      | 58531   | 2010 年 10 月   | 7.5 年    |
| jQuery           | 49061   | 2006 年 8 月    | 11 年     |
| Angular (2+)     | 36665   | 2015 年 12 月   | 2.5 年    |
| Backbone         | 27194   | 2010 年 10 月   | 7.5 年    |
| Polymer          | 19668   | 2015 年 5 月    | 3 年      |
| Ember            | 19003   | 2011 年 12 月   | 6.5 年    |
| Aurelia          | 10506   | 2016 年 6 月    | 2 年      |
| Knockout         | 8894    | 2010 年 7 月    | 8 年      |
+------------------------------------------------------------+

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

React и его друзья

Вероятно, вызвано React. Как мощный инструмент, он нуждается в ряде вспомогательных модулей и вспомогательных библиотек для поддержки, и это проблема. То, что я называю «архитектурой микробиблиотек» в экосистеме React, огромно, и ее приложение состоит из бесчисленных дискретных одноцелевых библиотек JavaScript дляФилософия Unixотдать должное.

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

Это также является сутью моего аргумента: проблема заключается не в самом языке JavaScript[1], сети или какой-либо конкретной технологии, а в плохой «архитектуре выбора», которая заставляет разработчиков гнаться за тенденциями.

проблема с нпм

NPM — это самый большой актив современного JavaScript и его самый большой недостаток. Он предоставляет богатый набор модулей для удовлетворения практически любых конкретных потребностей, но эти модули сложно фильтровать и управлять ими. Какие модули на самом деле поддерживаются? Какие модули действительно имеют правильную функциональность? Какие модули не являются просто переносчиками вредоносных программ? Метод выбора, который действительно используют разработчики JavaScript, — это популярность — количество загрузок по сравнению с количеством звезд на Github, что, безусловно, подпитывает дух погони за трендами.

Конечно, есть и другие способы идентифицировать библиотеку: вы можете просмотреть список проблем библиотеки на Github и найти проблемы в StackOverflow. Вы также можете выполнить некоторые тесты или даже проверить исходный код самостоятельно (в большинстве случаев). Но эти методы отнимают много времени, а при выборе такого гаджета, как модуль парсинга даты, нет необходимости заниматься этими трудоемкими делами.

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

Представьте себя младшим инженером

Напишите новое приложение в первый раз с точки зрения разработчика JavaScript от начинающего до среднего.

Сначала ты был наивен. Ваш проект очень чистый, и вы хотите, чтобы все было просто, вы набожный агилист, и YAGNI (вам это не понадобится) — ваша крылатая фраза. Итак, вы начинаете с «простой структуры». Это приятно, правда? (Даже если это неприятно, часто это единственный выход).

Как базовый фреймворк он мало что может, поэтому на вас ложится бремя выбора вспомогательных библиотек. Если вы работаете над интерфейсом, вероятно, это вспомогательная библиотека Redux для форм и запросов API. Если это серверная часть, то это, вероятно, промежуточное ПО Express[2].

Если вы выполните поиск в Google, вы найдете настоятельно рекомендуемыйX.jsСтатья на Медиуме. Позже нашел эту статьюX.jsавтором, хотя она никогда не заявляет о конфликте интересов (она предоставляет jar-файл GitTip). Не все статьи на Medium выглядят одинаково, поэтому нельзя полагаться на «бренд» для определения авторитетных материалов.

вы упустили некоторые моментыX.jsФатально ошибочные обзоры, потому что Medium намеренно их скрывает, а вы идете и находите одинY.

На этот раз вы нашли ссылку в Твиттере с более чем сотней сердечек! Думаю, это хороший знак, потому что Twitter «курируется» сообществом, которое знает больше, чем вы. Вы также нажимали сердечки в знак благодарности (как 100 или около того раньше) и переходили по ссылке на Github.

Дела пошли не так быстро. Эта ссылка устарела - библиотека устарела. Вы найдете это, потому что на всей страницеDEPRECATEDСлово, как в тематическом парке СнупиCONDEMNEDЛоготип (Примечание переводчика: тема из фильмов о Снупи).

ты находишьY.jsявляется «объектно-ориентированным». Вы смутно помните, что узнали об объектно-ориентированных языках программирования и коммуникациях, будучи новичком в области компьютерных наук, и думаете, что это хорошо. Но очевидно, что это отстой.

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

Стало хуже. В статье утверждается, что упоминание ООП (объектной ориентации) в интервью по JavaScript также не принесет вам предложения! Вы сейчас совершенно сбиты с толку. К счастью, решение есть — авторский курс разработки JavaScript за 50 долларов. Вы записали ссылку на курс, и почувствовали, что Sansheng посчастливилось найти этот курс, и хлопнули в ладоши (19 001-й хлопок в этой статье) в знак благодарности, комплимента).

Итак, вы нашли звездный проект на Github.Z.js, хотя его документация не выглядит полезной. В документации просто перечислено множество методов, как их использовать.Z.jsШерстяная ткань? по крайней мере увидетьZ.jsВоспользовавшись чем-то под названием «Стандартный JS», который, по вашему мнению, связан с комитетом по стандартам ECMA, обновился. Однако никакой связи между ними нет.

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

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

То, что должно быть сделано?

Как и люди, рожденные жаловаться, я лучше жалуюсь на проблемы, чемрешитьвопрос. Но у меня есть несколько идей:

Относитесь к среде с осторожностью

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

Будьте осторожны с «самосовершенствованием»

В последние несколько лет наблюдается более агрессивная самореклама в пространстве JavaScript, что может быть связано с увеличением количества платного онлайн-контента и преимуществами того, чтобы быть «влиятельным лицом» Github для трудоустройства / консультирования. В этом нет ничего плохого для людей, которые платят за хороший контент и довольны им, но все больше и больше людей прибегают к фейковой тактике: самоцитированию, придумыванию терминологии (чтобы поисковые системы вернули вас к статье автора) и названию спуфинг (например, «Standard.js»).

Рассмотрите архитектуру без микробиблиотек

Попытка начать проект с фреймворком, который предлагает богатые возможности и не нуждается в дополнительных плагинах для повышения эффективности, немедленно уменьшит количество изменений модулей и неожиданных изменений. это я тожеVue.jsОдна из причин интереса. Вы также можете сделать что-то вродеNextТо же самое с использованием React как части стартового набора или более крупного фреймворка.

Не беспокойтесь слишком о занятости

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

Примечания

[1] В этой идее очень много ошибок.

[2] Можете ли вы поверить, что Express нуждается в промежуточном программном обеспечении для анализа запросов POST в формате JSON? Извините, Express делает именно это.

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


Программа перевода самородковэто сообщество, которое переводит высококачественные технические статьи из Интернета сНаггетсДелитесь статьями на английском языке на . Охват контентаAndroid,iOS,внешний интерфейс,задняя часть,блокчейн,товар,дизайн,искусственный интеллектЕсли вы хотите видеть более качественные переводы, пожалуйста, продолжайте обращать вниманиеПрограмма перевода самородков,официальный Вейбо,Знай колонку.