Побег из пустыни отчаяния кодирования - 1258 часов

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

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

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

Варианты были следующие:

  1. Возьмите неоплачиваемый отпуск по работе, живя на свои сбережения в течение 3 месяцев, чтобы посмотреть, сколько я смогу научить себя, разрабатывая приложения для Android, половину своего времени посвящая программе Udacity Android Nanodegree, а другую половину бесплатно работаю над проектом для пары технических команд в моей компании.
  2. Принятие квазитехнической роли в пространстве Ad-Tech, что само по себе было отличным и гораздо более безопасным путем, однако не привело к превращению в разработчика.

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

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

Таким образом, переезд из Мэриленда в Калифорнию, где я мог быть погружен в центр людей, работающих над множеством идей.

Рано утром я наткнулся на TED Talk создателя YouTube, Кейси Нейстата, и это было именно то, что мне нужно было услышать, слушая, как он описывает прыжок к своей первой творческой работе, обеспечивая ему жизнь взлетно-посадочная полоса доходов за 3 недели.

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

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

Что такое «Пустыня отчаяния»?

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

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

5 этапов обучения программированию

  1. Медовый месяц в руках - вы пишете пару утверждений If / Else, все легко и увлекательно. Вы не можете понять, почему все не занимаются программированием.
  2. Обрыв замешательства. Вы быстро теряетесь по мере обострения ситуации. Вы понимаете, насколько вы не знаете того, чего не знаете. Когда вы попадаете в тупик, вы не знаете, где найти все, что нужно для устранения неполадок, и не можете представить себе, сколько времени вам понадобится, чтобы стать недостаточно компетентным.
  3. Пустыня отчаяния - (определено выше)
  4. Превосходный рост - вы можете выбрать новую концепцию, изучить документацию, преодолеть препятствия при длительной отладке, но в конечном итоге реализовать конечный результат. Ваша работа не является законченным продуктом, но вы научились учиться. Несмотря на обнадеживающий прогресс, есть ощущение синдрома самозванца. Как описывает успешный писатель-фантаст Нил Гейман: Первая проблема любого даже ограниченного успеха - это непоколебимая уверенность в том, что вам что-то сходит с рук и в любой момент они обнаружат вас .
  5. Готовность к работе - у вас есть возможность производить готовый качественный продукт и вы не только понимаете, как заставить функции работать, но и знаете, почему передовые методы являются наиболее эффективным подходом.

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

Мои максимы обучения программированию

Предупреждение: результаты могут отличаться.

Задайте вопрос о предоставляемых вариантах

«Если вы не выбираете ту жизнь, которой хотите жить, скорее всего, кто-то другой выберет ее за вас. И результаты, вероятно, не будут хорошими ».

- «» Джеймс Алтучер, предприниматель, автор и подкастер

Я начал изучать Java в конце 2014 года и начал проводить по 10 часов в неделю по ночам и в выходные дни, увеличив это количество до 18 часов в неделю, работая больше, чем на полную ставку в сфере цифрового маркетинга.

К началу июня 2015 года я писал свои первые строки кода для Android, но к концу лета я почувствовал себя застрявшим в пустыне отчаяния при программировании, поскольку работал над крупным проектом для Android Nanodegree так и не доработан.

Варианты снова раскрылись передо мной…

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

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

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

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

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

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

Окружите себя другими с похожими целями

Я слышал, как Джошуа Вайцкин, вундеркинд и участник боевых искусств, описал принцип Плюс | Минус | Равно к обучению в подкасте Тима Феррисса.

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

Чтобы расширить свою сеть людей, чтобы учиться вне моей группы друзей, я начал проводить время в местном коворкинг-пространстве HackerDojo, создавая возможности для побочных проектов на работе и обращаясь к руководителям курсов моего Android Nanodegree, чтобы организовать местную встречу студентов, спонсируемую в их штаб-квартире. Все началось с пробного запуска с одним или двумя разработчиками, которые пытались ответить на вопросы, а затем расширилось до более крупной и организованной программы.

Если вы не хотите делать это бесплатно, не делайте этого вообще

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

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

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

Примите жесткий совет

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

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

Он ответил…

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

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

Не зацикливайтесь на прошлых ошибках, проанализируйте их и двигайтесь вперед

