В рамках моего учебного курса по программированию в Coder Academy меня поместили в качестве стажера по разработке программного обеспечения в Valiant Finance, победителя австралийской премии Fintech Start Up of the Year (2017). За четыре недели, что я здесь, я сделал больше интеллектуальных открытий, чем могу сосчитать: все благодаря невероятному наставничеству и терпению команды, с которой я работал.

Вот 10 основных вещей, которые я усвоил во время стажировки, разделенных на технические и нетехнические уроки.

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

ТЕХНИЧЕСКИЕ

Будьте внимательны

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

На третьей неделе стажировки я нажал Ctrl + F, чтобы найти искомое слово в своем файле. Тогда я, должно быть, случайно нажал пробел, полностью удалив слово.

К своему огорчению, я не заметил, что сделал это. Это было что-то, что не привело бы к явной ошибке - иначе наши тесты бы ее обнаружили. Скорее, это осталось бы незамеченным и «тихо провалилось»… если бы не зоркий взгляд нашего соучредителя Ричи.

Чтобы избежать ошибки, зайдите на GitHub Desktop. Он отображает все изменения, которые вы внесли в файл, и позволяет вам просмотреть их построчно, в последний раз перед фиксацией. Эту часть легко пропустить. Но если вы потратите время на то, чтобы просмотреть свои изменения в последний раз, перед фиксацией / нажатием, вы сможете избавиться от серьезной боли в сердце - и смущения - на более позднем этапе.

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

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

Делайте заметки (и усердно учитесь)

Забудьте о Фонтане знаний.

Почти каждый день, пока я работаю в Valiant Finance, мне казалось, что я пью из пожарного шланга. Количество чистых знаний и мудрости, которые изливаются из уст нашего руководителя отдела разработки (Крис Хофер) и нашего соучредителя (Ричи Коттон), заставят кого-нибудь поплавать в голове. К моему большому облегчению, эти два парня очень хорошо структурированы и терпеливы в своем обучении, поэтому все встало на свои места.

Однако они щелкают быстрее, если вы делаете заметки.

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

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

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

Не изобретайте велосипед

Одна из вещей, которые я обнаружил, заключалась в том, что Ричи создал невероятную систему CSS со своими собственными полностью настраиваемыми таблицами стилей (с использованием метода БЭМ) и руководством по стилю, которое заставит сердце любого любителя документации воспеть.

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

Избегайте многословия

Одним из ключевых принципов Ruby on Rails является DRY (не повторяйся). Это то, что учат младшим разработчикам Rails с первого дня… но ох, какая борьба реальна.

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

Так изначально получился наш код:

- if @invite_count == 1
 %p
 You have invited 1 friend to be part of Valiant Finance.
 — if @invite_count > 1
 %p
 You have invited
 %strong #{@invite_count} friends
 to be part of Valiant Finance!
- if (@invite_count % 3) == 0 || (@invite_count % 3) == 1
 %p
 Invite another
 %strong #{3 — (@invite_count % 3)} friends
 to receive $50!
 — if (@invite_count % 3) == 2
 %p
 Invite another
 %strong friend
 to receive $50!

Когда я показал Ричи, он посоветовал нам изучить множественное число.

Разум.
Взорвано.

Вот так получился наш код потом:

%p You have invited #{@invite_count} #{“friend”.pluralize(@invite_count)} to be part of Valiant Finance.
 %p
 Invite another
 %strong #{3 — (@invite_count % 3)} #{“friend”.pluralize(3 — (@invite_count % 3))}
 to receive $50!
 %p

Помните о тонкостях вашего языка программирования

Некоторые младшие веб-разработчики используют определенные термины как синонимы, не подозревая о том, что они бывают - иногда минутными, иногда не такими минутными! - различия между ними. Я виноват в том, что часто гуглил различия между .present?, .exists? и .any?; и .empty?, .nil? и .blank?. Сделано еще более вызывающим раздражение, потому что .exists? фактически устарел. Ой.

Иногда тонкости почти незаметны - в первую неделю стажировки я набирала Product.all.map(&:name). Но позже меня учили, что вместо этого я мог бы просто использовать Product.pluck(:name).. Есть разница между ними с точки зрения эффективности - как в отношении того, что я действительно набираю текст, так и в с точки зрения скорости поиска. Подробнее читайте в этой статье.

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

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

НЕТЕХНИЧЕСКИЙ

Присоединяйтесь к компании

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

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

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

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

Задавайте вопросы, но, что еще важнее, слушайте

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

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

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

Знайте, с кем поговорить

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

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

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

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

Не бойтесь обращаться за помощью к своим руководителям в таких случаях - они, как правило, лучше оснащены и более опытны, чтобы сообщить другим командам, что то, что они просят, на выполнение u̶t̶t̶e̶r̶l̶y̶ ̶r̶i̶d̶i̶c̶u̶l̶o̶u̶s̶ займет больше времени, чем ожидалось, и потому что это u̶t̶t̶e̶r̶l̶y̶ ̶r̶i̶d̶i̶c̶u̶l̶o̶u̶s̶ не критично для бизнеса, он будет добавлен в u̶t̶t̶e̶r̶l̶y̶ ̶r̶i̶d̶i̶c̶u̶l̶o̶u̶s̶ ̶l̶i̶s̶t̶ список действий разработчика.

Оставайтесь скромными

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

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

На этой ноте: когда вы напортачили, знайте, что пора съесть скромный пирог.

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

Удачи

В Valiant Finance мы празднуем победы. У нас есть целый канал в Slack, посвященный поддержке друг друга как в профессиональных, так и в личных делах.

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

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

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

Если вы недовольны как стажер, скорее всего, вы будете недовольны как штатный сотрудник.

И этого никто не хочет.

Благодарим соучредителя Ричи Коттона и руководителя отдела разработки Криса Хофера за их невероятное терпение, наставничество и знания на протяжении всей моей стажировки в Valiant Finance. Я никогда не мог себе представить, чтобы научиться так много за такой короткий период времени или получить от этого столько удовольствия. Спасибо вам, ребята.

Подпишись на меня в Твиттере".