Автор книги: Джон Сонмез
Жанр: Поиск работы и карьера, Бизнес-Книги
Возрастные ограничения: +12
сообщить о неприемлемом содержимом
Текущая страница: 4 (всего у книги 58 страниц) [доступный отрывок для чтения: 19 страниц]
Глава 4. Как развить технические навыки
Теперь, когда вы ознакомились со всем этим длинным списком необходимых технических навыков, вам, наверное, интересно, как вообще следует их развивать и сколько времени это займет. Но пусть вас не беспокоит вопрос времени. На всем протяжении карьеры разработчика вы будете постоянно заниматься совершенствованием своих навыков. Воспринимайте этот перечень как увлекательное путешествие, а не как конечную точку.
Вам всегда будет куда расти, если захотите. Надо сказать, что лично я потратил немало времени в попытках развить свои технические навыки, идя не в том направлении.
Однако, создав в течение трех лет более пятидесяти узкоспециализированных учебных курсов для программистов, я научился молниеносно развивать технические навыки, попутно обучая им других людей.
Раньше я думал, что лучший способ освоить то или иное техническое умение – это взять большой справочник и прочитать его от корки до корки. О, я прочел просто невообразимое количество книг, в каждой из которых было минимум 800 страниц. Надо сказать, это занятие не принесло мне хоть сколько-нибудь значимой пользы. Разве что мои руки, возможно, подкачались от их веса. Я не хочу, чтобы вы допускали те же ошибки, которые в свое время сделал я. Наоборот, я хочу показать вам гораздо более эффективный способ освоения новых умений.
Как научиться быстро учиться?Перед тем как мы перейдем к изучению технических навыков, давайте немного отвлечемся и поговорим о том, какие бывают способы быстрого обучения чему-либо и о самообучении в целом. В следующей главе этого раздела мы рассмотрим тему самообучения более подробно, а пока я хочу остановиться на основах и поговорить о методологии, которую использую для быстрого изучения чего-либо.
Я уже говорил, что потратил немало часов своей жизни на изучение и преподавание различных технологий. Бывало даже так, что я за несколько недель полностью изучал какой-то язык программирования, после чего делал поворот на 180 градусов и шел его преподавать. В процессе я разработал довольно надежную систему освоения любого необходимого навыка, причем это было не столько сознательное усилие, сколько естественное следствие моих действий. Я пытался учиться так быстро, что мне приходилось придумывать эффективные способы добиваться этого и, естественно, развивать модели обучения, которые помогали мне все быстрее и быстрее осваивать новые умения.
В этой части книги я сделаю лишь краткий обзор основ быстрого обучения, а если вас интересуют подробности, то в главе «Мой десятишаговый процесс» (а также в некоторых других главах) моей книги «Путь программиста. Человек эпохи IT» вас ожидает целый курс, посвященный этой теме.
ОсновыСуть моей идеи довольно проста. Прежде всего вы должны получить представление о том, что вы изучаете, а также оценить масштаб темы. Соберите достаточно информации об интересующем вас объекте, чтобы понять общую картину. Далее вам нужно сузить вопрос до такой области, которую вы легко сможете освоить за адекватный период.
Далее вам необходимо определиться с целью. Здесь я имею в виду, что вы должны понимать, зачем вы учите что-либо, а затем определиться с метриками, по которым будет понятно, выучили вы тему или нет. Многие люди хотят чему-то научиться, но совершенно не понимают, как проверить, что они действительно научились этому.
Найдя отправную точку, приступайте к сбору ресурсов для обучения. Я рекомендую не просто открыть какую-то одну книгу и методично ее штудировать, а собрать несколько источников: другие издания, блоги, подкасты, журналы, видеокурсы и учебные пособия, мнения экспертов и так далее.
После того как у вас наберется несколько подобных ресурсов, создайте с их помощью личный учебный план. Я вижу его как некую систематическую последовательность шагов, которые должны привести вас к определенной заданной цели. Например, вы можете использовать оглавление одной из выбранных вами для чтения книг, чтобы понять, в каком порядке лучше всего изучать вопрос и какие вещи являются наиболее важными. Как только вы определите порядок, в соответствии с которым будете учиться, можете смело считать, что половина работы уже сделана.
Далее приступайте к погружению в тему. Сверяясь с планом, изучите в каждом модуле достаточное количество информации, чтобы запустить процесс обучения, а потом попробуйте «сыграть» самостоятельно. После чего отдельно поработайте с вопросами, которые были непонятны в процессе «игры». Так вы сможете обучаться на практике.
Главное на данном этапе – не поглощать сразу слишком много информации. Играя соло, будьте естественно любопытны, чтобы стимулировать обучение. Затем вернитесь к тексту и прочитайте его или воспользуйтесь материалом по интересующей вас теме, держа в голове вопросы и опираясь на полученный вами опыт, который поможет вам понять, какие вещи действительно важны.
Одной из самых больших проблем, с которой люди сталкиваются в процессе изучения объемной темы, является непонимание того, что важно, а что – нет. «Покрутив» материал и сформировав собственные вопросы, вы поймете, как решить эту проблему. После этого материал будет усваиваться куда легче, поскольку вам уже будет понятно, на что нужно обращать внимание прежде всего.
На следующем этапе попробуйте научить кого-то тому, чему вы научились сами.
Пока не особо важно, кем будет ваш ученик и в каком формате будет проходить обучение. Вы можете «обучать» хоть свою собаку или белочек в парке, суть сейчас не в этом. Здесь важно то, что в процессе рассказа вам приходится упорядочивать свои мысли таким образом, чтобы их можно было внятно выразить.
Именно на этом этапе изучение переходит в понимание.
В общем, все вышесказанное и есть та самая формула быстрого обучения. Если вы хотите увидеть более обстоятельный пример в компании с учебным пособием и видеороликами, его можно найти на моем сайте. А теперь давайте перейдем к более подробному рассмотрению процесса изучения и развития технических навыков.
Обучение на практикеЯ придерживаюсь мнения, что лучший способ обучения – это обучение на практике. Когда речь заходит о технических навыках, это утверждение становится не просто моим мнением, а фактически аксиомой. Большинство технических навыков невозможно освоить, лишь прочитав книгу или посмотрев видео.
Да, книга или видеоролик позволят вам получить представление о том, что возможно сделать с использованием конкретной технологии, языка программирования или инструмента. Однако пока вы не пощупаете эти технологии руками или не попробуете решить какую-либо проблему, используя новые знания, ваше понимание изучаемого предмета будет оставаться поверхностным. Практически все навыки, о которых я говорил в предыдущей главе, требуют большего, чем просто книжные знания. Только так вы сможете стать по-настоящему компетентными в выбранной вами области.
Приведу довольно очевидный пример: как вы считаете, можно научиться программированию, читая про синтаксис языка?
Если вы никогда ошибочно не сохраняли файл в неправильную ветку, не работали не с той версией исходного кода и не использовали историю версий, чтобы выяснить, на каком этапе появилась ошибка, то вы не будете знать, как пользоваться системой контроля версий – вам просто будет казаться, что вы разбираетесь в вопросе.
(Если упомянутые термины вам незнакомы, не переживайте, сейчас речь не о них.)
Напомните-ка мне, я случайно не обещал вам рассказать «где-то дальше в книге» про технические навыки? Все же вы читаете эту книгу для того, чтобы чему-то научиться, верно?
Правильный ответ на оба эти вопроса – «да». Однако обучение на этом не заканчивается.
Прочитав все вышесказанное, вы получите общее представление об обсуждаемой нами теме, но рано или поздно вам придется отложить книгу и сделать что-то самостоятельно, чтобы освоить то, о чем вы прочитали (я имею в виду упомянутые мной технические навыки).
Как обучаться на практике?Сильно рискуя получить почетное звание Капитана Очевидности, я все же решил поговорить с вами о том, как правильно обучаться на практике. Отнеситесь ко всему, что будет далее сказано, как к полезной напоминалке.
Всякий раз, приступая к освоению какого-либо технического навыка, определите для себя, для чего он вам нужен. Если умение не требуется вам «здесь и сейчас», подумайте, а нужен ли вам вообще этот навык? Мы тратим огромное количество времени на изучение технических умений, которые нам никогда не пригодятся. Поверьте, лично я делал это столько раз, что это даже не смешно.
Научиться чему-то гораздо проще, если вы будете испытывать в этом навыке срочную необходимость. Гарантирую, что если вам понадобится освоить прыжки с парашютом, то быстрее всего вы научитесь это делать в самолете, из которого нужно как можно быстрее эвакуироваться.
Но как быть, если прямо сейчас у вас нет острой необходимости в выбранном вами навыке? Что делать, если вы изучаете что-то просто потому, что хотите получить работу, где вам, скорее всего, придется использовать это умение? Ответ прост – найдите причину использовать выбранный вами навык здесь и сейчас. Создайте себе цель.
Пример обучения на практикеДавайте разберем вопрос на примерах. Представьте, что вы очень сильно хотите разобраться в реляционных базах данных. Для этого вы можете прочесть книгу, посвященную данной теме, поупражняться в искусстве конструирования SQL-запросов и в результате чему-нибудь научиться.
А теперь представьте, что ваша цель заключается в создании базы данных всех фильмов, имеющихся в вашей коллекции. А также представьте, что вы хотите уметь делать запросы к этой базе, добавлять в нее новые фильмы, удалять старые, обновлять названия и т. д. А если вы захотите создать приложение, чтобы с его помощью упростить работу с базой данных?
Представили? Поздравляю, у вас появилась цель! Так, и что дальше? Как подойти к изучению темы реляционных баз данных? А вот теперь вы можете смело открывать книгу по теме или просмотреть соответствующие видеоуроки, чтобы найти информацию, необходимую для реализации вашей идеи. И вот теперь вы будете заняты созданием реального продукта, а не просто выполнением какого-то абстрактного тестового задания.
Только представьте, как много вы всего сможете узнать, руководствуясь подобным подходом. Ведь это куда веселее, чем выполнение всяких непонятных лабораторок?
Как я обучаю техническим навыкамКак я уже говорил, я помог с освоением технических навыков довольно большому количеству людей. Возможно, если вы узнаете, как я это делаю, то сможете и сами научиться этому. Как думаете, я прав?
Когда я обучаю людей чему-то, я хочу, чтобы затраченные ими средства окупились в полной мере. Я не хочу загружать их вещами, которые им вряд ли пригодятся, или задачами, которые они вполне могут решить сами, если столкнутся с ними.
Я стараюсь фокусироваться на том, чтобы дать людям информацию, которая будет полезна здесь и сейчас, а не «через сто лет» и «на всякий случай». Моя программа обучения техническим навыкам основывается на трех столпах.
• Как ученики могут использовать эту технологию?
• С чего начать?
• 20 % информации, знания которой достаточно, чтобы добиться максимальной эффективности.
Разберем каждый из этих пунктов подробнее.
Как можно использовать технологию?Я считаю, что Google может дать ответ на любой вопрос. Но получить ответ не удастся, если вы не знаете, что спрашивать. Поэтому обучение я начинаю с рассказа о конкретной технологии и описания ее возможностей.
Разумеется, это всего лишь обзор. Я не пытаюсь показать сразу все способы использования новых знаний, а просто рассказываю о наиболее интересных моментах изучаемой темы.
Когда заходит речь о языках программирования, я всегда начинаю с истории языка и описания типичных областей его применения. Затем я перехожу к описанию всех конструкций языка (делая акцент на уникальных). Следующий этап – знакомство с библиотеками как стандартной части языка и описание способов их использования.
Целью такого подхода является поверхностное описание темы, без углубления в детали. Если вас заинтересует что-то конкретное, вы можете узнать об этом самостоятельно. На этом этапе я пытаюсь сделать неизвестное известным касаемо общих понятий. Я хочу, чтобы ученики поняли, что именно они не понимают и могли закрыть этот пробел самостоятельно, если в этом будет нужда.
Я стараюсь изложить тему так, чтобы после обучения вы говорили не «Я не знаю, может ли технология Х решить эту проблему», а «Я знаю, что технология Х может решить эту проблему, но пока слабо представляю как. Если мне понадобится узнать ответ на этот вопрос, я смогу его найти».
Представьте, что вы пытаетесь изучить деревообработку, не зная, что существует такая вещь, как дремель или фрезерный станок. Вы не обязаны знать, как пользоваться этими штуками, но если вы даже не подозреваете об их существовании, то вы ощутимо ограничиваете себя в возможностях.
Как начать?На следующем этапе я пытаюсь научить своих студентов умению приступать к изучению чего-либо. Зачастую эта часть освоения технологии является наиболее сложной – она предшествует «действию», поэтому я стараюсь сделать данный процесс как можно более безболезненным. Моя задача состоит в том, чтобы показать студентам, как загрузить и установить все необходимое для работы, а затем создать проект и скомпилировать свой первый код.
Как только человек преодолевает это препятствие, он может приступать к экспериментам, пытаясь создать что-то конкретное в процессе работы с технологией. Если входной порог оказывается слишком высоким, некоторые люди так и остаются на уровне чтения книг о технологии и просмотра обучающих видео, не решаясь «запачкать руки».
Что бы вы ни изучали, держите в уме эту информацию. Сосредоточьтесь на способах того, как начать работу с определенным техническим навыком на ранних этапах процесса обучения. Поищите соответствующие учебные пособия или руководства, которые рассказывают о том, как начать работу и сдвинуться с мертвой точки.
20 % информации для максимальной эффективностиНапоследок я пытаюсь научить студентов тем 20 % информации, которые они будут использовать 80 % времени. Практически все в нашей жизни подчиняется так называемому принципу Парето. Он звучит следующим образом:
«20 % усилий дают 80 % результата, а остальные 80 % усилий – лишь 20 % результата».
Освоение технического навыка напрямую зависит от понимания, что именно входит в эти 20 %, которые вы будете использовать 80 % времени.
На этом этапе практика играет более значимую роль, чем теория. Большинство книг и учебных пособий имеют формат справочников, которые не делают акцент на 20 % наиболее важных технологий. Когда вы активно работаете с технологией, то быстро понимаете, какая ее часть используется чаще всего, поскольку нехватка знаний в этой области ощутимо скажется на вашей работе.
Предлагаю вернуться к примеру с реляционными базами данных. Написание запросов для выбора данных из таблиц совершенно точно входит в 20 % наиболее востребованных в данной технологии умений. Если вы прочитаете книгу, посвященную языку SQL, то увидите, что темам получения данных, их добавления, обновления, удаления, а также индексации уделяется одинаковое количество внимания. Но если вы попытаетесь создать собственную базу данных, то наверняка заметите огромное количество запросов, связанных с выбором данных. Помимо прочего, вы очень быстро встретитесь с необходимостью объединения таблиц.
Вместо того чтобы тратить время на изучение всех тонкостей теории реляционных баз данных, гораздо эффективнее сосредоточиться на том, чтобы научиться писать операторы выбора, объединять таблицы и выполнять другие операции общего характера, составляющие заветные 20 % наиболее востребованных умений.
Вот почему практика столь важна.
Бывает полезно понаблюдать за работой эксперта в интересующей вас области, или даже предложить ему посотрудничать с вами в качестве ученика. Видя, как мастер применяет те навыки, которым вы хотите научиться, вы сможете понять его 20 % и ускорить процесс своего роста в профессии. Обучение в процессе работы – чрезвычайно эффективный способ развития себя как специалиста.
Читайте, что пишут экспертыНапоследок я хочу дать вам еще один совет по развитию технических навыков. Уделяйте побольше внимания чтению экспертов, которые уже обладают нужными вам техническими навыками. Когда я изучал свое ремесло, я тратил около 30 минут в день на чтение разных блогов, связанных с интересующими меня темами. Когда мне потребовалось вникнуть в суть тонкостей языка C++, я глотал книги Скотта Майерса по эффективному программированию на C++. Зачастую мнение эксперта помогает разобраться в каком-либо вопросе, до ответа на который додуматься самостоятельно было бы невозможно.
Одно дело понять синтаксис языка программирования или принципы использования фреймворка; и совсем другое – овладеть ими на первоклассном уровне. Присмотритесь к тому, как эксперты применяют на практике те навыки, которые вы только пытаетесь приобрести. Почитайте, о каких проблемах и тонкостях упоминают признанные профи в данной области. Подобная информация способствует более качественному освоению темы.
Практика, практика и еще раз практикаНадеюсь, мои советы окажутся полезными и помогут вам получать и развивать необходимые умения. По-моему, польза обучения на практике очевидна, особенно в области технических навыков.
Я также надеюсь, что вы осознаете необходимость наличия плана обучения и его четкой цели.
Скажу напоследок лишь одно: практикуйтесь.
Оттачивание любых технических навыков требует времени. Чтобы в чем-то преуспеть, придется много тренироваться. Не расстраивайтесь, если вам кажется, что обучение займет обескураживающе большое количество времени, особенно в ситуациях, когда вы застопорились. Навыки придут, если у вас есть план и четкая цель. Продолжайте в том же духе и просто доверьтесь процессу.
Глава 5. Как выбрать язык программирования
Самый популярный вопрос, который задают мне совсем-совсем новички: «Какой язык программирования выбрать?» Для некоторых это становится камнем преткновения, который им так и не удается преодолеть.
В своей преподавательской практике я встречал множество разработчиков, которые были не уверены в себе и постоянно меняли свой выбор, прыгая от одного языка программирования к другому из-за боязни принять неправильное решение. Если вы узнали в этом описании себя, то эта глава для вас.
В ней я сначала развею часть ваших сомнений, а затем поделюсь парой идей по выбору первого языка программирования, основанных на практике.
Выбор языка практически ни на что не влияетДа-да, вы все правильно прочитали. Как ни странно, но не имеет особого значения, какой язык программирования вы выберете. Есть несколько причин, почему я так считаю, и одна из них – многие языки программирования по своей сути очень похожи. Да, синтаксис может разниться. Да, языки программирования могут выглядеть по-разному. У них даже могут быть совершенно разные наборы конструктивных особенностей. Но фактически у всех языков программирования между собой куда больше общего, чем вы могли бы подумать.
Практически в каждом из них присутствуют конструкции ветвления, циклы, возможность создания методов или процедур, а также способы организации кода на высоком уровне абстракции. Существует огромное количество языков программирования, которые настолько похожи, что если вы знаете один их них, то почти знаете и другой. Примерами такого рода являются C# и Java. JavaScript схож с каждым из них.
Самое сложное – выучить первый язык программирования. Как только вы это сделаете, освоить другой язык будет гораздо проще. После изучения двух или более языков программирования каждый последующий будет даваться вам все проще и проще. Если сейчас вы не знаете ни одного языка, мое утверждение может показаться вам легковесным, однако доверьтесь моему опыту. Как я уже говорил, многие языки программирования похожи, и поэтому вам будет не очень сложно переключаться между ними. То есть даже если вы выучите язык программирования, а затем решите, что это не то, что вам нужно, или получите работу, на которой требуется использовать другой язык программирования, это не будет иметь большого значения. Самое трудное – тяжелая работа по изучению первого языка – уже позади.
Если вы посмотрите на вакансии таких крупных компаний, как Microsoft или Google, то увидите, что большинство из них не содержит требований к языку программирования. У меня была масса собеседований, на которых меня просили решить задачу по программированию на любом удобном мне языке. Никаких ограничений, никакого конкретного языка программирования, который я должен был бы знать.
Правообладателям!
Данное произведение размещено по согласованию с ООО "ЛитРес" (20% исходного текста). Если размещение книги нарушает чьи-либо права, то сообщите об этом.Читателям!
Оплатили, но не знаете что делать дальше?