Предлагаем вашему вниманию перевод статьи Альваро Видела How I went from selling food in the street to working for top firms in tech. Она рассказывает о попытках автора «Войти в ИТ». Было это более 10 лет назад, а уругвайские реалии того времени удивительно напоминают таковые в той самой части света, где живёт подавляющее число студентов JavaRush. Так что читайте статью, и не забывайте решать задачи. Думаем, вы отметите, насколько легче стало самостоятельно учить программирование по сравнению с 2006 годом!
В этой серии статей хочу поделиться с вами, как я попал в мир программирования. Я никогда не изучал информационные технологии в университете, я нашёл другой способ. В конце 2006 года я оказался в очень непростой жизненной ситуации. Мои надежды стать учителем лингвистики средней школы растаяли в одночасье. Суровые обстоятельства сложились так, что продолжение моей учёбы оказалось невозможным. Я вернулся в свой родной город Дурасно в Уругвае. Моя жена работала по много часов за скудную зарплату в 160$ в месяц. Да, это 1920$ в год. Мы жертвовали временем, которое могли бы проводить вместе, чтобы я выучился и получил более высокооплачиваемую работу. Конечно, мы мечтали о лучшей жизни. Но мечты так и оставались мечтами. Поскольку всё пошло не по плану, мне пришлось вернуться в родной город, чтобы обдумать свои следующие действия. Надо ли говорить, что я был в депрессии и жизненные обстоятельства, в которых я оказался, ещё больше меня угнетали. Я был рад вновь видеть свою жену, но хотелось бы, чтобы это произошло по иному поводу.
Кроме всего прочего, жили мы вместе с тётей моей жены, так что наше личное пространство ограничивалось спальней, и за её пределами мы чувствовали себя как надолго задержавшиеся гости. Чтобы получить хоть какой-то дополнительный доход, мы продавали еду на улице, приготовленную своими руками. Мне приходилось ходить по соседям и собирать заказы к выходным. «Привет, не хотите ли поесть наши равиоли в воскресенье?» Так я спрашивал раз за разом. «Да, конечно, они ручной работы. Подождите немного и мы их вам доставим». И, собрав заказы, на выходных мы лепили пару тысяч равиолей, чтобы заработать 500 песо (это около 20$). И это не считая расходов. Ситуация была ужасная. Мы чувствовали безысходность. Моя жена тяжело работала всю неделю, а на выходных помогала мне лепить равиоли. У неё не было даже одного выходного для себя. Она умоляла меня прекратить лепить эти равиоли, даже если это означало, что у нас будет меньше денег для оплаты счетов. В конце концов, я согласился, но это означало, что мне надо найти работу, а это не так уж просто сделать в нашем небольшом городке. Меня одолевали тревога и отчаяние.
Однажды я поговорил со своим другом, который изучал компьютерную инженерию в университете Монтевидео. Он рассказал мне о возможностях найти работу в столице с зарплатами, которые казались пределом мечтаний для провинциального жителя. «В Монтевидео есть большая компания — Live Interactive. Они всегда в поиске программистов, платят отлично. Возможно, ты сможешь найти работу у них» — сказал мне друг. Зарплата, которую он упомянул, в три раза превышала наши доходы, и я всё время думал о том, что мы можем себе позволить с таким количеством денег. Нам больше не пришлось бы переживать, что у нас сегодня на обед. Мы бы смогли оплатить интернет, купить нормальную одежду и обувь и даже позволить себе стиральную машину! К тому же, у меня уже был опыт работы с компьютерами. Мне всегда нравилось работать с ними, в основном потому, что у меня получалось решать проблемы с их помощью. Программирование напоминало мне о необходимости взломать код или найти решение заковыристой головоломки — это были сложные задачи, и мне они очень нравились. Более того, я понимал, насколько программирование может быть перспективно для моей карьеры. Но была одна небольшая проблема: чтобы работать программистом, надо понимать как программировать. Я мог самостоятельно установить Linux, но это был потолок моих айтишных возможностей.
Как можно устроиться на работу программистом без опыта и без диплома о высшем образовании? Как изучить программирование без интернета дома, без наставников и доступа к специализированной литературе? Это была моя проблема в 2006, и вот как я её решил.

