вторник, 9 июня 2020 г.

Некоторые мысли о том, как и где учиться программированию

Моё мнение - минимум, 2 - 3 часа  (в идеале - 4 часа) ежедневно. Без выходных. Никакой жизни вне учёбы: походов в кино, на природу, друзей, девушек и т.п. Читать книги и статьи. Смотреть видео и решать задачи. С ментором, с большим количеством задач, их проверкой ментором и с обязательной обратной связью (разбором ошибок).
Иностранный язык можно выучить за пол года - год, учась по 1 часу в день.
Программирование и того проще освоить, т.к. всё преподносится на родном языке и язык программирования - это, в отличие от разговорного иностранного языка, сплошная логика, которая в нас "встроена" с рождения. Нужно только тренировать её, как мышцы.
Поэтому 4 часа на учёбу ежедневно - это то, что называется, отлично.
В ВУЗе, дай бог, чтоб 4 часа в неделю изучали программирование.
Рассуждения о том, что 4 часа учёбы ежедневно - это малоэффективно похожи на рассуждения о том, что:
-  4 часа в день заниматься спортом - это малоэффективно,
- или, что разговаривать на английском по 4 часа в день - это тоже малоэффективно.

Если у тебя есть пару свободных часа в дороге каждый день, то смотри-читай учебные материалы. А когда приедешь домой - попробуй применить то, что узнал на практике: задачки порешай, воспроизведи задачки из изученного учебного материала.

На крайняк, если нужен будет перерыв для отдыха мозга, слушай IT подкасты.

Главное - не потерять эти самые часы даром: не слушать музон, не смотреть развлекательное видео и не читать книжки или Интернеты не по учёбе.
Я езжу стоя в метро каждый день по 45 минут в каждую сторону (на работу и с работы). За это время Успеваю почитать книжку по програмированию, посмотреть заранее загруженное учебное видео или потренировать английский в приложении.
Главное в учёбе - это поставить цель и каждый день идти к ней небольшими шагами.

