Как нужно учить новые языки программирования
В этой статье я хотел бы поделиться с вами, дорогие друзья, своим опытом в плане изучения новых языков программирования/технологий. Этими советами я пользуюсь не первый год и уже многократно ощущал их эффективность на собственной шкуре. Возможно часть из них тебе известна и ты ими пользуешься, а может наши подходы отличаются и у тебя есть свои интересные решения (обязательно поделись ими в комментариях).
1. Покупаем книги
Изучить новый язык программирования без хороших книг нельзя. Сколько бы ты статей не прочитал их все равно будет мало. В них материал никогда не рассматривается углубленно и по сути авторы помогают решить читателю определенную проблему. Книга как раз нацелена на широкий круг задач. Пускай там нет полностью готовых примеров решения, но там хорошо описана теория, ознакомившись с которой можно решить множество разноплановых проблем.
Не стоит наивно полагать, что купив и прочитав одну книгу ты полностью (а полностью познать наверное ничего нереально) познаешь язык программирования/технологию. Это просто нереально. Одной книги будет однозначно мало, поэтому рекомендую сразу покупать несколько. Все авторы пишут по-разному. У каждого есть пробелы в знаниях (как и у любого человека), поэтому одну и ту же тему авторы рассматривают по-разному. Кто-то поверхностно, а другие так глубоко, что становится страшно. В любом случае нужно через это пройти и ознакомиться с трудами разных авторов. Я когда начинаю с чем-то разбираться, то всегда покупаю минимум две книги и читаю главы параллельно. Например, прочитав в книге №1 главу про отправку данных в PHP, потом ищу аналогичную главу во второй и читаю ее. После знакомства с материалами мои знания лучше прокачиваются. Пускай приходится читать похожий материал, но как говориться: повторение - мать учения”. Я уже знаю о чем должна идти речь, поэтому в голове сразу выстраивается последовательная цепочка действий и можно сразу же себя проверять. Один раз я даже сравнивал время усвоения материала, полученного таким образом. Усваивается на порядок быстрей.
Книги - лучший источник информации, но в наше время книги стали писать все кому не лень, поэтому есть большой шанс купить лажу. Как бы грустно это не звучало, но в нашей стране стало популярно делать пересказы. Однажды я нарвался на книгу, которая была неудачным переводом файла помощи. Не буду называть этого автора, но с тех пор я стал очень тщательно относится к выбору книг. У меня дома большая библиотека книг и за время ее сбора я вывел для себя несколько простых правил:
- А кто у нас автор? Как показывает моя практика наиболее интересными и полезными книгами являются труды от зарубежных авторов. Наши соотечественники стали писать слишком много отстоя. Не хочу никого обидеть, но меня не прикалывает читать бред и банальный перевод документации. Прочитать документацию (пускай даже на английском) я могу самостоятельно. Мне в первую очередь хочется получить новые знания и прочитать советы от опытного автора, который использовал технологию на практике, а не просто читал новости и перевел документацию. В связи с этим, я для себя вывел правило: осторожно относиться к книгам от наших соотечественников. Если увидел книгу на интересную тему от нашего автора, то лучше отложить покупку и пойти почитать отзывы в инете, а потом еще самостоятельно проштудировать оглавление и отдельные главы. Быть может отпадет желание ее покупать. У меня в основном так и бывает. Лучше сразу брать во внимание книги от зарубежным авторов. Там лажи намного меньше. Вот смотрю я на свою полку и вижу, что 90% имеющихся у меня книг от зарубежных коллег. Остальные 10% - книги от Миши Фленова. Вот такой вот расклад.
- Издательство как гарант качества. Я перечитал много книг от разных издательств и пришел к выводу, что самые лучшие книги выпускает O’Relly. Вот веришь или нет, а плохой книги от них я еще не видел. Это и понятно, ведь O’Relly очень строго относится к своей работе. Как-то я читал, что у них очень хорошие технические редакторы, которые чуют лажу издалека. Наверное так оно и есть. Все книги на моей полки от O’Relly просто кладезь полезной информации. Рекомендую и тебе обратить свое внимание от их издательства. Уверен, они тебя не разочаруют.
2. Начинаем читать блоги/статьи
Немного ознакомившись с книгами (лучше всего параллельно) я рекомендую приступать к чтению тематических блогов/статей. Книги дают хороший теоретический базис, но без практики он представляет мало чего интересного. Одно дело понимать, что это можно сделать и совсем другое смочь решить задачу на практике. Я стараюсь сразу находить несколько блогов и внимательно слежу за публикациями автора. Пускай сначала не все понятно, но видеть чужой код и ход мыслей мне помогает упорядочить свои знания и увидеть многие вещи на практике. Само собой чтобы добиться максимального эффекта нужно пытаться реализовать прочитанное на практике. При воспроизведении работы автора также важно не лениться и писать код самостоятельно. Да, его можно скопировать в буфер и вставить в свой проект, но так он будет усваиваться значительно хуже. Наверняка на следующий день ты уже успеешь забыть, что и где писал.
3. Собираем чужие исходники
Начав изучать новый язык программирования я сразу создаю на своем винте папочку sources и начинаю собирать в нее найденные в инете исходники. Я стараюсь подбирать интересные проекты у авторов которых есть, чем поучиться. Впоследствии (уже во время написания своих проектов) я смотрю их код и применяю какие-то идеи в для своих проектов.
4. Выдели время для обучения
Одна из главных причин плохого обучения – отсутствие времени. Постарайся быть с собой предельно откровенным и не строй иллюзий, что разобраться с новой технологией/языком программирования ты сможешь за пару месяцев. Если у тебя нет времени и ты планируешь выбрать один свободный вечерок и разом совершить завоевание нового «царства», то можешь сразу приготовиться к поражению. У тебя это не получиться и скорей всего ты вообще забросишь обучение. Чтобы не попасть в неприятную ситуацию я рекомендую тебе придерживаться четкого плана обучения и стараться заниматься каждый день. Пускай чуть-чуть, но каждый день. Без этого ничего не получится. Уже спустя пару недель ежедневных занятий ты почувствуешь рост скилла. Пускай занятия будут составлять 30-60 минут. Если они будут ежедневными – этого будет вполне достаточно, и ты впитаешь куда больше инфы, чем за 5 часов непрерывного обучения.
5. Привыкай составлять планы
Грамотное планирование – один из неотъемлемых элементов успешного достижения цели. Попробуй с самого начала спланировать свое обучение. Раздели весь процесс на небольшие временные промежутки и набросай на бумажке примерный список вопросов в которых ты без проблем должен ориентироваться по просшествию оговоренного временного интервала. Я обычно в качестве интервала выбираю три временных отрезка: неделя, месяц и полгода. Для каждого отрезка времени я составляю список задач и потом себя проверяю. Такой подход мне помогает в следующем:
- Я вижу конечную цель. За свою практику я уже понял, что мне всегда нужно видеть конечную цель, иначе я могу сбиться с пути. Если я берусь за большой проект, то я его непременно дроблю на мелкие части и каждый раз добираюсь до промежуточной отметки. Таким образом я знаю конечную цель своего труда и попутно выполняю более мелкие задачи, показывающие мне, что я двигаюсь в правильном направлении;
- Я могу оценить примерный уровень знаний (которые я могу начать использовать для определенных целей) на каждом временном отрезке выполнения. Ни для кого не секрет, что часто приходится разбираться с чем-то новым в авральном режиме. У меня такие ситуации возникали неоднократно и в такие моменты план здоров помогает. Если обучение проходит отдельно от решения задачи, то можно четко оценить свой скил на временной шкале и планировать сроки исполнения других задач.
6. Еще немного о книгах
Сегодня в магазинах особой популярностью пользуюсь различные книги для скоростного изучения нужного предмета. «Освой C# за 24 часа», «PHP для чайников», «Стань профессионалом за неделю» и много других волшебных книг. Если ты уважаешь себя и бережно относишься к деньгам, то ни в коем случае не покупай подобные издания. Никаким профессионалом они тебя сделают, и ты никогда не разберешься с технологией/языком программирования за одни сутки. Лучше купить себе хорошую толстенькую книгу, чем поделку толщиной с глянцевый журнал, но с громкой рекламой и обнадеживающий обложкой. На получение настоящих знаний требуется время. Для развития в себе профессионализма требуется время и опыт. Книга для чайников не может этого дать и покупая подобный продукт ты просто-напросто обманываешь себя и рискуешь убить в себе желание на дальнейшее обучение. Ведь неправильно и непонятно изложенный материал может запросто убить желание разбираться в чем-то новом и творить.
7. Старайся докапываться до решения
На этапе обучения возможны ошибки. Возможно их будет слишком много и иногда будет казаться, что новый язык/технология вовсе не для тебя и не стоит тратить на нее время. Настоятельно рекомендую тебе сразу отгонять такие мысли прочь и изначально мотивировать себя на успех. Не нужно вешать нос из-за трудностей. Не работает код? Не беда! В для каждого языка программирования существуют отладчики. Прогани свое творение под деббагером, а после посмейся на своими «детсикми» ошибками. Главное не сдавайся и старайся найти истину любой ценой.
Помню, когда только начал изучать Delph, я частенько нарывался на проблему компилирования чужих исходников. То не хватает определенной библиотеки, то программа по непонятным причинам вылетает, то еще чего. Иногда я забивал на такие нерабочие решения и просто обходил их стороной, но потом я стал получать кайф от ковыряния в их внутренностях. Я освоил работу с отладчиком и научился искать проблемы самостоятельно. Оказалось, что это настолько увлекательный процесс и за время таких кодокопаний мой уровень скилла серьезно повышался.
8. Тусуйся на форумах
Бытует мнение, что сегодня форумы начали вымирать. Их вытесняют социальные сети и все web-строители новички предпочитают построить ещ е одну социальную сеть нежели создать отличный форум. Может форумы морально устарели, но все же они остаются прекрасным местом, где можно поговорить с единомышленникам и получить квалифицированную помощь, а значит и поднять свой уровень знаний. Опять же мне хочется привести пример из своей жизни. Одно время у меня было много вопросов по Delphi и ответы на них я находил на форумах и тематических сайтах. Я задавал вопросы и пытался помочь другим. В результате работы на два фронта процесс моего становления стал происходить заметно быстрей.
На этом я хочу закончить эту статью и искренне пожелать тебе удачи и успехов в изучении новых технологий. Надеюсь, они тебе хоть чем-то да помогут. Перед тем как окончательно попрощаться, я хочу дать тебе самый главный совет. Поверь в себя! Без веры в собственные силы никуда. Будь уверен, что добьешься успеха и никогда не сворачивай с пути. Только вперед, к заветной цели. Пускай твой будет тернистым – не беда. Мотивируй себя постоянно и не раскисай. Все будет хорошо 
Автор: Игорь Антонов aka Spider_NET
Email:
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- 3365 просмотров



