Кто вы и почему мы заботимся?

Есть кое-что, о чем они не говорят вам, когда вы впервые интересуетесь изобразительным искусством и наукой программирования. Что-то в том, что это очень тяжело. На самом деле это сложнее, чем должно быть. Особенно, если вы начинаете с языка с большой и фрагментированной пользовательской базой. Глядя на это с точки зрения того, кто только начинает изучать такой язык, как JavaScript, например, это может быть невероятно болезненным и ошеломляющим, когда вы только начинаете. Простой взгляд на первую страницу результатов для Javascript в Google не показывает многого, что, на мой взгляд, могло бы помочь нубу начать работу. Первая ссылка — www.javascript.com, на первой странице которой есть интерактивный учебник. Это хорошо, если вы никогда раньше не занимались программированием, но в какой-то момент такие вещи (такие как codecademy и тому подобное) просто не достигают цели, на мой взгляд. Я углублюсь в это, но, пожалуйста, позвольте мне дать вам некоторые общие сведения о том, откуда я пришел, где я сейчас и почему я пишу это.

Придумайте идею и воплотите ее в жизнь

Думаю, я должен дать вам краткое представление о себе, а если я этого не сделаю, то эта статья не будет иметь для вас особого смысла. Что касается части «почему вас это должно волновать?», вы не должны. Или, по крайней мере, мне все равно, делаете вы это или нет. Эту статью я пишу в большей степени для себя, а точнее, для людей, похожих на меня по стилю обучения.

Здравствуйте, меня зовут Джо Хопкинс. В настоящее время я работаю инженером-программистом в компании в Калгари, Альберта. Моя компания, на случай, если вам интересно, называется Wiles Jackson, в настоящее время занимается созданием системы управления и распространения документов для одной из крупнейших на данный момент компаний в Канаде. Пожалуй, самым захватывающим аспектом моей работы является мысль о том, что я помогаю создавать что-то важное, что я в конечном итоге приношу кому-то пользу. Этот кто-то где-то оказался корпорацией, которая в настоящее время оценивается более чем в 5 миллиардов долларов, но вы знаете… кто-то! Никогда в жизни я не мог себе представить, что у меня будет невероятно крутая возможность работать с такими замечательными людьми над некоторыми из самых интересных проблем, над которыми я имел удовольствие рвать на себе волосы за своим столом. Конечно, это небольшая компания, я всего лишь пятый человек, работающий здесь на полную ставку, но работа, которую мы делаем, настолько хорошо известна. Я люблю каждого человека, с которым работаю, и я благодарна каждый божий день, когда я здесь, за тот телефонный звонок, который мне перезвонили, когда я была безработной и сломалась, и спросила, ищу ли я все еще работу.

Мое первое знакомство с программированием и информатикой произошло, когда мне было около девяти или десяти лет, когда вышла «Социальная сеть». Выдающийся биографический фильм Дэвида Финчерса о создании вездесущего приложения социальной сети Facebook, а также о судебных процессах и личных драмах, сопровождавших создание единственной самой популярной платформы социальных сетей, которую мы используем сегодня. После просмотра этого фильма компьютеры впервые стали не просто инструментом, который можно было использовать для выполнения задачи (в основном это были флеш-игры для меня в тот момент), но и чем-то, чем можно было управлять и управлять при наличии необходимых знаний и умений. обучение. Не только это, но и овладение компьютером, и вы сможете стать богатым и знаменитым, о чем вы даже не мечтали. По крайней мере, так думал этот маленький десятилетний мальчик, который только что нашел свою единственную настоящую любовь в жизни. Да, я признаю, что первая причина, по которой компьютеры и программирование привлекли мое внимание, заключалась в деньгах, которые Марк Цукерберг заработал на создании Facebook. Но это было незадолго до того, как искусство программирования захватило меня таким образом, что я был в таком восторге, как никакое другое хобби или интерес, который у меня был до или после. На самом деле, я всегда был взбалмошным ребенком. У меня возникал интерес на несколько недель, может быть, на несколько месяцев, если мне повезет, но затем я бросал его и терял интерес так же быстро, как и начал, только для того, чтобы его заменило другое хобби или интерес к чему-то другому. несколько недель времени. Но не с компьютерами. Несмотря на мои многочисленные увлечения и некоторые, возможно, даже заявленные «таланты», которые я практиковал на протяжении многих лет, многие из которых я не практиковал сам в течение нескольких лет, компьютеры всегда были единственной константой среди них. Вы всегда можете рассчитывать на то, что в какой-то момент в течение дня я буду работать над каким-нибудь проектом на своем компьютере.

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

