Прошла еще неделя, и мы уже прошли 1/3 курса. Довольно страшно на самом деле. Эта неделя, несомненно, была самой сложной, нужно было усвоить много информации, а часов в сутках было мало. Темой этой недели были базы данных — как их создавать и как ими манипулировать. Хотя это звучит не так уж и много, это было похоже на открытие банки с червями, и каждый червяк извергает новых червей…

"давай сделаем базу данных"
"о, мне нужно использовать Postgres"
"что такое Postgres?"
"о, это реляционная база данных"
"что такое реляционная база данных?»
«о, она использует реляционную модель данных»
«что такое реляционная модель данных?»

и т. д. и т. д.

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

Несмотря на вышесказанное, настоящим вызовом недели стали не материалы проекта. Среда принесла с собой ад, которого я еще не испытал, и то, что я теперь буду называть Товарным поездом ошибок (чу-чу). Мы с напарником отлично начали, мы выполнили первое упражнение дня. Но когда мы начали следующий, мы столкнулись с ошибкой с установленным драгоценным камнем. Эта ошибка сопровождалась гигантской трассировкой стека, которую нам было очень трудно расшифровать, поскольку она ссылалась на всевозможные вещи, с которыми мы не были знакомы. Много запутанных статей StackOverflow и Gem Documentations позже, нам удалось решить эту проблему, но нас встретила совершенно новая ошибка. Этот процесс повторялся ВЕСЬ ДЕНЬ. Это было грубо.

Теперь я провел последние 7 лет, работая из дома большую часть времени. Когда я расстраивался, я просто отдыхал. Я мог спрятаться в своей комнате, включить телевизор, поиграть в игру или, может быть, если я чувствовал себя особенно авантюрным, даже выйти в реальный мир. Я не могу сделать это здесь. Меня окружают коллеги, и у меня нет личного пространства, куда можно было бы уединиться. У меня также есть партнер каждый день, и я чувствую себя частично ответственным за их обучение. Я не хочу, чтобы моя пара чувствовала, что я их сдерживаю — я хочу, чтобы они чувствовали, что у них был продуктивный и поучительный день! Так что, когда среда подходила к концу, я чувствовал себя довольно паршиво не только потому, что мой прогресс в еженедельном проекте остановился, но и потому, что они тоже. Грузовой поезд «Ошибка» испортил мне день и оставил чувство неудовлетворенности, разочарования и беспокойства. Я просто хотел побыть один.

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

Итак… в мельчайшие детали… что я узнал на этой неделе?

Я чувствую, что должен перефразировать то, что НЕ узнал на этой неделе. Мы начали из-под капота — используя Postgres и возясь с сырым SQL. Мы создали пару баз данных, добавили/обработали/удалили данные, а затем уничтожили улики, когда закончили. Мне всегда нравится делать что-либо в терминале, потому что вы чувствуете себя таким l33t h4XX0r, когда вы там играете, так что эта конкретная часть еженедельного проекта была вполне удовлетворительной. Как только мы были счастливы, что поняли, что делает SQL, мы перешли к Object Relational Mappers (ORM) — инструментам, используемым для взаимодействия с базами данных, так что вам на самом деле не нужно копаться во всем этом SQL. По сути, они делают процесс более удобным для пользователя и позволяют вам сосредоточиться на своем коде, а не на знании правильного SQL. Лично мне нравилось возиться с самим SQL, но я понимаю, что в большинстве случаев это далеко не практично.

Отсюда мы перешли к установке и настройке различных стоечных сред для работы (тестирование, разработка и производство), очистке баз данных (чтобы многократный запуск тестов не заполнял их нежелательными данными) и развертыванию приложение к Хероку. Все эти шаги могут показаться довольно простыми, но все они требуют много исследований и экспериментов с вашим кодом, если вы хотите понять их правильно, поэтому для нас каждый из них занял много времени. Было бы намного проще просто следовать пошаговым инструкциям, предоставленным MA, и действительно, многим из нас приходилось прибегать к ним, чтобы закончить определенные упражнения, но здесь все разделяют одно и то же отношение — мы знаем, как ценно понимать внутреннее состояние. работы того, что мы делаем, и поэтому мы все нашли время, чтобы добавить дополнительную работу.

Одна из самых распространенных проблем, с которыми я сталкивался на этой неделе, заключалась в том, что я не знал, с чего начать просмотр документации. В нашем коде мы взаимодействовали со многими вещами — DataMapper (ORM), Очиститель базы данных, Heroku, Rake (Make for Ruby), BCrypt (инструмент для шифрования паролей) — все эти вещи имеют документацию. чтобы помочь вам настроить их и использовать надлежащим образом. Это все здорово, очень полезно… если вы знаете, какие части документации вам нужно просмотреть. Для некоторых из них было так много вариантов настройки, и те, которые вы используете, зависят от вашей среды и других инструментов, которые вы используете. Может быть, это просто мои глаза новичка, неопытного в прочесывании таких материалов, но мой мозг вошел в полный сумасшедший режим, и я не мог выбрать то, что мне нужно. Это были времена, когда я полагался на пошаговые руководства MA, которые удобно извлекали всю необходимую информацию. Очевидно, сначала я сам попробовал это сделать и убедился, что понял, почему пошаговое руководство выбирало информацию, которая была, но это был долгий процесс. Надеюсь, я стану более опытным в этом довольно быстро, поскольку MA предложит нам больше новых и интересных инструментов.

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