S.Tominoff

Fullstack JavaScript разработчик

Мой подход к изучению языков программирования

Недавно меня спрашивали - как ты учишь новые языки? В результате я проанализировал то - как же я действительно подхожу к этому вопросу и результатом этого анализа хочу поделиться с вами в виде 6 простых советов.


Disclaimer

я не могу гарантировать тебе успех или правильность этих методик, но для меня они работают не плохо.


 

1 Не зацикливайся на одном языке за раз

 

Моей самой большой ошибкой в своё время было зацикливание на изучении одного языка. Я мыслил так “лучше знать один, но знать его хорошо”.

 

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

 

 

Личный опыт

 

Изначально (в начале времен, ага) я загорелся открыть свой собственный форум. Денег на хостинги/домены у меня тогда не было, поэтому пришлось подстраиваться под бесплатные. На тот момент я нашёл только вариант с Perl и без БД.

С Perl у меня в итоге не сложилось - через какое-то время я устроился на работу по специальности, а там был PHP/JS стэк, и в PHP погрузиться получилось реально очень быстро, ведь у него очень много параллелей с Perl!

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

 

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

Учи сразу несколько языков, основное время, разумеется, уделяй больше времени целевому.

 

 

2. Не учи только простые языки!

 

Как показывает моя практика — чем сложнее язык взятый как вспомогательный, тем быстрее и проще учится целевой.

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

 

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

Личный опыт

 

Честно говоря, мне сложно судить объективно, поскольку я всю жизнь использую только подход “от сложного к простому”.

В своё время перешёл с Perl к PHP, сейчас целенаправленно начал изучать Erlang, перед тем как перейти к Elixir.

При этом, я постоянно поглядываю и на многие другие языки - бывает на C чего нибудь наколдую, или на Ruby и бывает на Python пару скриптов набросаю, недавно ещё прокачивал мозги с Rust.

 

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

Даже если ты уже используешь первый пункт моей методики, я рекомендую всегда вторым языком брать тот, что сложнее вашего целевого.

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

 

 

3 Не спеши на StackOverflow

 

Я заметил, что при пользовании этим сервисом, у новичков возникает неприятная склонность к методике “копи/пэйст” в поисках резкого исправления проблемы в стиле “и так сойдёт”, но при этом упускается суть - почему возникла ошибка, и почему решение сработало или не сработало?

 

Без стремления к пониманию сути проблем - нет смысла идти в профессию.

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

Не злоупотребляй StackOverflow! Пытайся самостоятельно разбираться с возникшими проблемами, изучай документацию языка экспериментируй и импровизируйте, это ж не ремесло в конце концов!)

 

 

4 Не останавливайся на примерах из книг!

 

У новичков, которые изучают языки по книгам/курсам/etc зачастую есть одна проблема - они пишут код, который там показан, запускают, следуют всем инструкциям и получают рабочий код из примеров.

 

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

 

Также многие, и я в том числе, думают в стиле - “сейчас базис усвою, накорябаю примеры, закончу всю книгу/курс, а уж потом буду писать настоящий код”. Такой подход не эффективен. Ваш мозг выбросит половину информации к концу книги, и приступая к разработке настоящего приложения вам придется потратить кучу времени на перечитывание и вспоминание многих мест.

Личный опыт

 

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

В своё время я так забросил Java, хотя очень горел этим языком (настолько, что в моей библиотеки до сих пор 30% книг - о Java), но разработав пару простеньких программ по работе - забросил этот язык.

Та же история с C#, прочитал книгу, попробовал несколько примеров - и забил, - не мой это язык.

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

 

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

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

 

 

5 Заведи себе записную книжку

(если учишь первый/второй язык)

 

Да, я сейчас о самой обыкновенной записной книжке, в которую ты будешь обычной ручкой или карандашом (я предпочитаю ручку) записывать заметки, и да, я серьёзно.:)

 

Личный опыт

 

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

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

 

Вот как я учил первые языки:)

Perl - слева, Regexp - справа

 

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

Самое главное что тебе нужно знать при работе с записной книжкой - выписывай только действительно важные, запутанные или не особо понятные моменты!

Не нужно переписывать всю книгу или документацию на бумагу - большую часть ты либо запомнишь, либо поймёшь в процессе!

 

 

6 Постоянная практика

 

Каким бы способом ты не изучал что-либо, всегда остаётся одно золотое правило - чем больше практики - тем лучше!

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

 

Как говорится - учиться, учиться и еще раз учиться!

 

Удачи!)

 

Знаешь другие эффективные методики?

Не стесняйся - пиши в коментах, а я добавлю их в статью!