Я просматривал курсы Launchschool после завершения основной учебной программы (общий обзор см. Здесь). Для получения дополнительной информации вы можете прочитать эту статью о том, чем я занимался после завершения основной учебной программы Launch School.

В этом посте я собираюсь пройти первые три курса в секции backend.

  • RB101 - Основы программирования
  • RB120 - объектно-ориентированное программирование
  • RB 130 - Основы рубина: другие темы

RB101 - Основы программирования

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

Этот курс является первой частью платной учебной программы Launch School и призван научить вас основам программирования на Ruby.

Педагогика Launchschool основана на идее, что не имеет большого значения, какой язык программирования вы изучаете, когда начинаете, когда изучаете «вещи, которые не меняются». Мне напомнили об этом при обзоре RB101. Я не использовал Ruby в течение последних 18 месяцев, но материал здесь все еще был мне очень знаком. Понимание того, как подходить к проблемам, в значительной степени зависит от языка, и я никогда не переставал использовать то, что узнал в RB101.

Возвращение в Ruby после JavaScript

Когда я вернулся к этому курсу, я понял, что мои навыки Ruby были чрезвычайно ржавыми. Я не использовал Ruby с тех пор, как закончил RB170 почти 18 месяцев назад! Launchschool советует учащимся поддерживать уровень владения Ruby, регулярно просматривая предыдущий материал и решая задачи кодирования. Я этого не делал, и это было видно. Этот пост от ученика Launchschool описывает некоторые передовые практики в этом отношении (которым я определенно не следовал).

Когда я начал изучать JavaScript в курсе JS210, он мне совсем не понравился. Не было ни одного из тех удобных методов, которые я полюбил (как я скучал Array#uniq! Как я тосковал по классу Range!), И код выглядел беспорядочным (столько скобок!) Но теперь, вернувшись к Ruby, я понял, что JavaScript полностью овладела моим мозгом, и я многое забыл о Руби.

Это было немного неловко. В моем резюме написано, что я только что закончил онлайн-школу, специализирующуюся на Ruby, но я в ней довольно ржавый. Это не то, о чем я трачу много времени. Если мне нужно выучить Ruby, я уверен, что смогу быстро выучить его снова (используя обучение Just In Time).

Сравнение Ruby и JavaScript

Когда я изучил синтаксис JavaScript в курсе JS210 (Вычислительное мышление и программирование на JavaScript), я обнаружил, что постоянно сравниваю с Ruby, думая, насколько странным был этот новый язык. Теперь я проходил этот процесс в обратном порядке, и Руби казалась странной. Например, меня удивило, что в Ruby переменные, определенные во внешней области видимости, недоступны в области видимости функции (единственный способ передать переменную в определение метода в Ruby - передать ее в качестве аргумента).

Насколько мне понравился курс в первый раз?

Мне очень понравился RB101. Решение проблем с кодом - моя любимая часть программирования. Этот курс посвящен тому, чтобы научить вас делать это на Ruby, который является действительно хорошим языком. Принимая во внимание только удовольствие от прохождения курса (а не то, насколько он может быть полезным / сложным), я бы дал ему:

Фактор удовольствия: ⭐️ ⭐️ ⭐️ ⭐️ ⭐️

Какая была оценка?

Оценка курса состояла из двух частей: письменного и живого собеседования по кодированию. Я был изрядно ушиблен письменной частью. У меня диплом по литературе, и за эти годы я много писал. Я был почти уверен, что мои навыки письма лучше, чем навыки программирования. Когда я получил оценку, меня зацепила неряшливость моего языка. Это был пропуск, но только справедливый! Это действительно убедило меня в высоких стандартах языковой точности, которые Launch School требует от своих учеников. Это урок, который я никогда не забывала.

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

RB 120 - объектно-ориентированное программирование

«Объектно-ориентированное программирование лежит в основе Ruby, и в этом курсе мы будем работать над демистификацией объектно-ориентированного программирования и того, как писать код в объектно-ориентированном стиле. Мы рассмотрим такие темы, как наследование и инкапсуляция, и поймем суть программирования на Ruby. Вам будет предложено отладить и разработать несколько нетривиальных объектно-ориентированных программ ». - РБ 120 Резюме

В моей голове RB101 и RB120 - это почти одно и то же. Они оба существуют в прекрасном обнесенном стенами саду решения проблем в Ruby, прежде чем любая из мрачных реалий разработки программного обеспечения в реальном мире выйдет из строя в виде HTTP, баз данных, менеджеров пакетов и CSS.

Это первый курс, в котором мы начинаем создавать более крупные программы, такие как объектно-ориентированные крестики-нолики, и должны начинать рассматривать такие хитрые вещи, как структуры данных.

Углубляясь в язык

Многие RB120 углублялись в Ruby. Умение быстро выучить язык в глубину - ключевая часть работы разработчика программного обеспечения. В настоящее время я изучаю Python, и, изучив два языка сценариев в Launch School, я определенно думаю, что изучаю его быстрее, чем в противном случае. Это главным образом потому, что я знаю, на какие функции нужно обращать внимание. Я умею задавать такие вопросы, как: как работает область видимости переменных в Python? Переменные передаются по ссылке или по значению в Python? Изучая третий язык, мне также удобнее думать, что разные языки действуют по-разному. Когда я изучал свой второй язык (JavaScript), мой мозг сначала довольно много отклонял из того, что мне говорили, просто потому, что в Ruby все было не так.

Для меня это показывает, насколько полезно потратить время на освоение Ruby, даже если вы никогда не перестанете использовать его на профессиональном уровне.

Объектно-ориентированный рубин

Повторное чтение материала RB120 заставило меня много задуматься о концепциях ООП, которые мы изучали в JS225 (объектно-ориентированный JavaScript).

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

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

Объектно-ориентированный Ruby против объектно-ориентированного JavaScript

Во время перехода на RB120 я понял, насколько проще объектно-ориентированное программирование в Ruby, чем в JavaScript. Большая часть умственной борьбы JS225 (объектно-ориентированный Javascript) связана с пониманием причудливых способов, с помощью которых JS пытается реализовать структуры на основе классов. Проходить через это снова в Ruby было все равно, что плавно плыть по спа-бассейну, пробираясь через холодное болото объектно-ориентированного JavaScript.

Насколько мне понравился курс?

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

Фактор удовольствия: ⭐️ ⭐️ ⭐️ ⭐️

Какая была оценка?

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

130: Основы Ruby: Дополнительные темы

«Этот курс будет охватывать некоторые специфические аспекты языка программирования Ruby. Мы специально рассмотрим блоки и библиотеку тестирования Minitest ». - Резюме RB130

RB130, безусловно, один из самых коротких курсов, он посвящен «основам» разработки приложений. Это, наверное, никому не любимое блюдо.

Перед тем, как я рассмотрел RB130, я списал его на множество вещей, которыми не пользовался с тех пор, как изучил его. Однако, просматривая его, я понял, что, хотя с тех пор я не использовал RubyGems (менеджер пакетов Ruby) или Minitest (среда тестирования Ruby), я использовал npm (менеджер пакетов JavaScript) и Jest (среда тестирования JavaScript). . Несомненно, их было легче изучить, потому что я хорошо понимал смысл этих инструментов.

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

Насколько мне понравился курс?

Просматривая свой отзыв, который я отправил к курсу, я сказал в то время: «Мне это показалось немного скучным по сравнению с некоторыми другими курсами». Увы, дни, когда я уделял внимание проблемам программирования на Ruby, остались позади. Даю это:

Фактор удовольствия: ⭐️ ⭐️ ⭐️

Какая была оценка?

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

Следующие шаги

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