Статьи

Загадка обучения

Когда я начал профессионально работать в области информационных технологий в 1989 году, все было довольно просто с точки зрения выбора направления, в которое нужно идти. По крайней мере, в моем районе (Южная Флорида) вы попали в одну из следующих областей:

  • Управление сетями и системами
  • Администрирование базы данных
  • Разработка программного обеспечения
  • Задачи, связанные с управлением проектом (включая работу по обеспечению качества)

ColdFusion был моей технологией выбора, и она длилась у меня почти десять лет.

Я выбрал путь разработки программного обеспечения, и в течение очень долгого времени было легко выбрать язык программирования, на котором вы могли бы основывать свою карьеру. В моем случае я начал с Clipper (компилятор на основе dBase) и в конечном итоге занялся разработкой клиент-сервер с использованием PowerBuilder, последний из которых был моим инструментом goto почти пять лет.

И даже когда я начал заниматься веб-разработкой, инструменты и технологии по-прежнему были просты в выборе, в первую очередь потому, что сеть была еще очень молодой и простой после пост-обратной разработки в стиле обновления страницы на стороне сервера. ColdFusion был моей технологией выбора, и она длилась у меня почти десять лет. И совсем недавно, jQuery и JavaScript были моей целью с 2008 года.

Есть причина, по которой я тебе все это рассказываю.


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

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

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


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

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

Вот почему я упоминал о своей карьере на сегодняшний день. Я думаю, что это похоже на то, что делают многие мои сверстники, где мы могли бы с уверенностью полагаться на знание некоторой «вещи» за «х» количество лет, прежде чем мы должны были начать переобучаться. Если вы находитесь в мире веб-разработки, это уже не так, и, по моему мнению, это ограничивает карьеру. Я не говорю, что вам нужно уходить и изучать каждую новую библиотеку, которая выходит. Честно говоря, я думаю, что многие из библиотек и инструментов выталкиваются:

  • Предназначены, чтобы поцарапать очень специфический зуд
  • Реплицируйте существующий инструмент и предлагайте небольшую дополнительную ценность
  • Предназначены для удовлетворения чьего-либо эго в типе вещей «посмотри на то, что я построил»

Но есть четкое обоснование того, чтобы оставаться на вершине новых технологий, особенно когда вы видите, что ваши коллеги обсуждают их. И, чтобы быть ясным, я не определяю узников как тех, с кем я работаю. Я внимательно слежу за людьми в Твиттере, Фейсбуке, Google+, блогах и форумах, чтобы понять, где они думают. Если вы не делаете то же самое, вы делаете себе и своей карьере медвежью услугу.

Когда вы становитесь старше (да, я касаюсь возраста), для большинства «время» становится самым большим ограничивающим фактором, чтобы оставаться в курсе. Я могу засвидетельствовать это, так как в возрасте 45 лет с кучей семейных обязательств, я должен быть чрезвычайно регламентирован, чтобы посвятить необходимое «учебное время», в то же время гарантируя, что я посвящаю «время» своей семье (что является моим приоритетом номер один) , И я уверен, что я не одинок в этой головоломке. Я вспоминаю, когда мне было двадцать с лишним лет, и я писал для печатных журналов (вы, ребята, помните это правильно?), И мои коллеги спрашивали: «Как у вас есть время для этого?». Что ж, он прошел полный круг, и я спрашиваю своих 20-летних друзей-разработчиков об этом.

Я понял, что не могу сравнивать себя с 20 с чем-то, потому что наши приоритеты в большинстве случаев разные. У молодого доллара всегда будет больше времени, чтобы сосредоточиться на новейших вещах, что позволит ему или ей поработать и даже создать следующий замечательный инструмент. И это потрясающе, и я сам помню эти дни!

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


