[Перевод] Как я перестал продавать еду на улице и стал работать в топовых технологических компаниях

@
В этой серии статей Альваро Виделла (соавтор книги «RabbitMQ in Action», предыдущие места работы: Apple, VMWare, EMC) поделится тем, как он попал в мир программирования. Он никогда не изучал IT в университете, но нашел способ обойти это.

image

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

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

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

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

В поисках дополнительного дохода мы продавали на улицах пасту домашнего приготовления.Я ходил от двери к двери, собирая заказы на выходные. “Здравствуйте, не желаете заказать равиоли на воскресенье?” Я спрашивал одного человека за другим. “Да, они домашнего приготовления. Дайте нам немного времени и мы их доставим”.

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

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

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

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

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

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

Первые дни


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

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

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

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

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

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

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

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

Время для установки некоторых целей


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

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

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

Конечно, я знаю, о чем вы думаете. “Это же просто Google Maps”, вы говорите. Да, но тогда в 2006 году, единственным, что Google Maps знали о моем родном городе было том, что его пересекает большая национальная автострада. С учетом этого моя карта казалась хорошей идеей. Кроме того, я понял, что этот проект — отличный способ для того, чтобы продемонстрировать свои навыки потенциальному работодателю. У меня было четкое представление о том, что я хочу сделать; мне просто нужно было приняться за работу и воплотить это в реальность. Итак, в конце 2006 года я установил себе крайний срок: к февралю 2007 года у меня должна была быть рабочая концепция приложения карты. Она должна была включать в себя Flash интерфейс, обслуживаемый PHP модулем, использующим MySQL для обеспечения сохранности данных. Технологии, о которых я упомянул, возможно, не выглядят очень уж актуальными сегодня, но суть здесь в том, что мне пришлось обдумать и закрепить все детали моего плана, чтобы я понимал, за что браться в первую очередь, поскольку время тикало: каждый день сменялся новым днем, когда моя жена была невероятно загружена, работая больше, чем полагалось, только чтобы прокормить нашу семью.

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

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

Учебный проект: Приложение “карта”


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

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

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

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

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

В те дни, мой обычный день состоял из попыток решить проблему А, чтобы добраться до точки B. Иногда задания были достаточно легкими и я чувствовал стремительный прогресс. В другие дни мне казалось, что я двигаюсь в никуда. Например, скажем, мне нужно было реализовать такую функцию: “вставить новые данные в базу данных”. Это означало, что я должен написать все препятствия, которые я должен был преодолеть, чтобы добиться этого — от того, как написать инструкцию SQL INSERT до того как ее выполнять, используя PHP — и затем интегрировать все в приложение.

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

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

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

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

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

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

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

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

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

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

Продолжение следует.

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

Иллюстрация, которую вы видите в самом начале статьи, была сделана моим другом Sebastián Navas.


Перевод выполнен при поддержке компании EDISON Software, которая профессионально занимается разработкой сайтов-каталогов на ASP.NET для крупных заказчиков и создает полезное приложение против прокрастинации.
Данные о правообладателе фото и видеоматериалов взяты с сайта «Хабрахабр», подробнее в Правилах сервиса
Анализ
×
Луис Хорхе
Apple
Сфера деятельности:Связь и ИТ
206
Google
Сфера деятельности:Образование и наука
216
Карты Google
Производитель:Google
11