В том же году я выпустил ИИ-приложение для Android, которое в то время имело функциональность, аналогичную Siri, но с гораздо лучшим (на мой взгляд) диалоговым интерфейсом, который позволял вам, в некотором смысле, подружиться с живым личным помощником. внутри вашего телефона. Конечно, мне было всего четырнадцать, и система, которую я использовал, была не чем иным, как простым шаблоном, соответствующим искусственному интеллекту «Язык», который работал на телефоне. Но это было интересно, он мог звонить, отправлять текстовые сообщения, открывать Facebook, узнавать погоду, открывать различные приложения на вашем телефоне, сохраняя при этом то, что, опять же, по моему скромному мнению, по большей части было «сносным» разговором. Возвращаясь назад и читая журналы прошлых разговоров с моими пользователями, я теперь понимаю, что большую часть времени люди просто играли и высмеивали странные ответы, которые давал мой маленький чат-бот, вместо того, чтобы использовать его по назначению, но это было весело. , и это было интересно, и это определенно многому научило меня в программировании. На самом деле, меня пригласили представить мое приложение в «Научном центре» моего города во время мероприятия только для взрослых, посвященного концепции любви к цифровым агентам (это было как раз в то время, когда вышел фильм «Она», захватывающий фильм с Хоакином в главной роли). Феникс, в котором он влюбляется в компьютерный ИИ по имени Саманта, озвученный Скарлетт Йоханссон (я определенно рекомендую вам проверить это) в современном обществе. Не очень уместно, но милое скромное хвастовство.

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

А теперь о моем положении в настоящее время и о том, как мне удалось это получить. Как я уже говорил ранее, я работаю полный рабочий день (впервые в жизни получаю льготы!) в компании dev. дом здесь, в Калгари, мы работаем в настоящее время на одну из крупнейших корпораций в Канаде. История о том, как я получил эту работу, на самом деле немного занимательная. В 2018 году меня только что уволили с моей предыдущей работы младшим разработчиком. (моя первая работа в технологической отрасли), и я был совершенно обезумел, понятия не имел, что делать и куда идти. Будучи сломленным 19-летним подростком, живущим один в Калгари, я был довольно SOL. Так что, к сожалению, мне пришлось стиснуть зубы и вернуться к отцу и двум братьям в крошечный городок в самом сердце Скалистых гор в Британской Колумбии. Я ненавижу маленькие города. Однако, прежде чем я переехал, я заметил кое-что чрезвычайно любопытное еще в Калгари. Желая не потерять весь тот импульс, который я набрал, получив свой первый профессиональный концерт, я подал заявку на еще несколько вакансий младших разработчиков, которые я увидел в Интернете. Я должен упомянуть об этом здесь и сейчас, потому что забыл сказать об этом раньше, но я никогда не ходил ни в какое высшее учебное заведение. Нет, у меня нет диплома. До моей первой работы в отрасли я обращался в разные места без какой-либо надежды, что они захотят взять у меня интервью (я был прав в 99% случаев). Я всегда планировал в конце концов поступить в университет, потому что как еще я мог получить работу без диплома, верно? Что ж, после всего лишь четырех месяцев на моей первой работе, с этим одним изменением в моем резюме, я смог получить больше звонков и собеседований, чем когда-либо, не говоря уже о технической индустрии!

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

Это действительно так просто? В некоторых отношениях да, это действительно так просто, во многих других отношениях нет, это совсем не так просто. Имейте в виду, что этот метод не будет работать для всех, и каждый учится по-своему. Это сработало для меня, и, возможно, это может помочь и некоторым другим. Но лучший совет, который я могу дать, — выяснить, что работает для вас, и извлечь оттуда уроки. Это то, что касается страсти. По моему опыту, если вы что-то достаточно любите, ничто на Небесах, в аду или на Земле не сможет помешать вам сделать это, и сделать это в меру своих возможностей. Я также чувствую необходимость упомянуть, что эта статья не претендует на то, чтобы сделать вас великим программистом за Х времени. Если этот метод работает для вас, это займет столько времени, сколько потребуется, и все зависит от вас, в зависимости от того, как быстро вы учитесь, ваш уровень интереса и сколько времени вы готовы потратить. В любом случае, давайте начнем.

Учебники, учебники, учебники

Когда вы впервые посмотрите на язык программирования, вы будете сбиты с толку. Никто не просыпается со способностью читать код так, как вы читаете книгу. Вот почему они называются «языками». В каком-то смысле это совершенно разные языки, отличные от тех, которые вы знаете сейчас. Будь проклят английский, мы вступаем в область функций и типов. Но где-то надо намочить ноги. Во-первых, я хочу, чтобы вы выбрали интересующий вас язык. Все зависит от того, что вы сейчас хотите изучать. Если вы хотите создать мобильное приложение, вам нужно выбрать либо Swift (для iOS), либо Java (для Android). Полагаю, сейчас самое время сказать следующее: если вы начинаете программировать, изучите язык для своей родной платформы. Изучение Javascript для изучения мобильной разработки определенно возможно и никому не вскружит головы, но по моему опыту, если вы имеете в виду платформу, для которой хотите разрабатывать, даже если вы думаете, что барьер для входа выше с родным языком, пожалуйста, изучите нативную платформу с нуля. В будущем вам будет намного лучше, когда вы расширите свои знания в различных областях, и это поможет вам решить проблемы, связанные с платформой, в долгосрочной перспективе. Далее я хочу, чтобы вы зашли на сайт под названием «github.com» и создали учетную запись. Это не обязательно, но вам понадобится место для хранения вашего кода, и лучше всего убрать это сейчас.

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

