Итак, третья неделя подошла к концу, и я бы сказал, что она была самой приятной и продуктивной. Я признаю, что немного расслабился в понедельник/вторник — уютно устроился в гнезде из одеял, пил чай, смотрел Звездный путь и играл в Codewars. Тем не менее, мне удалось выполнить несколько ката 4кю, чем я очень гордился, так как в то время у меня был ранг 6кю. Я также должен был сделать еще несколько этих причудливых регулярных выражений — я знаю, что вы испытываете чувство мини-победы, когда ваш код работает так, как вы надеялись, но я клянусь, что получаю дополнительный импульс, когда я достигаю одной из этих вещей.

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

Так или иначе, основная рабочая нагрузка на этой неделе заключалась в создании каталога учеников — списка учеников вымышленной школы, который можно редактировать, отображать с различными фильтрами, сохранять и загружать — и все это в командной строке. М.А. предоставил нам подробные инструкции о том, как это сделать, что очень мягко помогло нам разобраться во всем этом. В то время как мой файл в конечном итоге содержал около 250 строк кода, он начинался всего с 13 строк. Правда, поначалу инструкция была немного скучной. Такое ощущение, что каждую неделю мы возвращаемся к первой странице Ruby для чайников — это строка, это массив, это переменная, это моя воля к жизни и т. д. Это не самое веселое в мире , но, по крайней мере, все просверливается. Самое интересное пришло, когда нам дали наборы упражнений для отработки. Я вернулся к Google и StackOverflow, чтобы решить некоторые из них, а другие мне удалось решить, вернувшись и просмотрев код, который я написал ранее (например, в рамках руководств по Ruby или в ката Codewars).

Я действительно столкнулся с несколькими сбоями здесь и там, в основном с новыми элементами синтаксиса, которые я изучал (открытие/закрытие файлов и использование библиотеки CSV), но ничто не задержало меня слишком надолго. В целом мне понравился ровный темп инструкций, вводящих только одну вещь за раз. Если бы я в самом начале видел, что собираюсь сделать, я бы никогда не подумал, что действительно смогу это сделать. Разбив программу на серию маленьких шагов, я понял каждую строчку написанного кода. Тем не менее, когда я смотрел на конечный продукт, у меня было знакомое пугающее чувство. Мысль о написании чего-то подобного без такого руководства по-прежнему кажется непосильной задачей. Я предполагаю, что это всего лишь часть приключения в обучении программированию, но одно дело изучить синтаксис, а другое — научиться мыслительному процессу, необходимому для успешного разработчика.

На самом деле мы еще не дошли до того, что нам давали советы от MA о том, как подходить к задачам, большим, чем ката Codewars, но я начал читать Poodr, и у меня сложилось впечатление, что эта книга очень поможет мне с как думать сторона обучения кодированию. Первая глава на самом деле очень хорошо сочеталась с этим недельным заданием, на самом деле я писал заметки о том, как улучшить свой код, пока читал его. Например, во время работы со студенческим каталогом я некоторое время думал, почему мои функции должны быть реорганизованы так, чтобы каждая из них была всего лишь несколькими строками кода, которые выполняли только одну маленькую функцию — это не помогало мне лучше усвоить материалы, а код и так уже работал, зачем его менять!? Но после прочтения некоторых основ объектно-ориентированного проектирования (ООП) все стало ясно. Каждая функция, имеющая единственную ответственность, значительно упрощает адаптацию и изменение программы в более поздние сроки, как я обнаружил, когда добрался до последних упражнений. Опытному разработчику это может показаться здравым смыслом, но для новичка вроде меня это ценный совет.

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

Наконец, это была неделя, когда я был вынужден нажать на кнопку и отправить большую часть содержимого моего банковского счета в МА. Это было… немного страшно. Стоимость курса полностью оплачена, и я занимаюсь им до выпускного. Но… что, если у меня нет того, что нужно? Что, если я пройду половину пути и пойму, что это не то, чем я хочу заниматься в карьере? Удивительно, как можно быть таким уверенным в себе в одну минуту, а потом мысль о том, чтобы взять на себя обязательство, вызывает панику. Так что мне просто нужно постоянно напоминать себе об одном — даже когда все это отстой, когда я расстроен, когда я не могу исправить ошибку, когда мой разум не может понять концепцию, и когда я искренне сомневаюсь, что Я могу сделать это — я не хочу останавливаться. Я променял свои вечерние игровые сессии на программирование на диване не потому, что мне нужно наверстать упущенное, а потому, что мне это нравится. И это чувство, которого я никогда не испытывал ни с чем другим, что я сделал.