Две формы обучения

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

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

Сделать проект? Действительно?

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

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

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

Предупреждение об архетипах

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

Бульдозер

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

Поскольку почти все в программировании вызывает любое количество проблем из самых разных векторов, это может потребовать много дополнительных усилий. Во всем есть что пробить бульдозером. Не забывайте, что вы можете выбрать Vim, поскольку это кажется очень крутым, или настроить SSH на свой рабочий стол, чтобы вы могли запускать что-то на своем графическом процессоре. Да, и не забывайте, что вы можете в первую очередь попробовать установить графический процессор в Linux.

У кого-то вроде этого будут проблемы с настройкой веб-сайта-портфолио, поверьте мне!

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

Песочница

Песочница - это что-то вроде команды Linux: они хотят знать одну вещь и знать ее хорошо. Допустим, они хотят знать интерфейс. Они возьмутся за это и попытаются использовать другие инструменты, чтобы смягчить все остальное, что может возникнуть. Но когда нет бэкенда? Развертывание на Heroku не так уж и плохо. Более того, CreateReactApp имеет своего рода встроенный бэкэнд. Дизайн - это сложно? Они-песочницы найдут один способ решить, что им нужно, и будут придерживаться основных функций, которые им нужны для этого. Они настроят свою среду и процесс обучения так, чтобы подавляющая часть их энергии вкладывалась в этот набор навыков.

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

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

Использование обоих стилей

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

Я думаю, что одна из причин, по которой мне потребовалось так много времени, чтобы это осознать, заключалась в том, что я просто предполагал, что быть программистом означает, что я могу программировать все. Я не уверен, что ошибаюсь, но я обнаружил, что многие (большинство?) Программистов не заинтересованы в разгадывании тонкостей OpenGL только потому, что они хотят, чтобы их графический процессор работал. Фактически, им, вероятно, не интересно знать, что такое OpenGL .

Трудоустройство

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

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

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

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

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