Еще одна вещь, которую я хотел бы здесь упомянуть: язык, который вы выбираете, не имеет значения. Будь то статически типизированный процедурный язык, такой как C. Или объектно-ориентированный язык с пробелами, такой как Python. Или функциональный язык, такой как OCaml. Это не имеет значения. Все дело в интересе. Выберите то, что вас интересует. Кроме того, я скромно верю, что языки программирования в значительной степени взаимозаменяемы. И этот метод во многом опирается на эту идею. В конце концов, то, что вы действительно хотите выучить, — это не синтаксис языка или правила и соглашения языка внутри и снаружи, что, по мнению многих новичков (включая меня), должно произойти, чтобы считаться «настоящим» программистом. Скорее думайте о программировании как о способе рассуждения о проблемах и способах их решения. Программирование — это образ мышления прежде всего, и язык, который вы выбираете, в конечном счете вторичен по отношению к реальной цели научиться думать как программист. Как только вы это освоите, вы обнаружите, что почти не требуется времени, чтобы освоить новый язык и инструмент (более или менее, это действительно зависит от того, о чем именно вы говорите).

В любом случае, я отвлекся. У вас есть проект, вы посмотрели исходный код и совершенно сбиты с толку. Ты, наверное, сейчас смотришь на меня так: «Чувак, я ничего не понял». Ну, тебе не положено. И вы также, вероятно, думаете про себя: «Господи, я никогда не буду НАСТОЛЬКО хорошим!» И единственное, что я должен сказать на это: заткнись, ты здесь не просто так. Теперь, когда вы увидели, как выглядит код, с которым вы собираетесь работать, вы готовы перейти к следующему шагу.

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

Создайте свою собственную вещь, чего бы это ни стоило

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

Итак, вы выбрали язык, вас озадачили иероглифы приложения, написанного на выбранном вами языке, и вы готовы начать обучение. Первая часть этого очень проста. Примерно так же просто, как погуглить «Как сделать x на языке y». В прямом смысле. Я хочу, чтобы ты сделал это. Погуглите прямо сейчас. Я серьезно, я подожду…

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

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

  • Основа хороших, четких, четко определенных методов программирования (Ваш первый опыт работы с кодом, вероятно, не должен быть халтурным и хакерским, не так ли?)
  • Конечная цель, в которой вы заинтересованы на 100%. Создайте инструмент, который вы будете использовать, или создайте что-то, что вы считаете действительно крутым, что-то, что вы будете хвастаться, когда закончите (если вас не интересует то, чем вы занимаетесь). строить, вы, вероятно, не закончите учебник, не говоря уже о том, чтобы научиться программировать)
  • Набирайте все вручную. Ничего не копируйте и не вставляйте. Это метод, называемый активным обучением, и невероятно, невероятно важно, чтобы вы соблюдали это правило, как если бы оно могло способствовать или препятствовать вашему прогрессу (потому что так оно и будет).

«https://github.com/tuvtran/project-based-learning»

Есть также несколько правил, которым необходимо следовать при работе с этими учебными пособиями:

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

  1. Делайте частые перерывы. В этих уроках вы многого не поймете, и это нормально. Чтобы не перегореть и позволить полученным знаниям усвоиться, нужно делать частые перерывы. Сон на новой информации — лучший способ обеспечить ее сохранение.
  2. Исследования — ваш друг. Если у вас возникли проблемы с пониманием того, как учебник объясняет определенный аспект программы/языка, очень важно, чтобы вы не просто пропустили этот раздел или не скопировали и не вставили его. Вместо этого погуглите те части, которые вас смущают, прочитайте документацию, прочитайте ответы на Stack Overflow, пока не поймете, что вы печатаете. Это тоже невероятно важно.
  3. Возвращайтесь к разделу руководств, пока не найдете тот, который вас особенно интересует. Даже сейчас, спустя столько времени, я все еще люблю следовать руководствам по программированию, особенно если они на незнакомом мне языке. В основном я выполняю одни и те же шаги каждый раз, когда хочу выучить новый язык программирования, поэтому я могу подтвердить, что он работает. Хотя и значительно быстрее, чем когда я только начинал. Если вам это нравится, перейдите к следующему шагу и добавьте то, чего, по вашему мнению, не хватает в программе в конце урока. Составьте список вещей, которые вы хотите, а затем добавляйте их одну за другой. Вскоре вам даже не понадобится список, вы просто начнете понимать, как проблемы можно разбить на части и обосновать.

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

