Закончил блок продвинутого Ruby в «Хорошем программисте»

Хочу сказать, что это было нелегко... Но о-о-очень круто!)))

Впечатления от Ruby и программы интенсива уместилось в несколько крупных блоков.

ООП и RubyWay

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

Меня он уже не так сильно пугает. Просто нужно больше практики и задач на ООП, чтобы прям обмазываться ими)

XML и(vs) JSON

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

По ощущениям JSON проще и удобнее, чем XML. Схожесть JSON с ассоциативными массивами близка к 100%. Читать и обрабатывать такие данные очень легко и приятно.

И вот насколько мне понравился JSON, настолько и не понравился XML. Сложно, запутанно, как-то всё через жопу... Работать с ним какое-то «мучение». У меня пока что ещё очень много вопросов по поводу гема Rexml (именно он читает XML и обрабатывает XML данные).

Этому вопросу нужно выделить отдельное время, чтобы по-лучше изучить.

Ещё разобрали SQL, но пока что поверхностно, глубоко не погружаясь в этот вопрос.

Тесты и RSpec

Наконец-то я пощупал тесты) Оказывается это совсем не страшный, а очень интересный и полезный инструмент. Тот кто придумал тесты — гений!)

Наверное, я уже никогда не забуду тот момент, когда написал и запустил свой первый автоматический, а затем ещё и интегральный тест. Почувствовал себя чуть ли не богом) Вот прям проникся идеей TDD. Классная штука!

Тесты действительно облегчают процесс разработки кода. Например, раньше, чтобы «протестировать» работают ли мои методы для самописных классов, мне приходилось писать их отдельно в irb или выносить в отдельный файл. И если он показывал свою работоспособность, то затем переносился в основной код. Это, мягко говоря, неудобно. С изучением RSpec можно сразу же к нужным методам написать свои тесты, а затем прогонять их, спокойно изменяя основной код и видя всю картину целиком.

Наблюдения по курсу и моей успеваемости

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

Проблема ещё и в том, что в целом программа обучения стала сложнее.

Какие-то вещи воспринять тяжелее, чем другие. Вопросы также вызывают сторонние гемы (библиотеки). Например, REXML — гем для работы с XML файлами. Не всегда документация написана понятным языком. Да, этот гем что-то делает, но как он это делает, мне не до конца понятно.

По-прежнему есть проблемы с ООП. Ещё не всегда ясно как реализовать ту или иную задачу. То есть, алгоритм её решения есть, но как это технически реализовать не понимаешь. Лезешь в документацию или гуглишь, что-то делаешь... не получается... снова гуглишь.

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

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

Самое главное — прогресс есть!

Я за эти полтора месяца узнал больше чем за последние полгода. Стал более уверенным в ООП (хоть и не всё понимаю). Чтобы улучшить свои знания и разобраться в этом вопросе, купил и читаю книгу Ruby. Объектно-ориентированное проектирование. После основной программы обучения, как закрепление практики, заходит просто отлично. Рекомендую!

Ещё недавно поймал себя на мысли, когда выполнял очередное домашнее задание, что мне очень нравится писать код. Я могу просидеть 4-5 часов над решением трудной задачи. И мне это не скучно, мне это не надоедает. А когда задачка решается — это такой кайф!)

Веб-разработка

Сейчас уже началась веб-разработка (основы HTML, СSS и JS), к которой я уже более-менее подготовлен. Эти задачи проходят пока легко и у меня есть время закрыть долги по прошлым домашним заданиям.

Ещё установил рельсы, задеплоил первое своё веб-приложение на heroku. В общем, всё по красоте)

В сухом остатке

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

В общем, курс — отличный, уроки — крутяцкие, преподаватели — молодцы!)

А я продолжаю вести наблюдение)

Поделиться
Отправить
Запинить
Популярное