В этой серии статей я хочу поделиться с вами тем, как я попал в мир программирования. Я никогда не учился в университете, чтобы изучать ИТ, но я нашел способ обойти это. Если вам понравилась серия и вы хотите увидеть книгу из этой, пожалуйста, оставьте комментарий ниже.
В конце 2006 года я оказался на перепутье в своей жизни. Мои надежды стать учителем лингвистики в средней школе исчезли в одно мгновение, так как несколько факторов сошлись воедино и не позволили мне продолжать учебу.
В моем родном городе Дуразно, Уругвай, моя жена много работала за скудные 160 долларов США в месяц. Да, это 1920 долларов в год. Мы пожертвовали своим временем вместе, чтобы я могла стать учителем и получить лучшую работу, потому что мы мечтали о лучшем будущем.
Проблема со снами в том, что они, как правило, исчезают, когда вы просыпаетесь, а будильник жизни только что прозвенел.
Поскольку траектория моей карьеры внезапно сбилась с курса, я вернулся в свой родной город, чтобы продумать свои следующие шаги. Излишне говорить, что я был подавлен тем, как обстояли дела, и наша жизненная ситуация только усугубляла ситуацию. Было хорошо вернуться к жене, но причины этого были стрессовые.
Кроме того, мы делили дом с тетей моей жены, поэтому наше уединение было ограничено нашей спальней, и мы всегда чувствовали, что задерживаемся.
В качестве дополнительного заработка мы пытались продавать домашнюю пасту на улицах. Я ходил по домам, собирая заказы на выходные. «Здравствуйте, не хотите заказать равиоли в это воскресенье?» Я спрашивал человека за человеком. «Да, они домашние. Просто дайте нам время, и мы доставим их».
Затем, после того, как люди заказали их, мы потратили все наши выходные, делая 2000 равиоли, только чтобы в итоге получить 500 песо в наших карманах, что составляет около 20 долларов, не считая расходов.
Вся ситуация была обескураживающей, и это заставило нас чувствовать себя безнадежными. Моя жена усердно работала всю неделю, а потом возвращалась домой только для того, чтобы проводить выходные, помогая мне готовить равиоли. У нее не было даже одного выходного дня для себя. Она умоляла меня прекратить продавать равиоли, даже если это означало, что у нас останется меньше денег для оплаты счетов. В конце концов я согласился, но это означало, что я должен был попытаться найти работу — а найти работу было не так просто в нашем родном сельском городке. Тревога и отчаяние начали нарастать.
Однажды вечером я разговаривал с другом, который изучал компьютерную инженерию в университете Монтевидео. Он рассказал мне о различных возможностях трудоустройства, которые можно было найти в столице, с зарплатой, о которой мечтают люди, живущие в сельской местности. «В Монтевидео есть крупная компания Live Interactive, — сказал он мне. «Они всегда ищут программистов; может быть, вы могли бы попытаться получить работу там. Платят очень хорошо».
Зарплата, которую он упомянул, примерно в три раза превышала ту, что мы получали в то время, и я не мог не представить себе, на что мы могли бы пойти с такой суммой денег. Нам больше не нужно было бы беспокоиться о том, чтобы поставить еду на стол. Наконец-то мы могли платить за собственное подключение к Интернету, покупать приличную одежду и обувь и даже иметь собственную стиральную машину!
Мало того, у меня уже был опыт работы с компьютерами. Мне всегда нравилось с ними работать, в основном потому, что они обращались к моему умению решать проблемы. Программирование напомнило мне о том, что нужно взломать код или найти решение сложной головоломки, но это не только сложно, но и весело. Более того, я рассматривал программирование как карьеру с большим потенциалом роста.
Но была одна маленькая проблема: чтобы работать программистом, обычно нужно уметь программировать компьютеры. Мне? Я мог бы установить Linux самостоятельно, но, пожалуй, на этом все и закончилось.
Как устроиться на работу программистом, если у вас почти нет опыта программирования и нет университетского диплома, подтверждающего ваши знания? Как научиться программировать без доступа к Интернету дома, без наставников, с которыми можно связаться, и без доступа к книгам по программированию? Это была моя проблема еще в 2006 году, и это история о том, как я ее решил.
Первые дни
Я баловался компьютерами с подросткового возраста — в основном, когда навещал друга, у которого был ПК. Хотя мы часто использовали компьютер для игр, мне не очень хотелось играть. Почему? Когда я пошел в среднюю школу, отец моего друга позволил нам использовать его компьютер ZX Spectrum. У него была хорошая стопка кассет с множеством игр для нее, и, конечно, мы могли играть во все, что хотели, но однажды он показал мне то, что поразило меня: люди могут создавать свои собственные игры, программируя компьютер!
Он показал мне несколько трюков на Бейсике, например, как можно генерировать случайные числа с помощью функции СЛУЧАЙ. Я был удивлен. В тот момент я понял, что компьютеры — это больше, чем прославленная Nintendo с клавиатурой: вы действительно можете сказать им, чтобы они делали что-то для вас — крутые вещи, такие как рисование линий с использованием тригонометрических функций, а затем их раскрашивание, применяя случайные цвета! Вы даже можете создавать с ними музыку, передавая различные частоты в BEEP. На самом деле, однажды я принес Spectrum к себе домой и провел целый день, проигрывая различные звуковые сигналы на моем телевизоре — я уверен, что моей маме это понравилось.
Как устроиться на работу программистом, если у вас почти нет опыта программирования и нет университетского диплома, подтверждающего ваши знания?
Позже, в подростковом возрасте, я продолжал проводить время с друзьями, у которых были свои компьютеры, и, естественно, мы играли на них в игры. Тем временем с моими более технически подкованными друзьями я научился нескольким хитростям операционной системы — в основном MS-DOS.
Время от времени мы пробовали программировать на BASIC, копируя, символ за символом, фрагменты кода из старых компьютерных журналов. Нам они казались магическими заклинаниями или технологическими заклинаниями. Что нам очень понравилось, так это попытка редактировать текстовые сообщения, которые игра показывала в разных ситуациях. Мы думали, что мы такие хакеры!
К началу 2000-х мне удалось убедить дедушку купить мне компьютер: Pentium MMX с 32 МБ оперативной памяти! Что за машина! Я впервые установил на него Linux, используя компакт-диск SUSE, который бесплатно поставлялся с аргентинским компьютерным журналом. Я провел довольно много времени за этим компьютером: пробовал разные дистрибутивы Linux, знакомился с командной строкой и так далее, но никогда особо не занимался программированием.
Когда я оглядываюсь на те дни, я не могу понять, почему я не изучал программирование на C — или любое другое программирование в этом отношении. Друг даже предложил мне библию по программированию на C Кернигана и Ритчи, так что отсутствие доступа к руководству не было оправданием. Но почему-то, прочитав несколько примеров, она не вызвала у меня никакого интереса, так как я не понимала, чем мне может быть полезно то, о чем она рассказывает. В любом случае, игра с Linux была единственным занятием, которое я тогда делал с компьютерами.
С этого момента у меня было несколько второстепенных работ, я играл в рок-н-ролльной группе и пытался стать учителем лингвистики, все время женившись и путешествуя по стране вместе с женой.
Перенесемся в ноябрь 2006 года, и я обнаружил, что мне нужно каким-то образом получить работу в компании-разработчике программного обеспечения. Я должен был стать надежным программистом.
Время для некоторых целей
Если я хотел, чтобы меня наняли, первое, что нужно было сделать, это оценить свои навыки программиста. Я должен был быть честным с самим собой, чтобы знать, на чем сосредоточить свои усилия.
В то время я немного знал ActionScript для Flash MX и самые основы программирования на PHP. Ранее в том же году я начал изучать эти технологии в качестве хобби. Я также начал свой любимый проект по изучению программирования, думая, что это могло бы стать дополнительным источником дохода.
Мне пришла в голову идея сделать цифровую карту моего родного города, на которой можно было бы размещать булавки, указывающие пользователю на расположение предприятий, магазинов и интересных мест. Затем я брал с этих предприятий деньги в обмен на то, что они появятся в моем приложении для онлайн-карт.
Конечно, я знаю, о чем ты думаешь. «Это просто Google Maps», — скажете вы. Да, но в 2006 году единственное, что Google Maps знало о моем родном городе, это то, что его пересекала крупная национальная магистраль. Учитывая это, моя карта казалась хорошей идеей. Кроме того, я подумал, что этот проект станет идеальным способом продемонстрировать свои навыки потенциальному работодателю. У меня была четкая цель того, что я хотел построить; Я просто должен был приступить к работе и сделать это.
Поэтому в конце 2006 года я поставил себе крайний срок: к февралю 2007 года у меня должна была быть работающая концепция картографического приложения. Это должно было включать внешний интерфейс Flash, обслуживаемый серверной частью PHP, использующий MySQL для сохранения данных. Технологии, о которых я только что упомянул, могут показаться не слишком актуальными сегодня, но дело в том, что я должен был зафиксировать каждую деталь своего плана, чтобы знать, какие проблемы решать в первую очередь, поскольку время тикало: каждый прошедший день был еще один день, когда моя жена была перегружена, работая сверхурочно, чтобы получить еду на наш стол.
Кроме того, чтобы хотя бы попробовать получить работу программиста, мне нужно было показать потенциальным работодателям, что я умею программировать на этих конкретных технологиях, потому что это было частью должностной инструкции. Естественно, в моем резюме ничего не было связано с этими навыками, поэтому мне пришлось наращивать свои знания с нуля, а мое приложение служило демонстрацией моего опыта в программировании.
План состоял в том, чтобы пройти собеседование в компании, о которой мой друг упоминал ранее, и, надеюсь, благодаря сочетанию моих навыков и моего приложения я в конечном итоге получу там работу. Уже тогда я знал, как важно ставить перед собой четкие цели, чтобы добиться желаемого.
Учебный проект: картографическое приложение
Созданное мной картографическое приложение называлось «Карты Алеф» — отсылка к рассказу Хорхе Луиса Борхеса «Эль Алеф» 1949 года о месте во вселенной, где содержится все — прошлое, настоящее и будущее. Совсем не амбициозно, правда? И чтобы воплотить эту идею в жизнь, мне пришлось бы научиться программировать веб-приложения.
Отсутствие дома интернета — настоящая проблема для будущего веб-разработчика. Когда я начинал, широкополосный доступ ADSL почти не применялся, ограничиваясь только предприятиями и, возможно, богатыми домохозяйствами. Для средней семьи подключение к Интернету означало подключение через модем и высокую цену за медленный доступ в Интернет. Я не мог себе этого позволить, а это означало, что мне приходилось идти и беспокоить друзей каждый раз, когда мне нужно было получить доступ к какому-нибудь онлайн-руководству, в котором объяснялось, как программировать на PHP.
Таким образом, даже несмотря на то, что у меня был компьютер и желание учиться, у меня все еще не было простого или регулярного доступа к информации о том, как это сделать. Но я был полон решимости получить эту работу и знал, что даже эти неудачи не удержат меня от изучения PHP.Когда у вас нет времени тратить его понапрасну, у вас нет времени впадать в отчаяние; вместо этого вы должны сосредоточиться на поиске решений.
Между тем, из-за отсутствия доступа к Интернету в городе начали появляться интернет-кафе, где за один час серфинга берут около полдоллара. Это показалось мне лучшим решением, чем постоянно беспокоить моих друзей. Но это также означало найти дополнительные 50 центов и пару дискет, чтобы добраться до интернет-кафе, найти нужную мне информацию, скопировать ее на одну из этих дискет и принести домой на свой компьютер. Чаще всего данные повреждались в процессе извлечения их с дискет.
Представьте, как я был зол и расстроен: я зашел в интернет-кафе и зря потратил 50 центов. Полдоллара! Это может показаться не таким уж большим, но в то время, когда мы жили, можно было купить бургер или бутылку пива за доллар. Для нас это были большие деньги: это означала нашу ежедневную бутылку молока или буханку хлеба.
В те дни моя рутина состояла из попыток решить проблему А, чтобы добраться до точки Б. Иногда задачи были довольно простыми, и я чувствовал, что делаю быстрый прогресс. В другие дни казалось, что я иду в никуда. Например, скажем, мне нужно было реализовать такую функцию, как «вставка новых данных в базу данных». Это означало, что я записал все препятствия, которые мне пришлось решить, чтобы добиться этого — от того, как написать оператор SQL INSERT до того, как выполнить его с помощью PHP — и затем интегрировать все в приложение.
Каждое из этих заданий было пунктом в моем ежедневном «списке покупок», когда я ходил в интернет-кафе. Я брал с собой пару дискет, а затем гуглил в поисках постов в блогах, учебных пособий и руководств, которые помогли бы мне решить вопросы из моего списка. Как только это было завершено, пришло время сохранить их на моих дискетах и отправиться домой, все время надеясь, что данные успешно сохранены и к ним будет легко получить доступ на моем компьютере.
Из-за связанной с этим неуверенности, поездка на велосипеде назад будет подпитываться сильнейшим беспокойством. «А что, если данных вообще нет?» Я поинтересовался. «Что, если байк будет слишком сильно трястись и данные будут повреждены? У меня действительно нет ни одного доллара до завтра, так что лучше поработайте, когда я вернусь домой».
Я был полон решимости получить эту работу и знал, что даже эти неудачи не удержат меня от изучения PHP. Когда у вас нет времени тратить его понапрасну, у вас нет времени впадать в отчаяние; вместо этого вы должны сосредоточиться на поиске решений.
Достаточно сказать, что это было совершенно непрактично. Вернувшись домой, я использовал полученную информацию, чтобы помочь мне выполнить задание, но как только оно было завершено, мне не хватило знаний для выполнения следующего шага. Это означает, что я остался сидеть дома, думать о проблеме и ждать следующего дня, когда я смогу выжать из нашего бюджета еще 50 центов, чтобы пойти в кафе и повторить эту рутину. Хотя в то время это казалось моим единственным вариантом, в конце концов мне пришлось признать, что пришло время для новой стратегии. Мне нужно было что-то, что содержало бы большую часть информации о том, как написать веб-приложение с PHP и Flash MX, с руководствами, объясняющими, как выполнять самые тривиальные задачи, и все это в одном месте. Не интернет, а книги!
Это кажется таким простым делом, но для кого-то в моей ситуации те книги, которые мне были нужны, не обязательно были в пределах досягаемости. Проблема в том, что когда ты принадлежишь к маргинальному сектору общества, доступ к книгам не так прост. Самое близкое к книге по программированию, которое вы можете найти в публичной библиотеке, будет какое-нибудь устаревшее руководство по ремонту компьютера — может быть, какое-нибудь запыленное руководство по MS-DOS, или, возможно, книга по BASIC или Delphi, если вам повезет, — но не более того. .
Ну хоть книги можно было купить, да? Не совсем.
В большинстве городов сельской местности Уругвая технические книги обычно отсутствуют на полках книжных магазинов, и мой город не стал исключением. Добавьте к проблеме тот факт, что большинство технических книг, особенно те, которые рассказывают о передовых технологиях, написаны на английском языке, и вы можете просто забыть о местном книжном магазине. В конце концов, у меня остался только один вариант: Amazon.
Но и это было не так просто. Чтобы покупать книги на Amazon, вам нужен маленький кусочек пластика, который называется кредитной картой, но чтобы получить доступ к кредитной карте, вам нужна хорошая кредитная история, что для большинства людей не проблема. Но в моем случае я жил в совершенно другом мире: все, что мы покупали, было оплачено наличными. У нас не было денег или экономической уверенности, чтобы войти в кредитный план.
Для нас это работало следующим образом: если мы хотели купить что-то дороже, чем наш месячный доход, мы либо откладывали месяц за месяцем, пока у нас не было достаточно денег, чтобы купить то, что мы хотели, либо мы просили кого-то из членов семьи купить продукт для нас. и работал, чтобы вернуть их позже.
И даже если бы у нас была возможность покупать книги на Amazon, мы не учли тот факт, что одна только доставка из США в Уругвай почти стоила книги, не говоря уже о том, что на это уйдет месяц. прибыть.
Но в моем случае я жил в совершенно другом мире: все, что мы покупали, было оплачено наличными. У нас не было денег или экономической уверенности, чтобы войти в кредитный план
Иногда решение подобных проблем находится ближе к дому, чем мы думаем. В конце концов, нам пришлось обратиться за помощью к семье. У моей жены есть тетя, которая уже давно живет в США, поэтому мы решили, что стоит спросить и посмотреть, не купит ли она мне пару книг по программированию. Итак, во время одной из моих интернет-экскурсий я написал ей электронное письмо с объяснением моей ситуации, нажал «Отправить» и, по сути, скрестил пальцы и помолился каждому божеству, чтобы она помогла нам. Через пару дней в моем почтовом ящике появилось новое письмо. Это был ее ответ, прямо в точку: «Скажи мне, какие книги тебе нужны, и я закажу их на Amazon». Проведя небольшое исследование, я попросил Библию Flash MX и Библию PHP 5 и MySQL .
Эти две книги оказались невероятно полезными в последующие недели. Они оба были настолько тщательными, что я смог добиться стабильного прогресса без необходимости постоянно посещать интернет-кафе в поисках недостающей информации. Наконец-то я смог продвинуться вперед в понимании того, что мне нужно было знать для создания моего картографического приложения. И наконец, получив доступ к необходимой мне информации, пришло время сесть за компьютер и приступить к работе.