Вот в чем дело, парень, ты ничего не знаешь о компьютерах или программировании в данный момент, наверное, поэтому ты здесь. Однажды вы будете рыться в туториале, возможно, это будет ваш первый, и вы будете клясться, что код, который вы набрали, точно такой же, как код в туториале, 1:1, нет. различия, которые нужно увидеть. И вы получите ошибку. Вы, конечно, погуглите, потому что это то, что вы делаете как программист, когда чего-то не знаете. Я все еще использую Google для многих ошибок, которые я получаю. Разница здесь в том, что вы не программист. Пока. Вы собираетесь просмотреть около 500 различных веб-сайтов в поисках ответа на свою проблему, но поскольку вы все еще не можете полностью понять, о чем на самом деле говорят ответы на StackOverflow или о чем говорится в статье некоторые аспекты программирования, вам будет чрезвычайно трудно решить проблему. И затем, к сожалению (это действительно трагично, разочарование убивает желание больше, чем что-либо еще), вы собираетесь сказать «к черту это» и закрыть любой редактор кода, который вы использовали, никогда больше не открывая его из страха проделать дыру в коде. свой монитор кулаком. Знаешь что? Это тоже нормально. Если вы по какой-либо причине уйдете на этом шаге во время любого из руководств, ничего страшного. Программирование не для всех. Это просто факт жизни, и он применим ко всем навыкам на планете. Лично я вообще не умею рисовать. Черт, я удивлен, что вообще могу рисовать людей-палочек, которых можно смутно узнать. Но это нормально, потому что я знаю, что мои навыки и таланты лежат в другом месте. Вам просто придется продолжать искать свою, если вы решите сдаться здесь из-за разочарования. И никто не будет винить вас.

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

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

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

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

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

Чистый лист

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

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

«Ветка функций»

С этого момента вы играете в рулетку Google, пытаясь решить проблемы, которые наверняка возникнут при создании вашего приложения. Большинство людей в Интернете, на большинстве форумов по программированию, а фактически в большинстве сообществ программистов, скажут вам, что если вам нужно спросить «Как сделать X», вы, вероятно, недостаточно квалифицированы, чтобы сделать «Х». И хотя это верное утверждение, я не верю, что оно должно просто на этом заканчиваться. Многие люди скажут вам изучить основы программирования, теории компьютеров и т. д., прежде чем вы даже подумаете о создании того, что хотите сделать, но, на мой взгляд, это полная ерунда.

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

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

Разбейте это, погуглите и заучите наизусть

Если вы прислушались к моему совету и выполнили несколько руководств, прежде чем попасть сюда, то у вас должно быть несколько завершенных проектов на вашем жестком диске. Я хочу, чтобы вы нашли проект, над которым вам было очень весело работать, открыли его (фактическое приложение), и я хочу, чтобы вы им воспользовались. Что оно делает? Вы бы использовали это в реальной жизни? Скорее всего, вы бы этого не сделали. Написание приложения, которое люди действительно будут использовать, — тема, которая, вероятно, достойна отдельной статьи, но я отвлекся. Теперь, поработав какое-то время с вашим приложением, я хочу, чтобы вы подумали о том, что бы вы, если бы вы были опытным разработчиком, добавили/исправили. Составьте даже список. Что вы хотите, чтобы это приложение делало то, что в его нынешнем виде оно не может. Получил ваш список? Хорошо.

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

Это так просто? Ну да, в каком-то смысле это действительно так. Будет ли это просто сделать? Скорее всего, если вы полный новичок, то нет. Это будет очень сложно и разочаровывает (и поэтому я бы рекомендовал этот метод вместо метода «чистого листа»).

Готовый? Ладно, переходим к следующему разделу.

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

Разбейте все на небольшие задачи, которые легко найти в Google.

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

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

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

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

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

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

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

Вы, наверное, заметили кое-что в этой статье: я люблюGoogle. Что бы вы ни говорили о конфиденциальности, а что нет, но Google — бесценный ресурс для программиста, особенно если вы только начинаете учиться. Хорошо… Я говорю Google, но есть вероятность, что вы будете проверять StackOverflow примерно в 80% случаев. Но об этом позже.

ПЕРЕЙТИ К 10