Если вы посмотрите на технологии, которые в настоящее время доступны, то легко понять, с чего начать, тем более, что выбрать. Я сочувствую тебе, и ты, конечно, не одинок. Часть проблемы заключается в том, что как разработчики, мы, естественно, заинтересованы в новых технологиях. Мне нравится называть это синдромом «мотылька к огню»:

  • О, смотрите, есть новая библиотека для имитации веб-компонентов! (флаттер, флаттер, флаттер)
  • Этот авторитет только что выпустил этот новый препроцессор! (флаттер, флаттер, флаттер)
  • Боже мой, вот 4-й SaaS, который предлагает бэкэнд-сервисы в реальном времени! (флаттер, флаттер, флаттер)

Список можно продолжать и продолжать. Я пытаюсь понять, что порой мы страдаем от дефицита внимания и пытаемся рационализировать его, думая, что это немедленно решит несуществующую или будущую проблему для нас. По сути, мы являемся разработчиками технологий, которые делают «на всякий случай». В действительности важно откинуться на спинку кресла и определить, что вы пытаетесь достичь, и как текущий набор инструментов решает ваши проблемы в зависимости от того, куда вы хотите направиться.

Часть проблемы заключается в том, что как разработчики, мы, естественно, заинтересованы в новых технологиях.

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

Например, если вы являетесь веб-разработчиком внешнего интерфейса, и это то, чем вы планируете быть в течение некоторого времени, я думаю, что вы должны быть в курсе таких вещей, как AMD, ES6, Sass и Yeoman гораздо важнее, чем погружение в IPTables, ActiveRecord, WebView или Amazon EC2. Прежде чем все сойдут с ума из-за того, что я только что сказал, давайте проясним, что если вам удастся изучить все эти вещи (например, разработчик с полным стеком), вам потребуется больше сил, потому что это сделает вас более ценными.

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

Например, интерфейс для разработчиков переднего плана достаточно вовлечен, и постоянная работа будет долгое время занимать вас. Лу Лазарис написал в 2011 году пост, озаглавленный «Навыки для разработчиков переднего плана», и во многих случаях он в курсе. Если вы посмотрите на его список, он специально нацелен на интерфейсные технологии, которые важны для этой роли. Это укрепляет мое мнение о том, что лучше сузить область изучения того, что вы изучаете, до управляемых кусков в рамках роли, в которой вы находитесь. Но также важно еще больше отфильтровать подобные списки. Считаю ли я, что CoffeeScript имеет решающее значение для моего успеха в качестве внешнего разработчика? Абсолютно нет, поэтому я специально не уделяю этому времени.

Опять же, я не защищаю не учиться так много, как вы можете. Несмотря на то, что я явно нахожусь на переднем крае вещей, в настоящее время я работаю над изучением Ruby и Rails, потому что я хотел бы изучить новый стек на стороне сервера, чтобы дополнить свои навыки. Для меня это значит пожертвовать обучением тому, как использовать что-то вроде Йомана, но я потратил время на то, чтобы определить ценностное предложение идти по этому пути, и я думаю, что оно того стоит.


Обучение приходит в разных стилях. Я учусь лучше всего:

  • Чтение книги (настоящей с настоящими бумажными страницами)
  • Печатая в примерах кода и видя результаты
  • Имея наставника, я могу задавать вопросы

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

Я все больше склоняюсь к онлайн-курсам, потому что они достигли уровня, когда во многих случаях они сопоставимы по качеству со своими братьями на месте. Они также предоставляют гибкость, позволяя вам делать вещи по собственному графику (почти всегда) и сосредоточиться на технологиях, которые важны для вас.

В моем случае я недавно подписался на One Month Rails, который предложил мне следующее:

  • Гибкость : я участвую в своем графике без необходимости жертвовать огромным количеством своего личного времени
  • Доступность : это $ 49 $ 99 и, кажется, хорошо структурированы по цене.
  • Менторство : я могу напрямую связаться с создателем курса и получить поддержку их сообщества

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

Я рассматриваю это как возможность быстрого запуска, которая будет дополнена такими сайтами, как Nettuts + и Tuts + Premium, а также книгами и контактами моего сообщества. Но, в конечном счете, гибкость и темп курса — это то, что, как я чувствую, позволит мне своевременно узнавать что-то новое. Стоимость, безусловно, является фактором, который вам нужно взвесить в сравнении с ожидаемой выгодой обучения и полученным в результате обновленным навыком.

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

