В рамках моего учебного курса по программированию в 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. Я никогда не мог себе представить, чтобы научиться так много за такой короткий период времени или получить от этого столько удовольствия. Спасибо вам, ребята.
Подпишись на меня в Твиттере".