В предыдущих уроках мы сделали обзор технологий, которые будут использоваться в нашем курсе и создаваемом проекте. Теперь давайте поговорим о том, как начать изучать эти технологии и практиковаться в их использовании.
В 1980 году National Training Laboratories в
США провели исследования эффективности разных
способов обучения.
Выяснилось, что у лекций и чтения книг крайне
низкая эффективность — всего 5-10%.
Дальше идет просмотр видео лекций и прослушивание аудио.
Максимальная эффективность в 90% — это обучение людьми других людей — менторинг и немедленное применение полученных знаний на практике.
Я хочу подчеркнуть этот момент.
Когда вы смотрите видео, вам может казаться, что вы все понимаете, но, поверьте, когда вы попытаетесь повторить это самостоятельно, у вас возникнет множество вопросов и сложностей. Практика - это важнейшая часть обучения, не пропускайте ее.
На нашем курсе мы:
- обсуждаем занятия с коллегами и преподавателями в Slack - эффективность 50%
- выполняем практические домашние задания по каждой пройденной теме - 75%
- помогаем коллегам и разрабатываем собственный выпускной проект - 90%
Также очень важная часть обучения - проверка ваших домашних заданий и ревью выпускного проекта нашими кураторами.
Это самый эффективный способ научиться программировать!
При устройстве на работу, на собеседовании обязательно задавай вопрос про ревью кода. Если его нет, фирма занимается разработкой непрофессионально? и рост там будет достаточно медленным и ограниченным.
В ревью укажут именно твои ошибки в стиле, структурах данных, алгоритмах и кодировании. До вечера вторника участники шлют ссылку на свой GitHub-репозиторий с домашним заданием занятия, проверка делается ассистентами, результат пишется в Slack. Получается эффективно и оперативно.
После проверки можно исправить замечания и пройти ее еще раз.
В конце стажировки делается ревью вашего выпускного проекта.
Давайте кратко обсудим, чем курс TopJava является и чем он не является, что следует от него ожидать и чего не следует.
Я увижу, как с нуля строится web-приложение A с использованием технологий B, просмотрю видео по темам, этого будет достаточно
Почему такой подход не верный: TopJava - это стажировка, поэтому НЕ рассчитывайте пройти ее на диване с пакетом поп-корна. Тебе придется на ней РАБОТАТЬ (выполнять ДЗ, самостоятельно решать какие-то задачи, читать логи, дебажить, ходить на StackOverflow и даже думать об этом, засыпая)
Меня научат шаблонам работы с технологией А, и я смогу их применять в любой ситуации
Почему это тоже не вполне верный подход: Используемые на стажировке технологии представляют собой инструменты, которые позволяет сделать что-то проще. Мы поделимся практикой их использования, неочевидными особенностями и т. п., покажем "грабли", на которые вы рано или поздно наступите. Нет гарантии, что, устроившись на работу, вы увидите точно такие же подходы. Все проекты и команды индивидуальны: используются различные инструменты и различные решения. Столкновение с технологиями, с которыми ты ранее не был знаком, - это нормальная часть жизни любого программиста. Нужно быть к этому готовым.
Хорошее представление о решении проблем дает поиск на StackOverflow, где почти на любую проблему дается большое количество вариантов решения. Поиск решений и выбор лучшего - это основная работа Java-разработчика, и мы максимально постараемся этому научить: каждый раз в конкретной ситуации вы должны будете САМИ думать, что применять и как. Выполняя домашние задания, вы должны приложить все усилия, чтобы самостоятельно найти решение. Далее в начале следующего занятия вы также посмотрите разбор решения, подготовленного Григорием Кислиным.
3-й вариант ошибочного представления о стажировке TopJava связан с неверным представлением о том зачем нужна проверка домашних заданий. Например, человек может ошибочно рассуждать так:
я хочу проходить стажировку с проверкой ДЗ, чтобы мне рассказали, как нужно правильно выполнять задания
Задача проверки не в том, чтобы общими усилиями написать код, который ты и так увидишь в разборе. Если у тебя что-то не получается, наша задача - не найти ошибку/подебажить за тебя/почитать логи и т. п., а подсказать способ самостоятельно найти решение (хотя для этого мы сначала сами ищем/дебажим/читаем) Вторая важная задача, которую решает проверяющий, - увидеть то, что не увидел ты. Когда ты сдаешь задание на ревью, тебе может казаться, что все почти идеально. Проверяющий подскажет тебе, где ты что-то пропустил из-за недостатка опыта, что позволит тебе улучшить код.
Любое знание стоит воспринимать как подобие семантического дерева: убедитесь в том, что понимаете фундаментальные принципы, то есть ствол и крупные ветки, прежде чем лезть в мелкие листья-детали. Иначе последним не на чем будет держаться — Илон Маск
Обычно в занятии дается много дополнительного материала и ссылок. Не стоит стремиться прочитать все ссылки урока, их можно использовать как справочник. Гораздо важнее пройти основной материал урока и сделать домашнее задание - этого достаточно для усвоения материала и получения той самой основы - ствола и крупных веток, на которых впоследствии можно наращивать листву.
Как правило, подбираются участники разного уровня. Поэтому главное – не стеснятся задавать вопросы (после самостоятельного гугления и поиска решения). Всегда есть поддержка группы (в том числе от пришедших на бесплатный повтор участников), моя и ассистентов.
Давайте перечислим набор навыков, которые вам необходимо развивать в ходе курса и которые необходимы любому программисту:
- умение и привычка искать информацию, чтобы иметь больший выбор из доступных вариантов технологий и подходов к решению задачи, умение пользоваться StackOverflow;
- умение пользоваться дебаггером в Intellij Idea;
- умение пользоваться DevTools в браузере;
- определенный кругозор и опыт для того, чтобы придумывать поисковые запросы.