Первые попытки

Я проявлял интерес к компьютерам с юности. По большей части — когда навещал своего друга, у которого был свой компьютер. В основном мы проводили время за видеоиграми, однако я не могу сказать, что они особо меня занимали. Почему? Когда я поступил в среднюю школу, отец моего друга разрешил нам использовать его ZX Spectrum. У него была стопка кассет с играми для него, и мы могли играть в любые из них, но однажды он показал мне то, что меня по-настоящему удивило — люди могут сами создавать свои игры, используя программирование! Он показал мне некоторые трюки в BASIC, например, как можно генерировать случайные числа, используя функцию RAND. Это поразило меня. В тот момент я понял, что компьютер — это куда больше, чем прославленная Nintendo с клавиатурой. Вы можете заставить его делать вещи для вас — действительно классные вещи, например, нарисовать линии с помощью тригонометрических функций, а затем раскрасить их, используя случайные цвета Вы даже можете создавать музыку, передавая разные частоты в BEEP. Однажды я принёс Spectrum домой и провёл весь день, проигрывая звуковые сигналы на своём телевизоре. Мама, как вы понимаете, была в восторге... Как можно устроиться на работу программистом, не имея опыта и не получив диплом о высшем образовании? В дальнейшем, в юности я по-прежнему проводил время с друзьями, у которых были персональные компьютеры и, в основном, мы, конечно, играли. Тем временем, мои более технически продвинутые приятели обучили меня некоторым трюкам с операционной системой, в основном это был MS-DOS.
Время от времени, мы пытались программировать на BASIC, копировали символ за символом фрагменты кода, которые видели в старых компьютерных журналах. Тогда они казались нам магическими заклинаниями, вернее, техническими заклинаниями. Особенно здорово было редактировать текст, который всплывал в разных ситуациях во время игры. Мы чувствовали себя крутыми хакерами! В начале 2000-х мне удалось убедить дедушку купить компьютер. Это был Pentium MMX с 32 оперативной памяти — круть неимоверная! Сначала я установил на него Linux, с помощью SUSE CD, который шёл бонусом к аргентинскому компьютерному журналу. Я провёл немало времени над экспериментами с различными дистрибутивами Linux, знакомясь с командной строкой и т.д. Но никогда не занимался именно программированием. Когда я вспоминаю те времена, до сих пор не могу понять, почему не изучал тогда программирование на Cи, и вообще не осваивал никакой язык программирования. Друг даже предложил мне ту самую Библию программирования, «Программирование на Cи» Кернигана и Ритчи, так что отсутствие доступа к руководству не оправдывает меня. Тогда я разобрал всего несколько примеров, но особого интереса в тот момент программирование у меня не вызвало, поскольку я не понимал, как оно может пригодиться мне в жизни. В те годы я просто игрался с Linux, и ничего более. Тогда у меня были случайные заработки, я играл в рок-группе, пытался стать учителем лингвистики, женился и колесил по стране с женой. И вот, после вышеупомянутого разговора с другом, в ноябре 2006 года, я загорелся попасть в ту самую компанию в Монтевидео. Но для этого мне нужно было соответствовать её требованиям, и я решил стать надёжным программистом.

Время ставить цели

