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

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

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

Учебный лагерь, который я проводил, был посвящен фронтенд-разработке. Основными темами, которые мы рассмотрели, были HTML/CSS, vanilla JS, React и Express. Мы затронули реляционные базы данных и несколько других более мелких тем, таких как тестирование, размещение/развертывание и git, но не они были в центре внимания.

Мне понравилась эта структура, начиная с HTML/CSS, по нескольким причинам:

  1. Начало работы с HTML/CSS дает прочную основу для младших ролей в веб-разработке, а также для более сложных интерфейсных фреймворков и библиотек.
  2. Я думаю, что было легче изучать React, когда мне не приходилось тратить много времени или усилий на макет страницы/стили для каждого из моих проектов. Основа здесь позволила мне сосредоточиться на более сложных концепциях JS, которые я изучал.
  3. Без этих навыков работать на фронтенде невозможно. Знаете что еще? Большинство младших ролей сосредоточены на разработке внешнего интерфейса или являются исключительно ролями внешнего интерфейса. Вам потребуются эти навыки.

Мы продолжили это с vanilla JS. Я подумал, что было бы полезно увидеть, как JS взаимодействует с DOM без крупного фреймворка или библиотеки, потому что это дало понимание работы, которую эти фреймворки и библиотеки упрощают. Вы понимаете, насколько сложно получить список данных и отобразить его на экране, не говоря уже о редактировании этой таблицы (или любого другого контекста). Когда мы перешли на React, я оценил, как React упростил работу по рендерингу данных из API или разбивке страницы на компоненты.

Наконец, поработав с React и используя данные API, мы узнали об экспрессе и о том, как настроить сервер, чтобы предоставлять собственные данные через REST API. Это была одна из тем, с которыми я больше всего боролась, но она также была и моей любимой. Мне нравилось узнавать, как предоставлять данные через REST API, потому что это, казалось, открывало двери для того, что могло делать мое внешнее приложение. Конечно, я использовал только данные JSON (а о БД мы узнаем позже, как я уже упоминал), но тот факт, что теперь мы могли контролировать данные, отправляемые на страницу, меня очень заинтриговал.

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

Когда я ушел из буткемпа, там было несколько технологий — языки, фреймворки, библиотеки и т. д. — которые я хотел изучить и изучить. Год подходил к концу, и вышел новый State of JS. Оптимизм и волнение от завершения программы подняли мне настроение, и я с нетерпением ждал возможности учиться самостоятельно.

Я думал о том, чтобы изучить TypeScript — изучение типизированного языка могло бы дать хороший опыт, продолжая изучать JS в процессе (плюс это было все больше и больше). Я подумал о GraphQL — к нам пришел докладчик и рассказал об этом, и у меня сложилось впечатление, что он эффективно заменит REST API. Я хотел глубже изучить Mongo, а также найти время для понимания реляционных баз данных. Мне нравилось думать о лучших типах структур для хранения ваших данных. Я даже подумывал о том, чтобы попробовать Python — у него есть Django и Flask, плюс я знаю, что с его помощью можно много заниматься наукой о данных.

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

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

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

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

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

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

Первым большим шагом было более глубокое погружение в MongoDB и лучшее понимание реляционных БД. Я тоже не тратил много времени на обучение, но немного изучил оба. Я посмотрел достаточно, чтобы понять основы теории. В целом, это было довольно полезно, но в тот момент это было не так. Я использовал оба с тех пор в контексте моей работы. В обоих случаях я был счастлив, что потратил время на изучение основ, потому что это позволило мне быстро освоить функциональное понимание. Было ли это похоже на пустую трату времени в данный момент? Конечно. Был ли я в лучшем положении, чем другие коллеги, у которых не было ничего опыта ни с тем, ни с другим? Конечно. В этом смысле я нашел ценность в ограниченном времени, которое я потратил на понимание основ баз данных.

GraphQL — еще один большой, так как он быстро растет. Разве нам всем не сказал кто-то, что REST умирает и GraphQL заменит все это? Было большое желание разобраться, но времени не было. К счастью, это не вызвало у меня серьезных проблем. Я познакомился с типизированным языком в TS, а это значит, что мне было комфортно с этими концепциями, и, кроме того, мой опыт показал, что GraphQL на самом деле довольно легко понять. Конечно, тут и там есть подводные камни, но если вы не являетесь основным драйвером GraphQL в своей команде, разобраться не так уж и сложно.

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

Оглядываясь назад, легко посмотреть на все доступные технологии и составить для себя список, который слишком велик для того, чтобы кто-либо мог его разумно изучить — или, по крайней мере, хорошо изучить. Я хотел подчеркнуть простой факт: прогресс лучше совершенства.

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

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