Найти в Дзене
💻 ITShaman

Как я прошел путь от продажи еды на улице до работы в ведущих фирмах в сфере технологий

Оглавление

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Первые дни

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Учебный проект: картографическое приложение

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

Отсутствие Интернета дома - настоящее испытание для будущего веб-разработчика. Когда я начинал работать, широкополосное подключение 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".

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