Название в значительной степени говорит все, что вам нужно знать. Слушай, давай на секунду будем настоящими. Я знаю, что на самом деле вы не выполняете все эти шаги, прежде чем перейти к следующему разделу. Скорее всего, вы прочитали все это сразу (если вы вообще все еще читаете), и, вероятно, именно здесь вы собираетесь насмехаться надо мной за то, что это звучит так просто. Это. Это действительно так. И тот факт, что вы думаете, что это просто, говорит мне лишь о том, насколько вы наивны. И это нормально! Вы должны быть. Я пишу эту статью не для других программистов, я пишу эту статью для не-программистов, которые, возможно, захотят окунуться в область, которая, на мой взгляд, является самой полезной деятельностью, на которую я когда-либо тратил все свое время. даже после всех этих лет работы. Но, честно говоря, выслушайте меня, потому что мы подходим к сути того, о чем эта статья была все это время. Я повторю это еще раз, потому что на этом этапе мне действительно нужно донести до вас, что именно вы пытаетесь узнать. Потому что это не Ruby, или Python, или C#, или Java, или любой другой язык, который вы выбрали для изучения.

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

Раздражен еще? Хорошо! Потому что я не могу не подчеркнуть этот момент достаточно. Когда я впервые начал программировать, это было потому, что я хотел быть следующим Цукербергом. В прямом смысле. Я хотел создать платформу для социальных сетей и все такое. Вскоре это произошло потому, что я хотел стать разработчиком видеоигр. Но только когда я по-настоящему понял программирование, когда я уже был более чем опытен во многих языках и технологиях, я сам пришел к этому осознанию. Как только я это сделал, я обнаружил, что я был лучшим программистом для этого. Как только вы перестанете думать с точки зрения инструментов и технологий и вместо этого сосредоточитесь на проблемах и решениях, вы будете учиться в десять раз лучше и быстрее, чем когда-либо прежде. И именно об этом на самом деле эта статья, и почему она отличается от всего остального, с чем я сталкивался. Это редко когда-либо упоминается в статьях, учебниках, классах, даже обсуждениях на эту тему, и я до сих пор не могу понять, почему. Потому что эта идея, которую я продолжаю повторять, действительно является основой для того, чтобы стать великим программистом, и именно об этом эта статья или, если хотите, «учебное пособие». Ни в коем случае во время этого процесса вы не должны думать: «Хммм… если я просто выучу X, я готов!» Потому что это просто не так работает. Как те люди, которые смотрят на различные продукты «программирования без кода», которые появляются время от времени. Им нужен легкий выход, потому что изучение образа мышления — одна из самых трудных вещей, которые может сделать человек. И, по большей части, они в конечном итоге разочаровываются, не в силах даже оторваться от земли, не говоря уже о полете. Потому что, в конце концов, они упустили весь смысл. Чтобы быть программистом, разработчиком приложений, веб-разработчиком или чем-то еще, что вы хотите делать с силой, которую код наделяет вас, вы должны быть в состоянии думать как разработчик. Полная остановка. Никаких «если», «и», «но». Если у вас нет этого базового понимания того, как решать проблемы и находить решения, способности брать функции и разбивать их на мельчайшие атомарные части, как вы можете рассчитывать на реализацию этих абстрактных идей? К сожалению, ни один инструмент не сделает это за вас, как бы легко он ни утверждался.

Вот почему, когда разработчики говорят вам, что они очень часто используют Google, это не означает для них того же, что и для вас. Любой разработчик, читающий это, может подтвердить тот факт, что поиск решения проблемы в Google сам по себе является навыком, который требует от вас точно знать, что вы хотите сделать. Вот почему вы часто будете думать, что программисты грубы и элитарны, когда мы отвечаем на ваш вопрос «Как мне сделать приложение, похожее на x» «Учитесь программировать». Потому что что бы мы вам ни говорили, какие бы советы и, черт возьми, код мы вам ни давали, все это не имеет значения, если на фундаментальном уровне вы просто не понимаете, как думает и решает проблемы программист. Как только вы начнете изучать это, вы обнаружите, что задавать вопросы, на которые действительно можно ответить, — это, по сути, единственная причина, по которой существуют такие сайты, как StackOverflow. Мы не пытаемся быть грубыми, когда говорим вам «Учитесь программировать» (ну, ладно, некоторые из нас делают это. Но это исключение, а не правило), вовсе нет! Наоборот, нам нужно четко указать, без каких-либо двусмысленностей, что вы не сможете, пока не поймете, как это работает. Если бы мы просто дали вам урок без контекста и сказали: «Вот, получайте удовольствие!» вы не приблизитесь к пониманию того, что делаете.

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

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

Ты программист Гарри

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

