Как я бросил американскую программу CS, поехал домой в Египет и сразу получил работу…

1656621138 kak ya brosil amerikanskuyu programmu cs poehal domoj v egipet

Адхам Ель Банхави

056dv1z02zzTeClJtgBFQkUekmB6RlO-9QmJ

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

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

Когда я начал писать это, я летел в самолет, который возвращался в свою страну после окончания учебы по компьютерным наукам в США. Я не мог просрочить свою визу. Я буквально уходил в неизвестное, но с уверенностью и чувством гордости.

И что вы знаете – через несколько дней после возвращения домой я получил работу разработчика в новом горячем стартапе. Вот как я попал туда.

Работа и обучение в Штатах

Моя первая подработка

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

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

Но я всегда знал, что моя работа не будет постоянной. Поэтому я продолжал учиться самостоятельно в Интернете, играя с другими фреймворками, такими как React, изучая инструменты DevOps, например Docker, и работая над своими личными проектами в свободное время.

Мой опыт обучения в колледже

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

Я довольно часто задумывался: а где курсы программирования?

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

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

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

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

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

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

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

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

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

Мои личные проекты и внеклассные мероприятия

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

В конце концов мне нравилось делать то, что я умею лучше всего — мини-проекты. Я потратил бесчисленное количество часов на чтение документации — Python, Google API, ReactJS, JavaScript, MongoDb, Java, Node.js, AWS, и этот список можно продолжать.

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

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

Моя Новая реальность

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

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

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

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

Qn9MajXa92PKS5UAWBKMxdRMm7cpj0I3ij8Z
Все виды спагетти вызывают у меня голод

Когда я посмотрел на код (AngularJS+ASP.NET), меня встретил ужасный код спагеттис почти нет документации совсем. Я указал на проблему, запустил некоторую документацию и переработал часть кода, что привело к уменьшению кода на 30% и улучшенной читабельности.

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

Мой друг видел ценность для того, чтобы удержать меня, поэтому он предложил мне должность разработчика полного рабочего дня. И я согласился – он все-таки мой друг. Прошло почти два месяца и я многому научился во время работы, включая AngularJS, C# и ASP.NET (я бы работал с ReactJS).

Размышления и вехи

Теперь, когда я на этой новой работе, вы можете задаться вопросом: трудно ли было так быстро перейти к использованию новых фреймворков и сложной кодовой базы? Что ж, это никогда не будет легко, даже если я был опытным старшим разработчиком. Смотреть на спагетти-код на любом языке или фреймворке всегда запутано и изнурительно. Но мне понравилось совершенствовать его, и в процессе это укрепило мои знания об Angular и .NET Framework.

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

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

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

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

Пожелай мне удачи!

Следите за мной в твиттере @adham_benhawy

Добавить комментарий

Ваш адрес email не будет опубликован.