Тема оптимальности тех или иных способов обучения не дает покоя многим исследователям. Какой же источник информации лучше? Давайте попробуем ответить на этот вопрос. Прежде всего, хочется сказать, что программирование это инженерная дисциплина. И базисом для освоения инженерных дисциплин является безусловно одна вещь - практика. Поэтому альтернативы регулярному написанию кода нет, если мы говорим об изучении программирования. Я обычно привожу аналогию с вождением, какие альтернативы практическому вождению есть, которые позволят приобрести схожие по уровню навыки. Чтение книг? Компьютерные игры? Или вспомнить математику, представить нас в школе, и забыть про домашки и примеры. Просто одна теория и теория. Можно уроки, учебники или видео. Какие бы навыки у нас были и какие знания в голове остались? Поэтому практика стоит во главе всего, ничего лучше многократному повторению, движению от простых вещей к сложным, человечество еще не придумало, если говорить об универсальных подходах. Но при изучении нового и особенно для начинающих без опыта работы, очень сложно, если даже не сказать, невозможно, самому себе придумать практику. Эту проблему решают курсы, особенно практической направленности, также может быть ментор/репетитор, о том, что знания, понимание будут приумножаться с третьей космической скоростью, когда начинающий джавист устроится на работу, говорить и вовсе не приходится. Еще одной фундаментальной проблемой является отсутствия базы, чем меньше базовых знаний в какой-то области, тем меньше ориентиров как и что изучать, сложнее осознавать те или иные моменты, и тем больше мы зависим от теории, которая для нас предстает системообразующим фактором, которая помогает задавать структуру нашим будущим знаниям. Теория это арматура , практика это бетон. И здесь мы подходим к исходной точке, как оптимальнее учится? Как эффективней? Это простой вопрос с простым ответом. Я бы условно дал такие баллы: - работать программистом* = 5 баллов (джун 5 баллов, мидл - 6 баллов, синиор - 7 баллов и тд по +1 баллу) - обучать других = 4 балла - практика = 3 - туториалы, статьи, стековерфлоу = 2 - книги = 1 балл для начинающих и 2 балла для джун и выше - видео = 1 А потом суммируйте. * очень большое значение имеет специфика проекта, бывает саппорт, бывает однотипные задачи, бывает проект как болото по технологиям и развитию. А бывает интересный, драйвовый с разнообразными задачами. Опыт в них будет набираться по разному. Как видим, книги с видео не перекроют даже практику без ничего. Это речь сугубо об эффективности обучения. То что книги могут захватывать, видео быть мотивирующим, я полностью согласен, это просто цифры которые показывают голую эффективность. Но голой эффективности может быть недостаточно, особенно тем, которым нужна эмоциональная подпитка. В таких случаях можно и нужно идти на компромиссы и позволять себе шаги влево-вправо, для сохранения мотивации. Как с едой и правильным образом жизни 😀 Книги и видео Если с практикой все понятно, нужно кодить, кодить и кодить, нужна разнообразная практика, и системный подход, то с теорией сложнее. Вокруг нас бездонный океан информации. Миллионы книг, сотни миллионов веб страниц, миллиарды часов видеоматериалов, десятки тысяч видеокурсов и тд. То, что есть такой выбор это и хорошо и плохо одновременно. Хорошо, потому что это делает возможности к обучению безграничными, плохо, потому что в этом очень легко утонуть, если неправильно выстроить ориентиры. А чтобы выстроить ориентиры, обратимся к фактам, вот данные одного из многих исследований: Источник: Medium.com - Видео против текстов, почему они еще не убили друг друга Как видим, только практическое применение информации с нашей стороны может преобразовать знания в память. Но есть проблема быстроусвояемого контента - быстро потребил контент, быстро забыл. Я не думаю, что можно вывести универсальную формулу для всех, нужен индивидуальный подход с учетом типа восприятия, наличия той или иной подготовки в компьютерных науках и тд. Но можно дать общие рекомендации: 1. Читать ли книги и если да, то какие? Если вы только начали изучение и самые азы вам заходят очень сложно, что такое классы, методы, объекты и тд, я рекомендую: - Яков Файн - Программирование на Java для детей, родителей, дедушек и бабушек для детей, родителей, дедушек и бабушек - Изучаем Джава (Head First Java) (любые книги по джава кору - строго без упражнений, кроссвордов и любых других форм практики. Книги по джава кору это теория, практические задания в книгах рудимент 20 летней давности. Для тех, кто еще не имеет опыт работы, из обязательной программы я бы выделил одну книгу: Clean code - Robert C. Martin Чтение остальных книг, по джава кору всех, по дополнительным технологиям две с трех, по закону Парето входит в 80% усилий, дающих 20% результата. Книги хорошие, но они смогут оказать существенное влияние на вашу экспертизу только когда у вас будет определенный опыт и базовые знания. Когда вы устроитесь на работу, там конечно уже можно и нужно читать, поскольку у вас будет другой уровень понимания и вы при чтении книг будете переосмысливать свои знания и практический опыт. Книга будет как своеобразный диалог с опытными джавистами. Чтобы их услышать, нужно иметь базу :) 2. Сколько уделять время на чтение книг? Обычно рекомендуют не больше 30-45 минут, максимум час, если у вас есть суммарно в день 4 часа и более, когда вы можете заниматься на компьютере. Как допустимое исключение, если у вас есть время вне компьютера (на работе, транспорт, отдых, посиделки с домино во дворе и тд), тогда лимиты можно не ставить, как по времени, так и по книгам, можно читать что угодно, все-равно нет возможности заниматься за компьютером. 3. Является ли чтение книг обязательным для джависта? Нет. Мне очень сложно придумать контент и информацию, которого нет в интернете, даже те же книги, всегда можно нагуглить и прочитать конкретно интересующий факт. По моим наблюдениям, по типу работы с текстовыми источниками данных, люди делятся на два основных лагеря: - те кто умеет гуглить со скоростью света и находить нужную информацию, умеют выделять главное и систематизировать знания - те кто либо не владеет эффективным поиском, не привык к нему, или сложно структурировать и систематизировать знания самостоятельно, в таком случае книга выступает маяком, она ведет читателя с точки А в точку Б, и не нужно думать, что и где искать Но чем больше экспертиза у программиста, тем больше нужно потреблять профессиональной литературы, и книги безусловно читают, как я писал выше, это своеобразный диалог с профессионалами. Но это уже следующий уровень, там уже речь идет за инженерную культуру, за чтение книг, блогов топовых джавистов, посещение конференций и тд. 4. Смотреть ли видео? Если да, то какие. Видеоконтент смотреть можно, поскольку очень много интересного и полезного контента. Но очень важно не впадать в крайности, которая заключается в проваливании в клиповое мышление, когда контент потребляется просто по привычке, "о, прикольный видосик". - для начинающих, если вам заходит, можете смотреть видео каналы классиков Джава кора на просторах СНГ: Ивана Головача, Юрия Ткача, Наиля Алишева. Смело рекомендую. - можно смотреть выборочные видео по конкретным темам, есть много классических видео "Босиком по граблям" Алименкова, "Неочевидные дженерики" Маторина, потрошители Борисова и тд + сюда же, в целом различные видеодоклады с конференций или семинары топовых джавистов. - если разбираете конкретную технологию, никогда не сталкивались с ней, можно посмотреть какое-то обозрительное видео для начинающих или небольшой цикл видео, чтобы получить базовое представление - для отвлечения, отдыха, некоторым может для мотивации, можно смотреть различных ютюб-блогеров, сочетая приятное с полезным, но не забывая, что это контент в свободное от учебы время. Мне например нравится канал Евгения Сулейманова, примеры собеседований смотрю вместо сериала к чаю :) Итого. Без книг и видео, особенно для начинающих, наверное не обойтись. Старайтесь подходить к ним утилитарно, то есть как к конкретным инструментам для решения конкретных задач. Не читайте, лишь бы читать, не смотрите, лишь бы смотреть. Формируйте ваши приоритеты. Научитесь говорить твердое "нет" тому контенту, который не является обязательным для вашей программы, но который может занять существенный объем времени. Если сомневаетесь - лучше спросить, в разделе Форум, в чате, что читать, что не читать, что смотреть, что нет, если речь идет о контенте, который может занять существенную часть времени, которое вы можете провести за практикой. И книги и видео нужны, это каналы информации, но не проваливайтесь в хаотичное "о, я и это почитаю, и это посмотрю, и это, оно же прикольное!". Прикольных материалов сотни тысяч, вашей жизни на них не хватит. Подумайте, сколько осталось в голове с видео, которое смотрели два месяца назад, сколько усвоилось и вы сможете перерассказать или применить на практике уверенно. Выбирайте те виды контента, которые дают вам наиболее долгосрочные знания или что самое главное, осознание/усвоение той или иной темы. Фактически, обучение программированию на первых порах, это учиться как учиться. Главное верьте в себя и все у вас получится :)