Но вам нужно выделить время, чтобы учиться. Независимо от того, какие варианты обучения доступны, если вы не выделите какое-то выделенное время для обучения, все это не имеет значения. Я лично обнаружил, что тратить один-два часа, два-три раза в неделю сразу после работы, кажется, хорошо, потому что мой разум все еще находится в режиме разработчика. Я недавно поболтал с другом, который считает, что лучше просыпаться очень рано (6 утра) и сосредоточиться на обучении в течение первых нескольких часов утра перед началом работы. Таким образом, он свеж и сосредоточен, не отвлекается и не беспокоится о своей работе.

Мой хороший друг и заядлый разработчик Джо Макканн предложил этот замечательный отзыв:

« Я еще кое-что добавлю, что изучая философию в колледже, я узнал не то, чему я учился, а то, как я на самом деле изучаю вещи. выучить новый навык или улучшить текущие.

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

Хорошо сказано.


Само собой разумеется, что я думаю, что Nettuts + и различные свойства Envato предлагают одни из лучших вариантов онлайн-обучения. Кроме того, вот несколько учебных сайтов, которые я использовал и рекомендую:

  • Codeacademy : изучите JS, Ruby, Python и многое другое через их интерактивный сайт
  • Ember 101 : Райан Флоренс сделал отличную работу по созданию скринкастов, которые проведут вас через процесс изучения Ember
  • Почему Poignant Guide to Ruby : стиль требует некоторого привыкания, но это определенно отличный ресурс для изучения Ruby
  • Egghead.io : Ориентирован почти исключительно на AngularJS и рекомендуется многими членами сообщества
  • Учебное пособие по Ruby on Rails : это учебное пособие для тех, кто только начинает заниматься Rails

Если вам нужно что-то более структурированное и хардкорное, то новой тенденцией станут локальные буткемпы, где вы потратите значительное количество времени на изучение использования новейших технологий. Просто отметьте, что многие из них требуют, чтобы вы переместились туда, где находится буткемп, и посвятили ему полный рабочий день в течение нескольких недель. Кроме того, эти курсы дорого обходятся в тысячи долларов в обмен на более личный опыт обучения. Я лично участвовал в буткемпе Bloc.io, но переезда не требовалось. Хотя я не смог закончить его из-за нехватки времени, я бы порекомендовал его. Вот некоторые из буткемпов, которые получили много положительной прессы:

  • Bloc.io : хорошо структурированный курс, который проведет вас через новейшие технологии и предоставит вам онлайн-наставничество по электронной почте, в чате или голосовой связи. Не требует от вас перемещения.
  • Школа хакеров : базирующийся в Нью-Йорке трехмесячный учебный лагерь, в котором вы будете изучать навыки программирования на Ruby и Python на полную ставку
  • Starter League : На месте в Чикаго, штат Иллинойс, и в партнерстве с 37-ю сигналами (создателями Basecamp), чтобы улучшить свой опыт обучения.

Сайт BootCamper собирает список доступных буткемпов и предоставляет информацию о них в доступной для поиска форме.


Главное — продолжать учиться и делать это в управляемом темпе и продуманно.

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

Поэтому я решил сосредоточиться на вещах, которые являются своевременными и актуальными, но, возможно, не являются передовой и новейшей крутой игрушкой. Я считаю, что это гораздо более управляемый способ обучения для меня . И я также думаю, что важно вернуться к проверенным и истинным вещам, которые могут быть не самой последней моделью автомобиля, но могут иметь некоторые большие сюрпризы для вас под капотом. Я оглядываюсь назад на великий пост Джеффа Этвуда «Почему Руби?» где он обсуждает свой выбор использования Ruby для построения Discourse и особенно затрагивает зрелость Ruby и отсутствие крутости.

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

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