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

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

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

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

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

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

Чтобы получить дополнительный доход, мы пытались продавать домашнюю пасту на улицах. Я ходил по домам и собирал заказы на выходные. «Здравствуйте, вы хотите заказать равиоли в это воскресенье?» Я спрашивал человека за человеком. «Да, они самодельные. Просто дайте нам время, и мы их доставим ».

Затем, после того, как люди заказали их, мы потратили все выходные на приготовление 2000 равиоли и в итоге получили 500 песо в карманах, что составляет около 20 долларов, не считая расходов.

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

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

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

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

Но была одна небольшая проблема: чтобы работать программистом, обычно нужно уметь программировать компьютеры. Мне? Я мог бы установить Linux самостоятельно, но, вероятно, это было все.

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

Первые дни

Я увлекаюсь компьютерами с подросткового возраста - большую часть времени навещаю друга, у которого был компьютер. Хотя мы часто использовали компьютер для игр, мне было неинтересно играть. Почему? Когда я пошел в среднюю школу, отец друга разрешил нам использовать его компьютер ZX Spectrum. У него была хорошая стопка кассет с множеством игр для них, и, конечно, мы могли играть во все, что хотели, но однажды он показал мне кое-что, что поразило меня: люди могут создавать свои собственные игры, программируя компьютер!

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

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

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

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

К началу 2000-х мне удалось убедить деда купить мне компьютер: Pentium MMX с 32 МБ ОЗУ! Какая машина! Я впервые установил на него Linux, используя компакт-диск SUSE, который бесплатно поставлялся с аргентинским компьютерным журналом. Я провел на этом компьютере довольно много времени: пробовал разные дистрибутивы Linux, знакомился с командной строкой и так далее, но никогда не занимался программированием.

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

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

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

Время для некоторых целей

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

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

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

Конечно, я знаю, о чем вы думаете. «Это просто Google Карты», - скажете вы. Да, но в 2006 году единственное, что Google Maps знал о моем родном городе, это то, что его пересекает большое национальное шоссе. Учитывая это, моя карта казалась хорошей идеей. Кроме того, я подумал, что этот проект станет идеальным способом продемонстрировать свои навыки потенциальному работодателю. У меня была четкая цель того, что я хотел построить; Мне просто нужно было приступить к работе и сделать это возможным.

Итак, в конце 2006 года я поставил себе крайний срок: к февралю 2007 года у меня должна была быть рабочая концепция приложения карты. Это должно было включать внешний интерфейс Flash, обслуживаемый сервером PHP, использующий MySQL для сохранения данных. Технологии, о которых я только что упомянул, могут показаться сегодня не слишком актуальными, но суть в том, что я должен был тщательно продумать каждую деталь своего плана, чтобы я знал, какие проблемы нужно решать в первую очередь, поскольку время шло: каждый прошедший день Был еще один день, когда моя жена была перегружена, работая сверхурочно, чтобы накормить наш стол.

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

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

Учебный проект: приложение для карт

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

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

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

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

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

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

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

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

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

Достаточно сказать, что это было совершенно непрактично. Вернувшись домой, я использовал полученную информацию, чтобы помочь мне выполнить текущую задачу, но когда она была завершена, мне не хватало знаний для выполнения следующего шага. Это означает, что меня оставили сидеть дома, думать о проблеме и ждать следующего дня, когда я смогу выжать еще 50 центов из нашего бюджета, чтобы пойти в кафе и повторить эту процедуру. Хотя в то время это казалось мне единственным вариантом, в конце концов мне пришлось признать, что пришло время для новой стратегии. Мне нужно было что-то, что содержало бы большую часть информации о том, как написать веб-приложение с помощью PHP и Flash MX, с руководствами, объясняющими, как выполнять самые тривиальные задачи, и все в одном месте. Не интернет, а книги!

Кажется, такая легкая задача, но для кого-то в моей ситуации нужные мне книги не обязательно были доступны. Проблема в том, что когда вы являетесь частью маргинализованного сектора общества, получить доступ к книгам не так-то просто. Ближе всего к книге по программированию, которую вы можете найти в публичной библиотеке, будет какое-нибудь устаревшее руководство по ремонту компьютера - возможно, какое-нибудь запыленное руководство по MS-DOS, или, возможно, книга по BASIC или Delphi, если вам повезет, - но не более того. .

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

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

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

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

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

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

Иногда решение таких проблем ближе к дому, чем мы думаем. В конце концов, мы обратились за помощью к семье. У моей жены есть тетя, которая долгое время жила в США, поэтому мы решили, что стоит спросить, купит ли она мне пару книг по программированию. Итак, во время одной из моих интернет-экскурсий я написал ей электронное письмо с объяснением моей ситуации, нажал «Отправить» и, по сути, скрестил пальцы и молился каждому божеству, чтобы она помогала нам. Через пару дней в моем почтовом ящике появилось новое письмо. Это был ее ответ прямо по делу: «Скажите, какие книги вам нужны, и я закажу их на Amazon». Проведя небольшое исследование, я попросил Библию Flash MX и Библию PHP 5 и MySQL.

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

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

Источники: иллюстрацию вверху сделал мой друг Себастьян Навас. Если вы хотите увидеть больше его работ, зайдите в его профиль на Deviantart: https://polacostyle.deviantart.com или свяжитесь с ним через Facebook: https://www.facebook.com/sebastian.navas. 16