Я стараюсь изложить тему так, чтобы после обучения вы говорили не «Я не знаю, может ли технология Х решить эту проблему», а «Я знаю, что технология Х может решить эту проблему, но пока слабо представляю как. Если мне понадобится узнать ответ на этот вопрос, я смогу его найти».
Представьте, что вы пытаетесь изучить деревообработку, не зная, что существует такая вещь, как дремель или фрезерный станок. Вы не обязаны знать, как пользоваться этими штуками, но если вы даже не подозреваете об их существовании, то вы ощутимо ограничиваете себя в возможностях.
Как начать?
На следующем этапе я пытаюсь научить своих студентов умению приступать к изучению чего-либо. Зачастую эта часть освоения технологии является наиболее сложной – она предшествует «действию», поэтому я стараюсь сделать данный процесс как можно более безболезненным. Моя задача состоит в том, чтобы показать студентам, как загрузить и установить все необходимое для работы, а затем создать проект и скомпилировать свой первый код.
Как только человек преодолевает это препятствие, он может приступать к экспериментам, пытаясь создать что-то конкретное в процессе работы с технологией. Если входной порог оказывается слишком высоким, некоторые люди так и остаются на уровне чтения книг о технологии и просмотра обучающих видео, не решаясь «запачкать руки».
Что бы вы ни изучали, держите в уме эту информацию. Сосредоточьтесь на способах того, как начать работу с определенным техническим навыком на ранних этапах процесса обучения. Поищите соответствующие учебные пособия или руководства, которые рассказывают о том, как начать работу и сдвинуться с мертвой точки.
20 % информации для максимальной эффективности
Напоследок я пытаюсь научить студентов тем 20 % информации, которые они будут использовать 80 % времени. Практически все в нашей жизни подчиняется так называемому принципу Парето. Он звучит следующим образом:
«20 % усилий дают 80 % результата, а остальные 80 % усилий – лишь 20 % результата».
Освоение технического навыка напрямую зависит от понимания, что именно входит в эти 20 %, которые вы будете использовать 80 % времени.
На этом этапе практика играет более значимую роль, чем теория. Большинство книг и учебных пособий имеют формат справочников, которые не делают акцент на 20 % наиболее важных технологий. Когда вы активно работаете с технологией, то быстро понимаете, какая ее часть используется чаще всего, поскольку нехватка знаний в этой области ощутимо скажется на вашей работе.
Предлагаю вернуться к примеру с реляционными базами данных. Написание запросов для выбора данных из таблиц совершенно точно входит в 20 % наиболее востребованных в данной технологии умений. Если вы прочитаете книгу, посвященную языку SQL, то увидите, что темам получения данных, их добавления, обновления, удаления, а также индексации уделяется одинаковое количество внимания. Но если вы попытаетесь создать собственную базу данных, то наверняка заметите огромное количество запросов, связанных с выбором данных. Помимо прочего, вы очень быстро встретитесь с необходимостью объединения таблиц.
Вместо того чтобы тратить время на изучение всех тонкостей теории реляционных баз данных, гораздо эффективнее сосредоточиться на том, чтобы научиться писать операторы выбора, объединять таблицы и выполнять другие операции общего характера, составляющие заветные 20 % наиболее востребованных умений.
Вот почему практика столь важна.
Бывает полезно понаблюдать за работой эксперта в интересующей вас области, или даже предложить ему посотрудничать с вами в качестве ученика. Видя, как мастер применяет те навыки, которым вы хотите научиться, вы сможете понять его 20 % и ускорить процесс своего роста в профессии. Обучение в процессе работы – чрезвычайно эффективный способ развития себя как специалиста.
Читайте, что пишут эксперты
Напоследок я хочу дать вам еще один совет по развитию технических навыков. Уделяйте побольше внимания чтению экспертов, которые уже обладают нужными вам техническими навыками. Когда я изучал свое ремесло, я тратил около 30 минут в день на чтение разных блогов, связанных с интересующими меня темами. Когда мне потребовалось вникнуть в суть тонкостей языка C++, я глотал книги Скотта Майерса по эффективному программированию на C++. Зачастую мнение эксперта помогает разобраться в каком-либо вопросе, до ответа на который додуматься самостоятельно было бы невозможно.
Одно дело понять синтаксис языка программирования или принципы использования фреймворка; и совсем другое – овладеть ими на первоклассном уровне. Присмотритесь к тому, как эксперты применяют на практике те навыки, которые вы только пытаетесь приобрести. Почитайте, о каких проблемах и тонкостях упоминают признанные профи в данной области. Подобная информация способствует более качественному освоению темы.
Практика, практика и еще раз практика
Надеюсь, мои советы окажутся полезными и помогут вам получать и развивать необходимые умения. По-моему, польза обучения на практике очевидна, особенно в области технических навыков.
Я также надеюсь, что вы осознаете необходимость наличия плана обучения и его четкой цели.
Скажу напоследок лишь одно: практикуйтесь.
Оттачивание любых технических навыков требует времени. Чтобы в чем-то преуспеть, придется много тренироваться. Не расстраивайтесь, если вам кажется, что обучение займет обескураживающе большое количество времени, особенно в ситуациях, когда вы застопорились. Навыки придут, если у вас есть план и четкая цель. Продолжайте в том же духе и просто доверьтесь процессу.
Глава 5. Как выбрать язык программирования
Самый популярный вопрос, который задают мне совсем-совсем новички: «Какой язык программирования выбрать?» Для некоторых это становится камнем преткновения, который им так и не удается преодолеть.
В своей преподавательской практике я встречал множество разработчиков, которые были не уверены в себе и постоянно меняли свой выбор, прыгая от одного языка программирования к другому из-за боязни принять неправильное решение. Если вы узнали в этом описании себя, то эта глава для вас.
В ней я сначала развею часть ваших сомнений, а затем поделюсь парой идей по выбору первого языка программирования, основанных на практике.
Выбор языка практически ни на что не влияет
Да-да, вы все правильно прочитали. Как ни странно, но не имеет особого значения, какой язык программирования вы выберете. Есть несколько причин, почему я так считаю, и одна из них – многие языки программирования по своей сути очень похожи. Да, синтаксис может разниться. Да, языки программирования могут выглядеть по-разному. У них даже могут быть совершенно разные наборы конструктивных особенностей. Но фактически у всех языков программирования между собой куда больше общего, чем вы могли бы подумать.
Практически в каждом из них присутствуют конструкции ветвления, циклы, возможность создания методов или процедур, а также способы организации кода на высоком уровне абстракции. Существует огромное количество языков программирования, которые настолько похожи, что если вы знаете один их них, то почти знаете и другой. Примерами такого рода являются C# и Java. JavaScript схож с каждым из них.
Самое сложное – выучить первый язык программирования. Как только вы это сделаете, освоить другой язык будет гораздо проще. После изучения двух или более языков программирования каждый последующий будет даваться вам все проще и проще. Если сейчас вы не знаете ни одного языка, мое утверждение может показаться вам легковесным, однако доверьтесь моему опыту. Как я уже говорил, многие языки программирования похожи, и поэтому вам будет не очень сложно переключаться между ними. То есть даже если вы выучите язык программирования, а затем решите, что это не то, что вам нужно, или получите работу, на которой требуется использовать другой язык программирования, это не будет иметь большого значения. Самое трудное – тяжелая работа по изучению первого языка – уже позади.