Комментарии
20 комментария(ев)Дата: ВС, 02/10/2011 - 15:32
1. Полностью согласен. Конечно лучше читать книги Саттера, Руссиновича, Шилдта, Александреску, чем какого-нибудь Иванова, даже если у него наград как у Суворова(только в программировании)
2. На собственном опыте подтверждаю, что это так)
3. А вот это лишнее, обычно исходники валяются просто без дела и толку от них мало.
4. 30 - 60 минут всё таки мало, лучше хотя бы часа по два.
5. Ну планы всегда полезно составлять)
6 - 7. +
8. Я бы посоветовал тусоваться(или хотя бы читать) зарубежные форумы. На наших просто какая-то тоска.
Я бы ещё посоветовал - участие в Open Source проектах. Это очень важно и полезно для изучения технологии/языка. Даже можно зачеркнуть все пункты кроме первого, но участвовать в каком-нибудь проекте.
Дата: ВС, 02/10/2011 - 22:16
У меня папочка сурс состоит практически только из своих исходников. Чужих очень мало. И то это исходники тех проектов, которые мне показывали под дружбе душевной
Так что считаю исходники надо держать всегда. Чужие исходники - спорно...
Дата: ВС, 02/10/2011 - 23:22
Ну свои то да, это естественно. А вот чужие действительно как-то неудобно. Я когда-то занимался подобным собирательством, но потом всё равно забил на это из-за большого количества кода. Поэтому сейчас если и попадается что-то интересное, то сохраняю себе, но не на хард, а в эвернот и если исходник не больше 50 строчек
Дата: Пнд, 03/10/2011 - 15:14
Разбираться в чужих исходниках надо учиться. Очень хорошая практика пытаться что-то доработать в чужом проекте. Много кода? Это конечно пугает, но если качнуть скил, то на реальной работе будет намного проще. Когда устраиваешь программистом, то в большинстве случаев приходится дорабатывать чужие проекты. А тут без опыта кодокопания будет очень тяжело.
Дата: Пнд, 03/10/2011 - 22:52
Вот поэтому и желательно участвовать в Опес Соурс проектах) Там и разбираться нужно и дорабатывать. Плюс ещё и польза другим будет
Дата: Пнд, 03/10/2011 - 23:31
Я немного не соглашусь насчёт чужих исходников во время обучения. Поскольку речь идёт об обучении, то запомним тот факт, что на этой ступени мы мало чего знаем:
Идеальный вариант: исходник написан человеком, который разбирается в теме. Я просто не пойму, почему этот человек сделал так, а не иначе. И это только усложнит процесс обучения. Человек, который разбирается в теме уже сам прошёл через 1000 ошибок, что его и привело в этим подходам решения проблеммы. Если я сразу посмотрю его решение, то пропущю эти 1000 ошибок и поэтому не пойму почему так лучше.
Другой вариант: код написан человеков моего (а то и уровнем ниже): этот код мне ничего не даст. А скорее и на оборот: я увижу, что "другие люди так же решают эту проблемму" и у меня сложится впечатление, что это хорошее решение.
Следующий пункт уже немного упомянут в вышестоящем абзаце: делайте ошибки! Без них никак. Особенно это важно в архитектуре приложения: если я не делал сам ошибок, а получил готовое решение хорошей архитектуры, то я просто не пойму ПОЧЕМУ так лучше. А если я сам буду совершать ошибки, то когда нибудь наступит момент, когда я скажу: "хм... что то не так, нужно поискать другое решение этой задачи" и тогда я буду отчётливо понимать почему используется то, а не это. Как яркий пример: Singleton в Java. Если показать новичку это горе-творение, то это будет самый большой для него подарок. Он его будет постоянно использовать и т.д., но наступит время, когда он поймёт, что Singleton можно разумно использовать только в единичных решениях, а в 99% он просто усложняет работу. НО: если ему сразу сказать: Singleton использовать не надо, он просто не поймёт почему, для этого у меня будет мало опыта и мало глубоких знаний.
До начала учения чего-нибудь, нужно сначала изучить основы темы. Если это программирование, то нужно сначала посмотреть двоичные системы, design pattern, алгоритмы, математику. Сначала будет не всё понятно, но зато если держать эти темы задней мыслью, то взгляды на некоторые темы будут другие.
План составить практически невозможно, т.к. что бы составить план, нужно иметь полное представление о теме и глубине каждой подтемы. А если это представление есть, то я тему уже выучил.
Не нужно сравнивать языки. Не нужно задаватся вопросом: "На Delphi я делаю вот так, как этот подход можно переписать на языке X". Языки бывают разные и подходы к задачам тоже разные. И это нужно точно понимать.
Насчёт книг: это не поможет в процессе учения, но: как только достигнут хороший уровень знаний, можно (в моих глазах: нужно) читать книги для новичков. Книги могут быть оцениватся только людьми, у которых как минимум столько же знаний как и у автора. Поэтому нужно прочитывать книги, указывать на ошибки и сообщять об этом и автору и людям, которые хотят купить книгу (например рецензией в онлайн-магазине). Да, это лишний труд, да - это тебе мало принесёт пользы, но зато это улучшит состояние книжного рынка и если это будут делать много людей, то можно расчитывать на то, что в новой области, которую я хочу обучить, эту работу тоже уже кто-то проделал, что мне поможет на старте. Во многих форумах есть темы "Какие книги хорошие?" - с моей точки зрения важнее создавать темы: "Какие книги НЕЛЬЗЯ!!! читать" и количество этих книг ужазающе больше.
Дата: ЧТ, 06/10/2011 - 23:49
Полностью согласен, но интересует один вопрос :
а чуть ниже
Ты Мишу причисляешь к зарубежным авторам или к исключениям среди отечественных? =)
Дата: ПТ, 07/10/2011 - 06:08
Прочитал не очень внимательно может конечно и пропустил...
Много чего посоветовали, но как то упустили что очень желательно почитать документацию по самому языку который вы изучаете. Например ruby-doc по ruby, замечательные туториалы по erlang которые полносью и при этом кратко описывают весь синтаксис, плюс документация ко классам и объектам (тот же ruby-doc для ruby, pod документация от моделей perl) а так же отдельным фреймворкам (для ruby например замечательно описан sinatra так же немало документации по rails).
Но этот подход хорош только если вы хорошо знаете принципы алгоритмизации (вот тут то и пригодятся книжки) и парочку других языков.
Дата: ПТ, 07/10/2011 - 09:06
Интересное высказывание... К примеру, мне понравился один урок на английском языке и я хочу его перевести на русский... Но в процессе перевода неизменно напарываюсь на то, что кое-какие операции в работе с изображениями то ли не нужны, то ли модифицированы и приходится полностью переписывать тот или иной участок урока, в итоге получается не перевод, а уже другой урок...
Дата: ПТ, 07/10/2011 - 12:25
Кто-нибудь изучал программирование только по электронным книгам, не покупая ничего в магазинах?