Поскольку я хотел, чтобы меня взяли на работу, первое, что я должен был сделать — оценить уровень своих программистских навыков. Причём оценить честно, чтобы понимать, на чём фокусироваться. В то время я знал немного об ActionSpirit для Flash MX и самые начала PHP. Ранее в том же году изучение этих вещей стало моим хобби. Проект по изучению программирования стал моим детищем в надежде на то, что это сможет в дальнейшем стать моим альтернативным источником дохода.
У меня появилась идея создания цифровой карты моего города, где пользователь мог бы отмечать местоположения предприятий, магазинов и других интересных ему мест. Я бы мог взымать плату с компаний в обмен на их появление в моей карте, моём онлайн приложении. Я знаю о чём вы думаете. «Это же просто Google Maps» — скажете вы. Так и есть, но всё, что Google знал о моём родном городе в 2006 году — то, что его пересекает большая трасса. Поэтому моя карта казалась весьма неплохой идеей на тот момент. К тому же, я подумал, что этот проект станет неплохим способом продемонстрировать мои навыки потенциальному работодателю. У меня было чёткое понимание, что я хочу сделать, мне просто надо было собраться и приложить усилия. В конце 2006 года я установил сам себе дедлайн: к февралю 2007 у меня должна была быть работающий концепт приложения. Он должен был включать фронтенд, написанный на Flash, бекэнд на PHP с подключением MySQL для обслуживания данных. Я решил всё чётко спланировать, отделить важные проблемы от второстепенных, ведь время неумолимо тикало: каждый день моя жена работала по ненормированному графику, чтобы заработать нам на пропитание.
К тому же, мне было нужно, чтобы потенциальные работодатели поняли, что я хорошо владею этими технологиями, иначе я бы не смог получить работу. Естественно, мне нечего было написать в резюме, поэтому пришлось создавать свою базу знаний с нуля, и моё приложение послужило бы демонстрацией моих навыков программирования. Моей главной целью стало пройти собеседование в компании, о которой говорил мой друг, и благодаря моим навыкам и приложению, в конце концов, получить работу.
Уже тогда я понимал важность постановки чётких задач для себя, чтобы достичь желаемого результата.

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