Здорово! Но вы еще не разработчик. И вы наверняка все-таки разработчик. Теперь пришло время сделать это снова. Я знаю, я знаю, так много в этой статье я говорил вам повторять то, что вы делали раньше, и это ничем не отличается. Добро пожаловать в мир программирования. Ладно, если серьезно, у вас есть несколько вариантов того, каким будет ваш следующий шаг в процессе обучения, но все они в значительной степени следуют тем же основным идеям, о которых я вам уже говорил. На самом деле в этом нет ничего сложного, сложная часть просто заставляет ваш мозг работать как компьютер, и в этом вся суть обучения программированию. Конечно, не на физическом уровне, если только вы не начинаете изучать ассемблер или C в качестве своего первого языка. Лично я бы не рекомендовал, но эй, если вы сделали это так далеко с теми, у вас есть мои реквизиты разработчика и вечное уважение. В любом случае, у вас есть несколько вариантов дальнейших действий, хотя к этому моменту вы уже должны быть на пути к тому, чтобы стать солидным разработчиком, если вы следуете правилам и сохраняете непредубежденность, учась рассуждать. из решений в коде. Для вашего следующего проекта вы можете:

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

  1. Придумайте другую идею для программы, которой еще не существует. Начать с нуля — это, в конечном счете, самое полезное, что вы можете сделать, потому что вы переходите от следования за другими к созданию собственных вещей. Вот тогда вы действительно начинаете чувствовать себя волшебником, потому что вы можете, по сути, что-то придумать, и это появится перед вашими глазами. Хотя, как правило, это требует некоторой работы, конечно! Это также имеет дополнительное преимущество, поскольку стимулирует творческий процесс, что не только полезно, но и необходимо для решения некоторых более сложных проблем, с которыми вы столкнетесь при программировании.
  2. Найдите инструмент с открытым исходным кодом, который вам нравится, написанный на языке, который вы изучаете. Если вы зайдете на их Github (или любой другой хостинг VCS, который они используют), скорее всего, они обнаружат, что их журнал проблем переполнен тысячами проблем от людей, которые регулярно используют этот инструмент. Выберите один и найдите для него решение. Клонируйте код и внедряйте его. Выясните это и не останавливайтесь, пока не получите это. После того, как вы это сделаете, вам следует подумать о том, чтобы отправить запрос на вытягивание в проект на Github (или где-то еще). Запрос на вытягивание на Github — это запрос на слияние ваших изменений кода с основной кодовой базой. Это то, как так много разрозненных разработчиков по всему миру могут работать над одним приложением без всеобъемлющей организации, управляющей разработкой. Это один из самых лучших способов совершенствоваться в программировании все быстрее и быстрее. Потому что его не примут. Если вы уже не безумно талантливы или внесенные вами изменения были крайне незначительными, на этом этапе ваши навыки просто не будут соответствовать навыкам разработчиков, которые часто участвуют в проекте. И это нормально! Отклонение вашего PR — вот и весь смысл этого пути обучения, потому что A. Ваш код будет подвергаться критике со стороны опытных разработчиков, и я не могу переоценить, насколько это полезно для начинающего программиста, который только начинает. B. Вы узнаете, как программировать с другими людьми и как работает отслеживание проблем и контроль версий, и C. Вы будете работать над проблемами, с которыми сталкиваются другие люди, то есть вы изучите один из самых важных процессов в программировании. , то есть отладка. Не бойтесь людей, критикующих ваш код. В конце концов, они просто лучшие разработчики, чем вы на данный момент, и советы, которые они вам дают, будут на вес золота, я обещаю. Вы должны гордиться своей работой, я, конечно, горжусь. Но это также означает возможность принимать советы и мнения других, более опытных, чем вы, и внедрять их в свой собственный процесс.
  3. Есть ли какие-нибудь приложения, которые вы используете на регулярной основе, которые вы считаете крутыми или интересными? Клонируйте это. Это также очень хороший способ научиться программировать, потому что он научит вас, как и почему разработчики приложений создавали свои приложения именно так, а не иначе. Кроме того, всегда полезно бросить себе вызов и создать что-то по-своему. Однако не забудьте отметить различия. Были ли они преднамеренными? Ваша версия лучше или хуже оригинала? Если хуже, то спросите себя, почему? Как вы можете сделать это лучше? А затем сделайте это. Если ваш ответ «да», вы можете начать относиться к себе более реалистично.
  4. Программирование — это способ думать о проблемах и находить решения, а не об инструментах, которые вы для этого используете.

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

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

