Также доступно на https://benjackwhite.co.uk/ive-built-something-today/

Этот пост я написал несколько лет назад и нашел в своих черновиках. Я думал удалить его, но понял, что в 2021 году, сколько бы лет ни прошло, он по-прежнему актуален, так что кому он может пригодиться — наслаждайтесь. Для тех, кто хочет вспомнить прошлое — я упоминаю Angular 1.x и магистраль как «недавние» 😉

Среди различных каналов программирования, которые я слежу, будь то Stackoverflow, r/programming, Twitter или просто друзья, заинтересованные в том, чтобы начать работу или улучшить свои навыки Javascript, я постоянно натыкаюсь на вопрос — какой фреймворк мне следует использовать?. Сначала я пытался (по глупости) продемонстрировать свои превосходные знания, восклицая Вы не можете сравнивать Angular с React… React — это просто представление… все, что вам нужно, — это Backbone… MVC мертв — да здравствует Flux. С каждым днем ​​я добавлял пламя в бурные дебаты о фреймворках, инструментах сборки, прекомпиляторах и стеках. Я тоже не считаю, что поступил неправильно. Это правильное обсуждение, которое фронтенд-разработчики должны постоянно вести, чтобы узнавать о хорошем, отсеивать плохое и приукрашивать уродливое. Проблема в том, что на самом деле это не то обсуждение, которое искал первоначальный постер…

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

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

Изучайте JavaScript, а не фреймворки

Я не первый, кто говорит это, но этот момент часто теряется в шуме — изучение фреймворков — это не путь к тому, чтобы стать хорошим разработчиком, а создание приложений. Мое первое веб-приложение было многопользовательской DAW в реальном времени, полностью созданной с использованием новых (в то время) технологий, таких как Web Audio API и веб-сокеты, и все они работали на NodeJS. Оглядываясь назад на мой код, вы можете ясно видеть мой прогресс, двигаясь от невероятно последовательного кода, пронизанного условиями гонки, к хорошо абстрагированным, повторно используемым компонентам, которые (неосознанно) напоминали некоторые идеи, лежащие в основе фреймворков Model-View-* в других местах. Это было некрасиво, но это был просто JavaScript — хорошо, и jQuery.

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

Это не значит, что я не использую фреймворки. Недавно я использовал Angular 1.x и Backbone для создания некоторых веб-приложений и небольших проектов, но, хотя я мог что-то построить быстро, я мало чему научился. Однако, благодаря хорошему знанию Javascript, изучение следующего еженедельного фреймворка не является пугающим предложением. Если моя команда решит пойти ва-банк с React или пойдет еще дальше и скажет, что нам нужно сменить язык и начать писать все на Rust или Go, тогда я буду копаться в своих пятах, выберу место назначения и начну учиться и строить. Мир веб-разработки (и, возможно, вообще разработки программного обеспечения) — это мир постоянных изменений, и если вы готовы принять этот факт, то жить в этом мире невероятно весело и полезно.

Практические следующие шаги

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

  1. Выберите проект, который вы хотели бы сделать, и не волнуйтесь, если это было сделано раньше
  2. Как только вы решили что-то построить, разбейте это на более мелкие части и начните писать код. Даже если первая неделя ничего не даст и вы в конечном итоге все забросите, вы так многому научились в этом процессе, и это невероятно ценно.
  3. Если вы собираетесь использовать фреймворк, просто выберите один и используйте его. В основном я использовал Angular 1.x и Backbone, у обоих есть множество обсуждений и руководств, из которых можно поучиться. Способность узнавать что-то новое гораздо важнее того, что вы знаете
  4. Как только вы что-то построили, оглянитесь на это критически и определите его недостатки — это даст вам подсказки относительно того, что вам нужно прочитать, чтобы улучшить
  5. Дерьмовый код, который что-то делает, намного лучше идеального кода, который этого не делает.

Моим особым фаворитом для людей, плохо знакомых с Javascript или программированием, является Superherojs.com, который красиво разделен на различные области интересов и представляет собой достаточно небольшую коллекцию полезных материалов, чтобы никого не перегружать. DailyJS — еще один фаворит, который к сожалению, подходит к концу, но в нем много отличных постов, которые помогут вам разобраться с различными сложностями, с которыми вы в конечном итоге столкнетесь.

TL;DR

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

«Я сегодня кое-что построил, что ты сделал?»