После того, как я в колледже баловался JavaScript, пытаясь создать полностью адаптивный веб-сайт с нуля для продукта, который я создал, и выполнял побочный проект на Python в моей маркетинговой роли, работая над решением Ad-Tech без особого энтузиазма, я бы сделал еще один шанс кодированию. Если бы с Java ничего не вышло, чтобы создавать приложения для Android, я бы навсегда закончил кодирование.

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

Сбои → Исправления

  1. Поглощение содержания: Читая документацию и руководства, я понял концепции на поверхностном уровне во время использования, однако концепции не углубились. Для Java и Android Я боролся с этим, организовав информацию в легко доступные и доступные для поиска компоненты с примерами, дошел до создания коротких ссылок для запоминания с помощью bit.ly. Для вводного курса Java я создал bit.ly/guide-introjava и bit.ly/and-resources, когда начал писать код для Android. Это замедляет потребление информации, но укрепляет и делает информацию доступной для других.
  2. Тренинги / проекты: Мои тренинги / проекты не отражали реальную рабочую среду. Я изучал Академию кода с JavaScript на младшем году обучения в колледже, потому что хотел сделать портфолио для отображения продукта, который я создавал. Упражнения Code Academy по заполнению пустого кода и созданию базовой игры сами по себе не были правильными основами, но, несмотря на то, что я сразу бросился в масштабный проект, без более мелких, ведущих к нему, тогда удивился, почему у меня ничего не получилось. Также я намеренно игнорировал такие ресурсы, как bootstrap.io, чтобы мой конечный проект был более аутентичным. Оказывается, я так и не закончил. После того, как я выучил Java, вместо того, чтобы прыгать через голову и создавать приложение с нуля, я исследовал курсы Android, которые дадут мне практические навыки. Мне повезло, что Google только что анонсировал Udacity Android Nanodegree, который они помогли создать. Я знал, что это хорошо, потому что Google предлагал разработчикам собственное внутреннее обучение ABC (Android Bootcamp), которое было заменено Nanodegree. Набор курсов знакомит студентов с концепциями, основанными друг на друге, и дает рекомендации по созданию приложений в конце каждого раздела.
  3. В центре внимания: я изучал JavaScript, одновременно создавая прототипы 3D-моделей, изготовляя детали и следя за конструкцией кобуры для упражнений iPhone 5, поэтому я сосредоточился на изучении JavaScript в лучшем случае на 20%. Сосредоточьте большую часть своей энергии на разработке одной вещи за раз, если она совершенно новая. В этот период я ​​посвятил большую часть своего свободного времени изучению Java и Android.
  4. Измерение прогресса: я помню, как мой первый директор Google сказал нашей команде за обедом, что, хотя может показаться, что наше повседневное влияние невелико, если вы сделаете шаг назад и посмотрите на все взаимодействия с рекламодателями в течение года влияние на Google существенно. Изо дня в день мне казалось, что я разговариваю с горсткой местных представителей бизнеса, но каким-то образом это равнялось 1 миллиону долларов маркетинговых расходов в год. Всякий раз, когда я расстраиваюсь из-за отсутствия прогресса, мне нравится выполнять упражнение, в котором я размышляю о том, где я был с этой целью ровно год назад. Если я прилагаю постоянные усилия, которые обнаруживаю, глядя с высоты птичьего полета, я, как правило, становлюсь в геометрической прогрессии лучше, чем год назад. В цифровом маркетинге нам приходилось отслеживать все показатели вовлеченности и расходов в информационных панелях / инструментах, по которым нас оценивало руководство. Несмотря на то, что я презирал большинство аспектов этого, я воспользовался идеей ежеквартального отслеживания, чтобы удостовериться, что я трачу X времени каждую неделю на ведение собственной простой панели журнала кодирования. Когда я начал свою постоянную роль разработчика Android, я выполнил 1258 часов программирования, избежав пустыни отчаяния.

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

Не стоит недооценивать свой опыт самообучения.

- Хироши Локхаймер, Программист-самоучка, руководитель Android в Google

Я Адам Гурвиц - порекомендуйте и ознакомьтесь с остальными моими сочинениями, если вам понравилось вышеупомянутое | Спасибо!