Я не могу вам сказать, когда я впервые начал называть себя разработчиком/программистом/кодером/чем угодно, вместо того, чтобы говорить «я учусь программировать/кодировать/что угодно», потому что в конечном счете это тоже не имеет значения. Моя любимая часть программирования, больше, чем что-либо другое, — это тот простой факт, что вы постоянно изучаете что-то новое, все время, каждый божий день. Каждый раз, когда вы открываете редактор кода для решения проблемы, вы можете быть уверены, что уйдете, зная что-то, чего вы не знали, когда начинали. Итак, если вы ищете окончательный признак «программистского корабля», извините, но вы уйдете с пустыми руками. Это один из способов думать об этом. Однако я предпочитаю думать об этом по-другому. Когда вы чувствуете, что у вас действительно мышление программиста, когда вы чувствуете, что можете рассуждать о проблеме таким же образом, как и мы, разработчики, что позволяет нам перейти от абстрактной мысли к твердому коду. который делает то, что должен делать, или устраняет ошибку, которая вызывала проблему, если вы уверены в своем образе мышления, то вы действительно разработчик. Неважно, какой язык вы используете, или сколько языков вы в конечном итоге выучите, или приложения, которые вы решили создать. Нет ничего, что делало бы вас «настоящим разработчиком». Некоторые люди в сообществе могут не согласиться и сказать вам, что вы настоящим разработчиком, если только вы не используете технологию X или не можете доски решить проблему Fizz Buzz на 17 различных языках программирования, или вы мы реализовали ядро ​​операционной системы на ассемблере 8086 или бла-бла-бла. Это все чушь, чушь, бред, и я хочу, чтобы вы не обращали внимания не только на эти комментарии, но и на этих людей. Вы такой, какой вы есть, и если после прочтения этой статьи вы сами создали базовый менеджер Todo List на BASIC и хотите называть себя разработчиком/программистом/как угодно, то вы имеете на это полное право. Вы бы тоже были правы! К этому моменту у вас должны быть все навыки, необходимые для того, чтобы делать с компьютерами все, что вы хотите, и я имею в виду это в буквальном смысле.

