Лучший способ стать программистом

Как лучше всего изучать программирование ? Так чтобы информация запоминалась и не было скучно ?
Многие говорят, что практика решает. И я согласен с этим. Но не вся практика одинаково полезна.

И вот почему.

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

И даже если учитель обьяснит всё это студенту, он всёравно не поймёт до той глубины, до которой это понимает опытный разработчик. И всё дело в том самом опыте, который отличает новичка от профессионала. Опыте, который даёт не просто знания, а понимание.

Поэтому хороший учитель должен не просто дать знания или показать как надо делать. Он должен провести студента с точки А в точку Б. Провести по пути, на котором студент набьёт шишек, наткнется на проблемы. И для решения этих проблем учитель уже даст небходимые знания. Будь то просто теория или современные фреймворки. И роль учителя будет как-раз сделать прохождение этого пути наиболее быстрым.

В таком состоянии студент будет впитывать как губка и сразу же применять на практике. Мы получаем просто бомбический коктейль из практики и теории.

Такой подход позволяет сделать понимающего программиста. Который не просто использует Spring Boot, потому что это модно. А реально знает зачем это и в каких ситуациях его нужно применять. И как лучше его применить для решения той или иной проблемы.

Илон Маск применил этот метод для обучения своих детей. Он создал небольшую школу Ad Astra, в которой процесс обучения какраз построен на решении проблем.

И именно этот способ обучения я считаю самым эффективным. И он же самый интересный.

Хорошо. Допустим это правда и это работает. Как Вам уже сегодня начать это применять в своей жизни ?

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

И затем выбирайте что-то посложнее. Rinse and repeat, как говорится. Пристегнитесь и наслаждайтесь процессом.

Окей, ну а конкретный пример можно ?

Если Вы новичок, поставьте себе задачу напечатать в консоль своё имя.

А что если напечатать вот такой квадратик ?
#####
#        #
#####

А потом сделать так, чтобы можно было задавать размер сторон квадрата динамически.

Ну и сохранить это дело в файл.

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

А что если записывать не посты, а список продуктов для покупки в супермаркете ? И чтобы это мог читать не только я, но и моя жена ? Тогда наверное сохранять нужно не на локальной машине, а в Google Drive ? А что будет если и я и жена запишем одновременно в один файл ? Ага, вот зачем нужны транзакции, значит.

И вот так потихоньку Вы будете практиковаться, получать нужные знания и опыт решения проблем.

Вообще умение решать проблемы это самый востребованный навык на рынке в 2018 году.

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

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

Если мои дети захотят изучать программирование, то я не отправлю их смотреть видео-курс. Я уже пробовал обучать по видео-урокам.

Обучение по видео это интересно, но обманчиво. Так как кажется, что ты продвигаешься вперёд, но на самом деле не очень. Видео-уроки хороши как вспомогательный материал, к примеру показать процесс как разрабатывает опытный программист, как он дебажит проблему или как использует TDD итп. Но видео не должно быть главным способом обучения.

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

Сфера обучения сейчас претерпевает большие изменения. И у нас есть возможность построить онлайн площадки, идеально подходящие под нужный нам метод обучения.

Друзья, напишите что Вы думаете об этом ? Может Вы уже встречали школы с таким подходом ? Будет интересно узнать и найти единомышленников!
написать мне

Подписаться на мой блог

Мои записки о программировании. Я пишу редко.

Оставьте свою почту, чтобы не пропустить новые статьи