Вместо предисловия

Привет !

Добро пожаловать на мой курс по разработке на Ruby. В данном курсе я постараюсь научить тебя писать код на Ruby, работать с базой данных, писать Web приложения с использованием фреймворка Rails. Скорее всего большая часть слов тебе будет непонятна, но не переживай, это нормально. По ходу курса я постараюсь сделать так, чтобы у тебя не осталось вопросов по синтаксису языка, терминологии и задачах, которые тебе предстоит делать на своей первой работе. Но прежде чем начать я хочу обозначить правила этого курса, которым ты должен следовать.

Правила взаимодействия между учеником и учителем

  1. Нужно знание английского. Это основа основ. Большая часть материала написана или записана на английском языке. На большинство тем в русскоязычном сообществе просто напросто отсутствует информация. От тебя не требуется знать английский на уровне носителя, или уметь говорить на нем. У тебя должен быть достаточный словарный запас, чтобы уметь читать англоязычный текст по диагонали и понимать его суть + переводчик для отдельных слов/предложений.

  2. Это курс нацелен на самостоятельную работу прежде всего, так как я не могу заниматься full-time менторингом. Если хочешь получать Realtime поддержку, то обрати внимание на платные курсы, возможно они тебе помогут лучше. Этот курс нацелен на развитие в тебе самостоятельности, так как любой материал или ответ на вопрос, который ты будешь находить сам, даст тебе гораздо больше, чем смогу это сделать я при всем моем желании.

  3. Этот курс нацелен на коммерческую разработку. Детям данный материал будет не интересен и к ЕГЭ или вступительным экзаменам он их не подготовит. Ьак как здесь разбирается материал необходимый для реальной работы, то его целевая аудитория это взрослый человек, готовый через пол года обучения выходить на работу.

  4. Я не буду отвечать на все твои вопросы. Я обычный человек и разработчик у которого и так хватает личных дел. Объяснять самому каждую тему с 0 до 100 это очень затратно как по силам, так и по времени. Если ты прекращаешь обучение и понимаешь, что это не для тебя, то я не хочу жертвовать напрасно своими силами. Твои проблемы — это прежде всего твои проблемы. Но и отказываться от помощи новичку я не могу, так как прекрасно понимаю насколько это может быть тяжело в самом начале. Поэтому держи свод правил по подсказкам:

    1. Сначала ты читаешь мой краткий экскурс по теме, после этого смотришь дополнительный материал, который я приложил. Если ты все равно что-то не понял или понял, но не до конца и у тебя остались вопросы, то ты идешь в Google и пишешь свой вопрос туда. Важно помнить про пункт 1. Google имеет под капотом оптимизацию для разработчиков. В зависимости от вопроса он будет в первую очередь искать на профильных сайтах информацию и с 90% вероятностью находить ответ на твой вопрос. Но все это работает только в том случае, если вопрос составлен на английском. Если ты не можешь найти информацию, то пробуй обобщить свой вопрос и найти более расширенную информацию по своему вопросу. Также хороший метод для поиска это поиск по ключевым словам. Таким образом ты можешь получить гораздо большую выборку результата, которая с большой вероятностью будет совпадать с твоей проблемой либо напрямую, либо косвенно.

    2. Если ты не можешь найти ответ на свой вопрос, то воспользуйся чатами в телеграмме. Вот парочка полезных чатов, где сидят непосредственно рубисты: rubyschool, pro_rb. Важно уметь правильно задавать вопросы в таких чатах, так как люди, которые там сидят тоже любят экономить и ценить свое время. Подробнее можно ознакомиться с правилами тут: nometa

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

    4. В день я смогу отвечать только 1 раз сразу на все вопросы. Старайся задавать их только по необходимости и после того как пытался найти ответ самостоятельно, так как это может заметно снизить скорость твоего обучения из-за траты времени на ожидание ответа. Практика показывает, что если отвечать ученику 1 раз за день, то во время ожидания ученик успешно находит ответ самостоятельно.

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

    6. Если ты понимаешь что от тебя требуется, но не понимаешь как это сделать, то пункты выше про Google и чаты работает здесь точно также.

    7. Если ты все равно не понимаешь как сделать задание, то можешь написать мне на почту в формате HW-глава_курса Название_задачи. Тогда я смогу знать что это за задача и смогу оперативно тебе ответить.

    8. На вопросы по заданию действует точно такой же лимит как и на

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

Теперь когда ты ознакомился с правилами этого курса, то давай я объясню тебе почему они могут показаться жесткими. Да, в первую очередь я экономлю свое время. Если ты прекращаешь заниматься, то мои потери от твоего обучения, должны быть сведены к минимуму. Но экономия моего времени это не самая главная цель этих правил. Скорость твоего обучения, успехи твоей будущей работы напрямую зависят от твоей способности.