Весь смысл этой статьи не в том, чтобы дать вам шаги, необходимые для создания приложения для iPhone, видеоигры или веб-сайта. Вы не уйдете от этого с чем-то, что вы не смогли бы понять сами, или в школе, или любым из миллионов других способов, которыми вы можете научиться программировать. На самом деле, как вы, наверное, заметили, во всей этой статье нет ни одной строчки кода. Это было совершенно намеренно. Потому что я не могу дать вам ни кода, ни алгоритма, ни инструмента, ни руководства, которое безошибочно научит вас программировать. В любом случае, я никогда не собирался этого делать. Это шаги, которые я использовал, чтобы узнать то, что я знаю сейчас, и я могу представить их только по достоинству. Вместо этого я надеюсь, что вы вынесете из этого, независимо от того, следуете ли вы процессу или нет, или, черт возьми, решите ли вы начать программирование или нет, это идеи, которые я изложил здесь. Философия всего этого, в конечном счете, то, что я пытался донести. Потому что существует так много неправильных представлений о программистах и ​​о том, что мы делаем, что это может невероятно пугать любого, кто только начинает. Это то, что я хотел бы, чтобы мне сказали, когда я начал программировать, я чувствую, что они помогли бы мне понять, что действительно важно при обучении программированию. Вероятно, в прежние годы я бы не тратил столько времени на то, чтобы ломать голову над тем, какой язык программирования выучить, какой текстовый редактор использовать или какая IDE позволит мне писать код быстрее. Эти вещи не имеют значения, особенно когда вы только начинаете. Изучайте язык, который интересует вас больше всего, а не тот, который, по вашему мнению, будет самым простым. Используйте тот редактор, в котором вы чувствуете себя наиболее комфортно, а не тот редактор, который вам приходится использовать, если вы хотите быть настоящим разработчиком. Если вы хотите научиться программировать с помощью Блокнота Windows, вперед (пожалуйста, не пытайтесь это делать, если вы не мазохист). Эти вещи поверхностны, и я говорю вам здесь и сейчас, что они не имеют ни малейшего значения, когда дело доходит до обучения программированию.

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

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

  1. Всегда будьте готовы к критике вашего кода, это только сделает вас лучшим программистом. Гордость убивает талант.
  2. Поиск проблем в программировании — это навык сам по себе, и он сильно зависит (см. 1) от вашей способности разбивать абстрактные проблемы на более мелкие фрагменты, которые вы действительно можете реализовать.
  3. Если вы можете понимать код, реализовывать свои собственные решения своих проблем и чувствуете, что понимаете, что я имею в виду в (1), тогда вы можете называть себя программистом. Не позволяйте никому говорить вам, что вы не один, потому что это не им решать.
  4. Стремитесь учиться и всегда будьте непредвзяты. Испытайте себя, особенно когда вы только начинаете. Если вы не можете сохранять интерес, значит, вы не справитесь со своей первой ошибкой.
  5. Делай свое дело. Теперь ты волшебник, а волшебники живут по своим правилам.
  6. Перед моей первой работой мне посчастливилось попасть на собеседование на должность кассира. После этого интервью стали приходить со значительной частотой! Но, к сожалению, как и в большинстве случаев, все они были разочаровывающими. За это время я прошел больше собеседований, чем у меня было реальных работ, и мне абсолютно нечего было показать. Моя удача закончилась, так что это казалось. Итак, я переехала в Британскую Колумбию с отцом и братьями, ожидая, что мне все-таки придется пройти через процесс обучения, только отложив то, к чему я уже была более чем готова. И именно там, в БЛ, я валялся, программируя в свое удовольствие круглые сутки днем ​​и ночью. Мне казалось, что я не могу найти другую работу. Должность младшего разработчика, указанная в моем резюме, вызвала крайнюю осторожность в розничной торговле и других местах начального уровня, особенно когда я упомянул, что я из Калгари. Я прошел собеседование в Canadian Tire, просто желая чего-то, что могло бы набить мои карманы, в то время как я заставлял себя пройти через образовательный ад, который меня ждал. Я никогда не слышал ответ, и я сомневался, что буду. Вы узнаете, что есть такая вещь, как «слишком хорошее» резюме. Никто не хочет нанимать кого-то, кто, по их мнению, собирается уйти в мгновение ока. В конце концов, они были правы. Ровно через две недели после того, как я прошел собеседование в Canadian Tire, я ехал в Калгари со 100 долларами в кармане и негде было ночевать. Меня только что приняли на работу в компанию, в которой я работаю в настоящее время. Накануне я получил электронное письмо, которое никак не ожидал получить. Одна из компаний, в которых я проходил собеседование в Калгари, связалась со мной и спросила, ищу ли я еще работу. Это меня удивило, потому что прошло уже более 4 месяцев с тех пор, как я брал у них интервью, и мне даже не перезвонили. «Однозначно да», — был мой ответ. Итак, мы назначаем короткое телефонное интервью на следующее утро. Или, скорее, телефонный звонок, потому что, когда я отвечал, единственные реальные вопросы, которые мне задавали, были, могу ли я быть там в 9 утра в понедельник утром (они звонили в субботу, получили электронное письмо в пятницу) и подойдет ли ноутбук с Windows. необходимо предоставить мне. Это было бы, поскольку у меня был только Macbook. Это вообще не было проблемой, и в тот же день, поспешно упаковав одежду и кое-какие личные вещи, я возвращался в Калгари с не более чем 100 долларами в кармане. Ах да, мне тоже негде было остановиться. К счастью для меня, мой отец спросил друга семьи, могу ли я поваляться на их диване, пока мне не удастся найти собственное место. Однако в итоге я остался там только на одну ночь, потому что мне посчастливилось найти сдаваемый в аренду подвал, где домовладелец разрешил мне остаться там на две недели до моей первой зарплаты. Все было готово, и моя вторая работа в качестве разработчика шла полным ходом. Не знаю, что конкретно во мне такого, что заставило их нанять меня. Возможно, дело было в том, как я говорил, или в том, что я делал заметки, но когда я позже спросил их, почему меня наняли (даже после того, как одна из моих рекомендаций выставила меня в плохом свете, подробно описав мою борьбу с опозданием), я был сказал, что старший разработчик в команде (русский парень с докторской степенью в области искусственного интеллекта, этот парень был буквально доктором искусственного интеллекта) считал меня умным, выдающимся кандидатом, кем-то, ради кого стоит рискнуть. Я помню это и действительно стараюсь соответствовать тому, что работаю на них каждый день. Я считаю, что превзошел их ожидания, по крайней мере, с точки зрения чистой работы. Признаюсь, я все еще ужасно опаздываю по утрам. Что-то из-за того, что я слишком часто сплю через будильники, но они очень снисходительны к этому. Пока работа выполняется, по большей части им все равно, во сколько я прихожу в офис. Однако это не значит, что я не пытаюсь. Есть что-то в людях, которых вы уважаете и на которых равняетесь, которые верят в вас, что действительно побуждает вас делать больше и больше того, на что, как вы думаете, вы способны. Однако из того, что я могу сказать, они довольны своим выбором нанять меня. Я начинал как подрядчик, оплачивая свои часы напрямую и получая зарплату через электронные переводы, но это был лишь вопрос времени, когда меня взяли на работу на полную ставку. Очевидно, я уже произвел на них впечатление. Еще немного перед моим первым рейзом, а затем еще один короткий после него. Излишне говорить, что я работал для них изо всех сил, и я наслаждаюсь каждой секундой этого. Я часто бываю в офисе в нерабочее время и по выходным, исправляю любую ошибку или функцию, над которой мне нужно работать в данный момент. Моя карьера продвигалась все дальше и дальше, и теперь она только вверх, пока я могу продолжать работу. Но я всегда буду благодарен за возможность и шанс, который они дали мне, и это даже не говоря о том, чему я научился в тесном сотрудничестве с другими блестящими разработчиками над проектами.

Руководство для молодых программистов по обучению программированию