Приложение, которое я создал, называлось Aleph Maps — ссылка на рассказ Хорхе Луиса Борхеса «Алеф», который повествует о месте на планете, где сходятся прошлое, настоящее и будущее. Не очень-то однозначно, да? Но чтобы воплотить эту идею в жизнь, мне нужно было научиться программировать веб-приложения. Отсутствие интернета дома — это серьёзное испытание для разработчика. Когда я начинал, широкополосного доступа ADSL ещё практически не было, он был доступен лишь предприятиям и, возможно, богатым семьям. Для среднестатистических семей подключение к интернету означало модемное соединение с медленной скоростью за большие деньги. Я не мог себе этого позволить, и мне приходилось беспокоить друзей всякий раз, когда мне нужно было почитать онлайн-пособие по программированию на PHP. То есть, невзирая на наличие компьютера и желание учиться, у меня не было свободного доступа к информации.
Моей целью было найти работу, поэтому эти сложности не удержали меня от изучения PHP. Когда вы не можете позволить себе терять время, у вас нет права впадать в отчаяние, всё, что вам надо сделать — это искать решения.
Поскольку в городе нормального интернета катастрофически не хватало, у наc стали повсеместно появляться интернет-кафе. Они брали за свои услуги по 50 центов в час. Это показалось мне куда лучшим вариантом, чем сидеть на голове у товарищей. Но в то же время это означало, что надо найти свободных полдоллара и пару дискет, чтобы поработать часок в интернет-кафе, успеть найти нужную мне информацию, скопировать её и продолжить обучение дома уже за своим компьютером. Возможно, это читают те, кто помнят дискеты, эти адски ненадёжные носители информации: ты приходишь домой, пытаешься забрать с них информацию, но они уже повреждены… Представьте, как я злился: потратил время и потерял 50 центов ни на что. Полдоллара! Тогда за доллар можно было купить бургер или бутылку пива. Для моей семьи это была значительная сумма: мы могли бы купить молоко или хлеб на эти деньги. В то время моя ежедневная работа состояла в попытке сдвинуться из точки А и добраться в точку Б. Некоторые задачи были не такими уж и сложными, и мне казалось, что я делаю успехи. А порой мне казалось, что всё это — дорога в никуда. Вот, например, мне надо реализовать функцию «ввести новую информацию в базу данных». Если задача звучит так, это значит, что мне нужно описать всё, что я должен сделать, чтобы добиться этого — от написания инструкции SQL INSERT до её выполнения с использованием PHP, а затем интегрировать всё это в моё приложение.
Каждый день, идя в интернет-кафе я ставил себе определённую задачу. Я брал с собой дискеты и искал в Google полезные блоги, статьи, учебные пособия — всё то, что помогло бы мне найти нужные решения. Как только я находил всё необходимое, то сохранял это на дискеты и отправлялся домой в надежде, что дисковод моего компьютера соблаговолит считать сохранённые данные. Беспокойство съедало меня, всякий раз, когда я добирался домой на велосипеде. «А что если там вообще нет данных?» — думал я. «А что если велосипед сильно трясёт, и сейчас я приеду домой с пустыми дискетами? У меня ведь действительно нет лишнего доллара, чтобы вернуться в кафе сегодня, так что лучше бы дома всё оказалось в сохранности». Надо сказать, что это было совершенно нецелесообразно. Я возвращался домой и выполнял одну задачу, благодаря информации, которую привозил с собой, но мне не хватало знаний для следующего шага. Я просто ждал нового дня, когда снова смогу взять из семейного бюджета 50 центов и отправиться в кафе. И хотя в то время мне казалось это единственным вариантом, но я понимал, что надо менять стратегию. Мне нужно было что-то, где содержалось бы больше информации о том, как создавать веб-приложение с PHP и Flash MX, с руководствами, объясняющими как выполнить самые простые задачи, всё в одном месте. Не интернет, а книги! Это кажется очевидным, но на самом деле и тут всё не так беспрепятственно. Проблема в том, что когда вы являетесь маргинальной частью общества, то доступ к книгам также ограничен. Самое близкое к программированию, что вы можете найти в библиотеке — это пособие «Как починить компьютер», запылившееся руководство MS-DOS или, возможно, старинный фолиант по BASIC или Delphi, если вам сильно повезёт. Но не более того. Но ведь можно купить книги, верно? Не совсем. В книжных магазинах большинства провинциальных городков Уругвая техническая литература просто не продаётся. И мой город был не исключением. К тому же, большинство технических книг, особенно тех, что посвящены передовым технологиям, написаны на английском. Их бесполезно искать в небольших книжных магазинчиках. И у меня в итоге оставался только один вариант — Amazon.
Но и здесь возникли сложности. Чтобы купить книгу на Amazon, вам нужен небольшой кусок пластика, именуемый кредитной картой. А чтобы её получить, в то время была нужна положительная кредитная история. Для большинства людей это не проблема, но в моём случае всё было совсем не так: всё, что мы покупали, оплачивалось наличкой. У нас не было ни денег, ни экономической стабильности, чтобы участвовать в каких-либо кредитных историях. Мы не брали кредитов. Если мы хотели купить что-либо, превышающее наш ежемесячный доход, мы либо экономили месяц за месяцем, пока не соберём нужную сумму, либо брали в долг у родственников. К тому же, даже если бы мы смогли купить книгу на Amazon, то доставка в Уругвай стоила бы столько же, сколько сама книга и занимала около месяца.
Иногда решения проблем находятся ближе, чем мы думаем. В итоге мы решили обратиться за помощью к семье. У моей жены есть тётя, которая некоторое время прожила в Америке, и мы решили попросить её помощи в приобретении нескольких книг для меня. Однажды я набрался храбрости и написал ей письмо, объяснив мою ситуацию, нажал «Отправить» и, скрестив пальцы, молился всем богам в надежде, что она нам поможет. Спустя несколько дней в моём ящике было новое письмо. Это был её ответ, строго по существу: «Скажи, какие книги тебе нужны, и я закажу их на Amazon». Я решил попросить «Flash MX Библия пользователя» и «PHP 5» и «MySQL Библия пользователя». Эти книги оказались невероятно полезными и необходимыми в последующие недели. Теперь я мог находить решения текущих задач, не посещая интернет-кафе в поисках недостающей информации. Я наконец-то мог понять, что именно мне нужно знать для создания моего картографического приложения. И, в конце концов, когда у меня под рукой есть вся необходимая информация, время сесть за компьютер и приступить к работе. Я надеюсь, вам понравилась первая часть. В следующей главе я расскажу вам о том, как готовился получить работу, и как прошло собеседование. Примечание: главная иллюстрация, которую вы видите выше, была создана моим другом Себастианом Навасом (Sebastian Navas). Если вы хотите увидеть больше его работ, то заходите сюда, или свяжитесь с ним в Facebook

Что еще почитать:

Секретные уровни резюме, или как хакнуть HR

Химия + программирование = победа!

Мой чат