Пролог

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

Затем я стал все больше беспокоиться о своем будущем, например о том, что я буду делать после окончания учебы? Позже я прочитал несколько сообщений на китайском Quora, Zhihu, по некоторым темам, связанным с фронтенд-разработкой, например «Что такое HTML / CSS / JavaScript?», «Что такое Front-End разработка?», «Какие книги вы бы порекомендовали для начинающих? ». Я решил попробовать, потому что это не звучало так скучно, если бы вы могли использовать свои навыки программирования, чтобы создать что-нибудь интересное. И я выбрал книгу Head First HTML, CSS and XHTML (я бы по-прежнему рекомендовал ее всем новичкам). Это открыло мне дверь в новый мир.

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

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

Прежде чем я понял, что на этот раз серьезно занялся программированием, я начал читать несколько книг, например DOM Scripting: Web Design with JavaScript and the Document Object Model и Professional Javascript for Web Developers от Николаса Закаса , который снабдил меня некоторыми основами JavaScript и знаниями манипуляции с DOM. И еще я написал несколько сообщений в блоге. Сегодня они кажутся мне глупыми, но в то время я действительно гордился собой. К сожалению, мне пришлось начать подготовку к TOEFL, поэтому я остановил все, что с этим связано.

После того, как я сдал TOEFL, я вернулся в нормальное русло. Было так приятно вернуться к тому, что ты действительно любишь. Я начал писать какой-то игрушечный код и попытался реализовать какой-то эффект веб-сайта, похожий на плагин, например, простое перетаскивание (без сортировки) с помощью ванильного JavaScript. И я создал одну или две маленькие игры с холстом HTML5, что заставило меня почувствовать себя неплохо, потому что я увидел, что мой код буквально работает на веб-сайте, и на реальном веб-сайте.

Затем я начал изучать Backbone.js и некоторые базовые React.js в следующий раз. Сначала они не имели для меня особого смысла, потому что я не понимал, почему вы буквально пишете так много кода только для того, чтобы получить пример Hello World. А API было так сложно запомнить. Но, к счастью, я нашел на YouTube несколько суперполезных туториалов, так что я мог получить некоторый смысл, просматривая их снова и снова. Да, было так сложно выйти из зоны комфорта. Но как только вы привыкнете к новой парадигме, вы уже окажетесь в другом новом мире.

Получение первой стажировки в DaoCloud

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

Мне повезло. Без какого-либо предыдущего опыта у меня было, как почти десять компаний, которые дали мне отзывы, что они хотели бы узнать обо мне больше, и назначили собеседование. Сначала, честно говоря, я очень нервничал. Но очень скоро я полностью освоился с интервьюерами и даже оцепенел, потому что они как бы всегда задавали одни и те же вопросы, например: «Не могли бы вы объяснить мне закрытие на JavaScript», «Как вы думаете, вы могли бы улучшить производительность вашего кода» и «Как сделать элемент выровненным по горизонтали и вертикали по центру в CSS?». Оглядываясь назад, я думаю, что принятие решений, просто зависящих от разговора, довольно произвольно и безответственно. Если бы я был интервьюером, я бы всегда спрашивал людей о программировании, а не говорил на собеседовании.

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

В середине июля я приехал в Шанхай один. Моим первым впечатлением от этого большого города был запах холодного воздуха, исходящий от кондиционера в метро, ​​и бесчисленное количество людей, переходящих дорогу по тротуарам в У Цзяо Чанге. Я попал в группу DaoVoice, где мы (шесть человек или около того) создали платформу обмена мгновенными сообщениями для индивидуального обслуживания.

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

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

Я внезапно понял, что не нужно быть экспертом по Angular, прежде чем погрузиться в код. Вы просто находите то, что вам нужно, когда это действительно нужно. И за это время я действительно осознал всю мощь StackOverflow и Google и был удивлен тем, насколько они помогают мне в моем повседневном рабочем процессе. И я все больше знакомился со всем используемым нами технологическим стеком, включая Angular.js, Sass, Gulp и т. Д.

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

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

Get Shit Done - поразительно

В феврале 2017 года я начал думать о поиске другого стажера на оставшееся время до окончания учебы. Преимущество было в том, что у меня было почти 5 месяцев для этого стажера. Вскоре я связался с Strikingly, из-за чего мне отказали, когда я искал свою первую стажировку, потому что у меня было всего три месяца, а для них требуется как минимум 4. Собеседования прошли, как и ожидалось, и я получил предложение через 2 недели.

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

Как новые фронтенд-разработчики в Strikingly мы взяли программу обучения адаптации, в которой есть две задачи, и вы должны реализовать их с помощью технологического стека, который используют люди, который включает React, Redux, Flux, Morearty и т. Д. Тренировочный процесс меня снова задел. Похоже, я не мог справиться с чем-то с нуля с помощью технологического стека, с которым я не совсем знаком. Но это чувство вскоре исчезло, когда вы познакомились с кодовой базой. Иногда дело не в том, что вы недостаточно хороши, вам просто нужно учитывать сложность кодовой базы, технический долг, стек teck, соглашение о коде и т. Д. Обратитесь к своим коллегам, вежливо спросите о своих вопросах если вы не можете решить его после исследования. Я думаю, что большинство людей будут достаточно любезны, чтобы помочь вам. Скажите спасибо, когда закончите!

Люди в Strikingly потрясающие. У них разное происхождение, они из разных стран, говорят на разных языках, но их объединяет то, что все они талантливы и всегда готовы помочь. Я получил ТОННУ давления от руководителя моей группы, а также главного исполнительного директора компании. Меня попросили обновить прогресс каждой функции / ошибки, которую мне дали (в худшем случае у меня было почти десять задач одновременно). А еще он строгий, разборчивый и казался не очень дружелюбным, вроде всегда кричал и критиковал твой плохой запах кода: D

Но, переосмыслив это, я действительно многому у него научился. Я узнал, как найти ошибку и исправить ее гораздо быстрее, что с тех пор избавило меня от отладки. Я понял, что разработчик никогда не должен легко прибегать к хакерскому подходу к решению сложных проблем. Я научился управлять своим временем, чтобы все было под контролем. Я научился абстрагироваться и ставить свою обувь на разных уровнях, от пользователей, разработчиков и т. Д. Я научился даже программировать на разных уровнях мышления, от отдельных строк кода до уровня функций, уровня файла и базы кода. уровень, и в конечном итоге до уровня продукта, бренда. Я также научился у него немного чувства продукта, например, как хороший продукт отличается от обычного. Он признан одним из самых талантливых парней в Strikingly, но также и самым сложным. Наконец, я получил его слово признательности, сказав: «Хорошая работа, и спасибо за вашу огромную работу, проделанную в Strikingly». Это значило для меня целый мир.

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

Жизнь в Штатах до сих пор

В августе 2017 года я приехал в Штаты, чтобы получить степень магистра. Все новое и необычное, как сказал консультант на ориентации для выпускников, «фаза медового месяца».

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

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

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

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

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

Напишите мне в твиттере @c yan_binary и github @ cyan33