Опорожнение чашки

На этой неделе я начал обучение в 8th Light - консалтинговой компании по программному обеспечению, в которой каждый Software Crafter начинает как ученик. Я также прошел курс для начинающих по программированию - Академия приложений в Сан-Франциско - в начале этого года. Хотя я только второй день в качестве ученика, уже довольно ясно, насколько следующие шесть месяцев будут отличаться от тех трех месяцев, которые я провел в качестве студента в App Academy.

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

В своей книге Дэвид Х. Гувер (Дэйв) и Адевале Ошайнай (Адэ) понимают, что большинство разработчиков программного обеспечения не начинают свою карьеру в качестве официальных учеников. Они предоставляют ряд контекстов, проблем и действенных решений, позволяющих получить ученичество даже на тех должностях, которые явно не рассматривают новых сотрудников как учеников. Учитывая то, что я прочитал до сих пор, я думаю, что любой, кто думает о учебном лагере или ученичестве, может извлечь выгоду из ознакомления с этими концепциями. Хотя учебный курс может облегчить некоторые концепции (например, выбор первого языка), некоторые из них просто невозможны в среде учебного лагеря. Тем не менее, если помнить об этих концепциях, это, несомненно, помогло бы мне максимально эффективно использовать свое время в несколько месяцев после окончания буткемпа.

Опорожнение чашки

Дэйв и Аде проводят аналогию, в которой подробно описывается необходимость опорожнения чашки для получения свежего нового чая. Короче говоря, чтобы учиться, вы должны быть готовы учиться. Чтобы попасть на учебный курс, вам необходимо продемонстрировать, что вы можете самостоятельно изучить некоторые основы программирования. Вам не нужно знать объектно-ориентированное программирование или полный технический стек, но вам нужно знать основные циклы и методы (обычно в JavaScript, Python или Ruby). Тем не менее, в процессе обучения вы уже должны будете знать ООП или, возможно, технический стек для создания такого приложения, как крестики-нолики. Однако, прежде чем вы дойдете до этого шага, вы должны выучить язык компьютерного программирования.

Ваш родной язык

Дэйв и Эйд дают много отличных советов по выбору первого языка. Например, они предлагают иметь «актуальную проблему, которую нужно решить» как способ помочь выучить первый язык (14). Отсутствие проблемы, которую нужно решить, препятствовало моему стремлению кодировать три предыдущих раза, когда я пытался научиться кодировать самостоятельно до регистрации в App Academy. Буткемп предоставит вам ежедневные проекты и предложит вам несколько демонстрационных проектов для облегчения решения проблем. В моем случае я чувствовал, что повседневные проекты не обладают большой гибкостью, поскольку мы часто создавали их на основе заранее написанных тестов. Однако демонстрационные проекты дали мне возможность приступить к решению проблемы. Основной демонстрационный проект был клоном существующего веб-сайта. Хотя у нас было мало гибкости с визуальным дизайном (поскольку мы стремились к точному клону небольшого количества функций), у нас было больше свободы для разработки схем баз данных на бэкэнде, а также иерархий компонентов React и формы состояния Redux на сервере. внешний интерфейс.

Сами по себе (особенно в качестве нового разработчика) SQL, Ruby on Rails, JavaScript и React-Redux не особо помогут вам в создании. Но искусственная проблема, которую создает учебный лагерь, поможет вам объединить эти технологии для создания настоящего веб-приложения. Несмотря на то, что я прошел восьминедельную учебную программу, я не чувствовал себя достаточно комфортно, чтобы утверждать, что понимаю эти языки и фреймворки, пока я не испытал на собственном опыте, как они работают вместе.

Дэйв и Эйд также предлагают получить обратную связь от наставника, чтобы помочь выбрать первый язык (16). Очень немногие студенты учебного лагеря имеют степень в области компьютерных наук, и многие из них мало знакомы с программированием до того, как попали в программу. Они часто работали в отраслях, где поблизости не было разработчиков программного обеспечения. Естественно, у многих студентов нет близких друзей, чтобы обсудить преимущества или недостатки того или иного языка. Изучение языков и фреймворков в Интернете часто приводит к прочтению весьма категоричных и бескомпромиссных одобрений того или иного языка или технического стека за исключением любого другого (исключение составляет JavaScript, который универсально рекомендуется для любого начинающего веб-разработчика).

Именно здесь я обнаруживал себя каждый раз, когда пытался выучить новый язык. Я считаю, что отчасти мой успех в App Academy отказался от контроля над этим решением и позволил App Academy определять, какой технический стек я буду изучать в качестве своего «первого языка». Тем не менее, я следую совету Дэйва и Адэ «надеть белый пояс» и «сделать шаг к невежеству», когда я изучаю Clojure (19). Clojure - первый язык функционального программирования, который я когда-либо изучал. Если я собираюсь изучить совершенно новую парадигму, мне придется принять свое невежество и искать своих наставников, когда я буду бороться.

Разоблачить и противостоять своему невежеству

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

Учебные курсы и ученичество способствуют созданию атмосферы, которая побуждает вас раскрыть свое невежество. Когда вас окружают 75 сверстников, которые пытаются справиться с одним и тем же материалом, признание того, что вы заблудились, не вызывает никакого стигмы. На стажировке вы попадаете в команду с ожиданием, что учеба - это ваша постоянная работа. Естественно, ваши коллеги знают, что вы не знакомы с некоторыми концепциями или технологиями. Однако учебные лагеря и ученичество поощряют разные подходы к борьбе с этим явным невежеством.

Будучи студентом, я живо вспоминаю парное программирование с бывшим студентом, который с трудом понимал методы скобок Ruby. Синтаксический сахар позволит нам получить доступ к элементу внутри двумерного массива как [0, 3], а не как [0] [3]. Полагая, что основные концепции Ruby - классы, экземпляры и переменные экземпляра - заслуживают большего внимания, я предложил просто переместить один и признать, что код работает. С оценками, которые определяли, оставались ли вы в учебном лагере никогда больше, чем через неделю или две, я часто обнаруживал, что удовлетворен вопросом как по сравнению с почему.

Только после того, как буткемп закончился, я начал понимать последствия этого компромисса. На одном из моих первых технических собеседований интервьюер спросил меня, почему я назначил переменную параметрам функции JavaScript и манипулировал этой переменной, а не напрямую. Меня застал врасплох вопрос, поэтому я честно ответил: «Меня учили, что это лучшая практика». Несмотря на то, что он согласился со мной, он - справедливо - не казался удовлетворенным моей неспособностью обосновать, почему я принял такие решения.

Глубокий конец

Столкнувшись с трудной проблемой или трудным предложением о работе, Дэйв и Аде предлагают вам «ухватиться за нее обеими руками» (30). Курсы для начинающих по программированию, безусловно, прививают такое отношение своим ученикам. В конце концов, большинство из них ищут работу, не имея опыта разработки программного обеспечения. Ожидается, что вы продадите свою способность быстро учиться и адаптироваться. Хотя вы наверняка быстро научитесь, если погрузитесь в самую суть дела и сразу же после окончания учебного курса возьмете на себя роль разработчика программного обеспечения, возможность сгорания может иметь долгосрочные последствия для вашей карьеры.

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