Погружение в окончательный проект в Makers

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

Звучит относительно просто… но подумайте еще раз! Мы решили создать приложение, используя совершенно новые инструменты, ни один из которых не был рассмотрен в ходе курса. Мы пишем его на внутреннем JavaScript, используя Node, Express в качестве веб-фреймворка и MongoDB в качестве базы данных.

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

Понимание славянского, когда вы говорите на латыни

Первое осознание из всего этого обучения заключается в том, что иногда вам нужно забыть то, что вы уже знаете. Так заманчиво, когда изучаешь что-то новое, проводить параллели с тем, что знаешь. Мы занимались этим всю неделю — Экспресс — это Синатра, NPM — это Бандлер, EJS — это ERB.

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

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

Много способов, но не так много, как лучше

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

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

Мы начали с поиска в Google таких вещей, как «шаблоны проектирования узлов», но быстро поняли, что, возможно, вам придется пойти немного по старой школе (с книгами и опытом), чтобы найти лучший способ сделать что-то. В конечном счете, Интернет может помочь вам взломать свой путь, но он не может быть единственным ресурсом.

Очевидно, интернет не любит тесты

В том же духе мы также обнаружили, что Интернет не так протестирован, как нам хотелось бы. Как уже отмечалось, одним из лучших методов, которым поделились Makers, является TDD. TDD — это, по сути, идея, что вы пишете тесты перед кодом и позволяете тестам управлять вашим дизайном. Нам нужно было написать тесты.

Однако библиотеки тестирования специфичны для инструментов, используемых приложением. Итак, с новым набором инструментов появился новый набор тестовых библиотек, таких как Mocha, Chai и Zombie — и это лишь некоторые из них. Проблема заключалась в том, что документации по использованию этих библиотек было мало.

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

В море обещаний и отзывов

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

Когда, например, JavaScript должен получить некоторые данные из базы данных, он запускает их и переходит к чему-то другому, пока данные не будут возвращены. И до тех пор, пока данные не будут получены, эта переменная будет оцениваться как «ожидание обещания». (Или, по крайней мере, это мое текущее понимание).

Известно, что это сложная область программирования. Но нам было важно понять, чтобы наши тесты работали. Если мы хотим проверить, что база данных работает правильно, нам нужно заставить JavaScript ждать разрешения промиса, чтобы мы могли проверить его правильность. Трудный!

Возможность плавать без стабилизаторов

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

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

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