В сообществе часто задают вопросы:
Можно ли отдыхать от учёбы (делать длительные перерывы)?
Себя не обмануть. Если перерыв в учёбе нужен, то так или иначе его придётся сделать. Только нужно быть готовым к тому, что после отдыха будет сложнее продолжить, т.к. некоторые вещи забудутся. 
Что лучше: самому выстрадать решение задачи или попросить помощи у коллег?
Лучше вообще не тупить, а, если самому непонятно, то сразу открывать SOF (Stack Overflow), учебники, статьи, чужой GitHub, javadoc и т.д. и смотреть, как надо делать.
Есть даже целое направление обучения - code-kata: смотришь и повторяешь, а где-то в пути приходит понимание.
Почему такой вариант учёбы имеет место быть? Ответ простой - время. Одно дело - учить что-либо по учебным пособиям с разбором задач и совсем другое - самому, с нуля, выводить нужные знания толко на основании собственного опыта и ошибок. Во втором случае жизни не хватит, чтобы изучить предмет. 
Помогают ли в учёбе конференции?
Вопрос спорный. В чём-то помогают. В чём-то нет. Если есть желание узнать таким способом общее направление, в котором развивается индустрия, то конференция может оказатьс неплохим вариантом. Если необходимо получить глубокие знания по вопросу, то в этом плане на конференциях нет ничего полезного. Всё, что там рассказывают, можно свободно найти в интернете. А рассказы на тему "было много трудностей, но мы справились" - они, без конкретных деталей, бесполезны. 
Не помню, где прочитал умную мысль: "...Многие выступления на конференциях охватывают доказательство концепций, а не реальные сценарии. " 
Поможет ли в учёбе телеграм-канал/форум/что-то ещё?
Можно попробовать найти в таком источнике ответ на конкретный узкий вопрос, но для более широкого изучения и понимания предмета, польза таких источников сомнительна.
Залез я как-то в один телеграм-канал по тематике "профи в спринге". Ну, думаю, почитаю умные мысли неглупых людей. Но, исходя из содержания канала, сложилось впечатление, что там собрались люди, изучающие спринг "виртуально", исключительно методом "научного тыка" и пытающиеся изучить его  раньше основ java.
Все разговоры в канале были примерно следующего содержания: "а где мне указать properties?", "а как их прочитать", "а что будет, если у меня будет 2 класса конфигурации?", "а как отправить пост-запрос?" и т.д.
Какие курсы лучше?
Не попробуешь, не узнаешь. На одном курсе всё кривенько-косенько и иногда заводит в тупик неспособность ментора грамотно писать по-русски и выражать свои мысли. Но, в то же время, и цена у такого курса более-менее человечная, и все выпускники курса, в течение 8 - 12 месяцев с момента начала курса находят, себе работу программистами, и сообщество учащихся и выпускников там вполне себе здоровое.
На другом курсе: и цена космическая, и преподаватели все исключительные (судя по рекламе) и контент весь выверенный, синхронизированный и автоматизированны. Но, что-то не слышно отзывов от успешных учеников...На одном из митапов моему коллеге очень известная компания, продающая курсы задорого, предложили стать преподавателем на одном из их курсов. Он согласился, но при этом сказал мне, что теперь ему придётся в ускоренном темпе изучить тему курса почти с нуля.
Поэтому при выборе курса обращай внимание не на рекламу и известность или "крутизну" курсов, а на следующее:
- цена - зачем переплачивать?
- наличие материалов, объясняющих предмет - по книжкам можно учиться и без курсов,
- программа курса включает в себя те технологии, которые перечислены в подавляющем количестве вакансий - зачем платить за то, что будет невостребовано, или, чтобы остаться в глазах работодателя недоучкой? Открываем программу курса и ищем там: java, spring, spring boot, hibernate, postgreSQL, git и т.д. по списку технологий из вакансий,
- наличие большого количества практических задач - как иначе освоить "карате", если не спаринговаться?
- проверка задач ментором и наличие обратной связи - без этого учёба может сильно подзатянуться или завести не в ту степь. Одним из показателей этого является то, что ментор готов ответить на твои вопросы в течение дня, а не через месяц или непонятно, когда. Никаких: ответит менеджер, секретарь или кто-то ещё. Только ментор. Всё просто: если у ментора нет времени ответить на твои вопросы сейчас, то у него не будет времени и на проверку твоих задач во время учёбы,
- наличие сообщества сокурсников - там подскажут и покажут то, на что у ментора может не хватить времени и сил, чтобы по сотне раз объяснять каждому (напимер, как настроить ИДЕ). Со временем ты также научишься получать кайф от дачи ответов на те же "глупые" вопросы новых учеников, какие раньше задавал сам. Это поднимент твою мотивацию и придаст уверенности в собственных знаниях,
- наличие положительных отзывов реальных учеников, которым ты можешь написать и задать все интересующие тебя вопросы о курсе - все мы знаем, что можно нанять школьника, который под копирку напишет хвалебный отзыв, но не сможет ответить ни на один практический вопрос об учёбе, т.к. он смутно может себе представить то, что только что расхваливал.

Ну, и главное: программирование - это не про деньги. Это про увлечение. Если нужны только деньги, то программирование может разочаровать тебя тем, сколько сил и времени тебе придётся вложить в то, чтобы научиться программировать и начать этим зарабатывать. В програмирование идут те, кому это нравится. На вопрос "почему ты решил изучать программирование" такие люди отвечают: "мне всегда нравилось...", "я всегда хотел...", "я со школы увлекался...".
У тебя может получиться обмануть ментора, сокурсников и работодателя, когда ты будешь говорить, что увлечён программированием, но обмануть себя не получится и это чревато... ))

Комментариев нет:

Отправить комментарий