Знайте, куда вы собираетесь и как туда добраться: важность четких целей и четко определенных путей

Итак, вы хотите быть инженером-программистом. Вы приняли решение, и теперь вы разрабатываете следующие шаги. Вы прилежны. Вы проводите исследования. Вы уже прочитали множество статей и сообщений в блогах с такими заголовками, как «12 шагов к тому, чтобы стать разработчиком» или «15 вещей, которые должен знать каждый программист». Разве это не еще одна из тех статей? Зачем читать это?

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

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

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

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

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

Мы поговорим о следующем:

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

Вы можете подумать: Все это звучит здорово, но почему этому совету стоит следовать?. Этот совет основан на многолетнем опыте преподавания разработки программного обеспечения. В Launch School мы обучили сотни студентов за полвека. Мы видели, что работает, а что нет. Эти советы рождаются в результате работы и наблюдения за некоторыми замечательными студентами, а также наблюдения за их достижением невероятных результатов. Не верите нам? Смотрите результаты сами.

О школе запуска

Launch School - онлайн-школа для программистов. Мы считаем, что продвинутые концепции лучше всего преподавать, если вначале есть твердое понимание основ. Мы также считаем, что то, как вы будете учиться, зависит от того, что из этого вы изучаете. Наша педагогика построена на этих убеждениях, и наша Основная учебная программа и Программа Capstone построены вокруг этой педагогики. Мы описываем это как Медленный путь для прилежных новичков к карьере в разработке программного обеспечения; Чтобы узнать больше о том, что мы подразумеваем под этим описанием, ознакомьтесь с этой статьей.

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

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

Это всего лишь маркетинг вашей программы, верно?

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

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

Знайте, куда вы собираетесь и как туда добраться

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

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

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

Ставьте четкую, конкретную цель

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

Поставьте четкую, конкретную цель. Это сосредоточит ваше путешествие и поможет вам преодолеть неровности на дороге.

Что мы подразумеваем под конкретной целью? Даже «устроиться на работу разработчиком» недостаточно. Это все равно, что сказать, что вы хотите стать «писателем». Это слишком расплывчатая цель, чтобы побуждать к действию. С другой стороны, заявление о том, что вы хотите стать «журналистом-расследователем New York Times», является гораздо более конкретным, и конкретность дает возможность планировать в этом направлении. Стремитесь к этому. Даже если вы в конечном итоге станете политическим журналистом для Washington Post, поставленная перед вами конкретная цель поможет вам ее достичь. Расплывчатая цель не приведет к конкретным действиям.

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

Установка пункта назначения важна. Знать, как туда попасть, тем более. Разработка программного обеспечения - это очень обширная предметная область. Это тоже очень глубоко. Изучить каждый аспект его в огромном количестве деталей невозможно. Вам нужно решить, что вам нужно знать и насколько хорошо вы должны это знать.

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

Вот как вы нанесете на карту этот путь:

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

Сосредоточьтесь в первую очередь на основах

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

Сосредоточьтесь в первую очередь на основах и узнайте то, что не меняется

HTTP, HTML и SQL существуют с самого начала Интернета, а то и дольше. CSS, JavaScript и Ruby почти столько же. Несомненно, эти языки и технологии развивались на протяжении многих лет, но основные, лежащие в основе принципы, которыми они руководствуются, остаются прежними. Понимание этих вещей на фундаментальном уровне позволит вам лучше понять абстракции, построенные на их основе, например такие фреймворки, как React или Rails.

Изучите основы мастерства

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

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

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

Не устанавливайте произвольные сроки

Усвоить мастерство сложно в традиционном классе, где вы следуете строгому расписанию. Вы изучаете концепцию «а» за неделю. Если к концу недели вы не поймете его полностью, это очень плохо; вы переходите к концепции «b». Работа в строгих временных рамках создает постоянное давление и беспокойство о «отставании».

Избегайте искусственных дедлайнов. Они настраивают вас на неудачу и являются одним из основных источников беспокойства.

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

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

Учитесь решать проблемы, а не просто приобретать знания

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

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

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

Оставайся сфокусированным. Оставайся на пути

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

Избавьтесь от шума и не отвлекайтесь и не отвлекайтесь на все новые разработки в области технологий.

Помните, что вы изучаете фундаментальные вещи, которые не меняются. 99% этого шума касается концепций, выходящих за рамки того, что вы пытаетесь изучить.

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

Используйте сильные основы, чтобы быстро менять снаряжение и повышать уровень

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

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

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

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

Не стоит недооценивать то, что нужно, чтобы стать профессионалом

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

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

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

Подводя итоги

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

  • Ставьте четкую, конкретную цель
  • Сопоставьте определенный путь обучения с этой целью
  • Сосредоточьтесь в первую очередь на основах
  • Изучите основы мастерства
  • Не устанавливайте искусственные дедлайны
  • Оттачивайте свои навыки решения проблем
  • Сосредоточьтесь на пути; не отвлекайся
  • Сложите передовые знания поверх прочных основ
  • Не стоит недооценивать то, что нужно, чтобы стать профессионалом

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

Итак, вы хотите быть инженером-программистом? (Часть 2 из 4)