Теперь давай поговорим про структуру папок твоего кода. Каждая глава/модуль/задание помимо названия имеет свой идентификатор, который указывается в кавычках. Для того чтобы нам с тобой было проще ориентироваться в твоем курсе, мы будем создавать папки в древовидном виде, например глава 5 имеет идентификатор 5_file_system, 1 модуль имеет идентификатор 1_read_write_files, а внутри этого модуля есть задание с идентификатором folder_and_subfolder_files, значит путь до папки с заданием будет иметь вид: /5_file_system/1_read_write_files/folder_and_subfolder_files/. Что должно лежать в этой папке ? В этой папке могут лежать как несколько .rb файлов, так и только один. Любое задание предполагает наличие файла main.rb. Это будет точкой старта твоей программы для каждого задания. Каждый раз проверяя работу твоего кода я буду запускать непосредственно этот файл. Возможно ты не понимаешь что такое поток ввода, но я буду стараться тебе рассказывать про него каждый раз, когда у тебя могут возникнуть вопросы.

Темп обучения

Перейдем к темпах обучения. Любое обучение это тяжелый процесс впихивания большого объема знаний в твой мозг. Человеческий мозг не любит новую информацию. Даже если ее туда подавать, то он сделает все возможное, чтобы избавиться от этих знаний. Соответственно, чтобы этого не происходило нам нужно держать его постоянно в тонусе, нужно постоянно заниматься, постоянно думать и только тогда это даст плоды. Давай обозначим следующие периоды:

  • Минимальное кол-во перерыва между занятиями — 1 день. В идеальном мире я бы хотел, чтобы ты занимался каждый день, но такое сложно достичь. Если по какой-то причине ты не можешь заниматься 2, 3 или больше дней, то давай будет закладывать это как долг. Устроил перерыв 2 дня, значит следующие 2 дня ты без перерывов занимаешься. В таком случае ты не будешь чувствовать проблем с изучением чего-то нового, так как не придется тратить много времени на повторение старого.

  • Минимальное количество часов затраченных на курс — 4 часа. Работает по такому же принципу как и пункт выше. Возможно у тебя появится вопрос: а что считать за время потраченное на курс ? Это время, которое у тебя будет уходить на: прочтение материала, просмотр обучающих видеороликов, выполнение домашнего задания и тд.

Конечно, я не могу заставить тебя следовать этим периодам, да и нет желания тебя заставлять что-то делать. Это всего лишь цифра взятая по статистике от других разработчиков. Следуя этим таймингам ты, за вполне адекватный срок, станешь успешным разработчиком. Если ты не хочешь тратить на это так много времени, если ты хочешь потратить время на развлечения и отдых, то это твой выбор, но учитывай тот факт, что на работе без должной усидчивости ты не сможешь выполнять свои задачи, ты не сможешь получать удовольствие от своей работы. Деньги можно много где заработать, а если твоя работа для тебя неинтересна, то это принесет гораздо больше проблем, чем радости.

Рекомендации

Напоследок, давай поговорим почему этот курс вообще про Ruby, а не про Java, Python и тд. В ходе общения с разработчиками другого стека можно часто услышать мысль, что ruby мертв

  • во первых, Is Ruby Dead?

  • во вторых, работы в РФ на ruby более чем достаточно, язык и его экосистема продолжает развиваться, появляются новые инструменты, фичи и тд, а количество кандидатов на одну позицию гораздо меньше, чем на ту же Java или Python.

Ну и дам совет, который я на личном опыте испытал. Читай какую-нибудь книгу по ходу обучения. Какими бы курсы, статьи, видео не были хорошими, но любой их этих материалов имеет ограничение по продолжительности и объему, в связи с чем дать все знания они не могут тебе. Поэтому если у тебя есть желание стать профессионалом в этом деле, то рекомендую тебе обзавестись книжкой, которую ты будешь читать в свое мини свободное время, например по дороге на работу, в перерывах на работе, на обратном пути и тд. Если в какие-то из дни у тебя не получается заниматься, то тоже стоит читать книгу. В таком случае магия программирования превратится для тебя в определенную закономерность. А для того, чтобы не играть в угадайку при выборе книг могу посоветовать следующие варианты:

  • Head First. Изучаем Ruby — Доступное изложение, адекватный перевод на русский.

  • Programming Ruby. The Pragmatic Programmers' Guide — Недавно вышло 5 издание, которое охватывает самую последнюю версию Ruby. По большому счету, это лучшая книга про ruby из существующих. Она полностью на английском, но так как книга о разработке и главная ее цель научить писать код, то никакой сложной грамматики и лексики вы там не встретите.

Удачи !

Last updated