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

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

Вот в чем секрет. Каждый из них был таким же, как вы, когда присоединился.

Нет, они не знали сочетаний клавиш и не использовали TDD, как будто завтра не наступит.

Я тоже.

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

Уверенность

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

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

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

Отличный способ обрести уверенность в себе и вселить в нее уверенность - это начать с небольших задач и делать их очень хорошо.

Стремитесь к маленьким победам. И много таких маленьких побед складываются.

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

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

Знание - сила

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

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

Узнайте, что лучше всего подходит для вас.

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

Какой бы ни была среда, не просто изучайте «рецепт», изучите основы. Это основы, которые помогут, когда «рецепт» не работает.

Часто задаваемый вопрос: «Арой, я не могу использовать SSH! Что мне делать? » Но почему бы и нет? Это проблема сети? Разрешает ли DNS? Порт заблокирован? Есть ли что-нибудь даже для прослушивания на этом порту? Или сервер не работает? Или это проблема с разрешениями? Если вы знакомы с основами TCP / IP и SSH, вы будете точно знать, в чем проблема.

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

Чистый код

Каждый может программировать. Но почему так сложно писать чистый код? Зачем нужны длинные 100-строчные методы? Почему бы не разбить код на функции? Почему отсутствуют правильные объектно-ориентированные абстракции? Почему класс раскрывает все свои внутренние компоненты и нарушает инкапсуляцию?

Потому что нужно время и усилия, чтобы понять и написать хороший чистый код. Обязательно прочтите эту книгу Роберта Мартина, https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882

С ним тесно связано искусство Рефакторинга. Научитесь распознавать запахи кода. И затем реорганизуйте их, чтобы очистить код.

Я буквально проглотил эти книги, когда прочитал их в первый раз :-)

Станьте действительно хорошими в этом деле в этот момент

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

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

Я люблю языки программирования. Так что в моем первом проекте я действительно сосредоточился на изучении C # и .NET.

Сделать не круто круто

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

  • Мне было поручено настроить среду, которая была «скучной» другим разработчикам. Я сделал его намного более увлекательным, автоматизировав его и добавив тесты Rspec, чтобы убедиться, что вновь подготовленная среда настроена правильно. Это сократило время, необходимое для настройки и проверки среды, до нескольких минут с 3–4 часов.

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

  • Мне нравился Python, но мой первый проект был на .NET. Поэтому я решил объединить их, создав динамическую интерактивную консоль для отладки развернутых приложений ASP.NET через IronPython (python на .NET).

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

Сопряжение

Спаривание - отличный способ ускорить обучение. Создание пары - самое большое преимущество работы в таком месте, как GO-JEK. Трудно представить себе объем обучения за одну парную сессию.

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

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

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

Обратная связь

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

- Билл Гейтс

В GO-JEK у нас сильная культура обратной связи, и нам действительно повезло оказаться в среде, где обратная связь считается очень естественной. Также помогает то, что наши инженерные принципы изолируют нас от критики в ретроспективе. Как заявляет технический директор нашей группы, «каждое решение является правильным в то время, когда оно принято».

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

Но начни. Спросите об этом. Не ждите.

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

Шаг за шагом

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

Это напоминает мне цитату из этой книги о Калпана Чавла, где она описывает совет, который она получила по альпинизму:

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

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

Мы растем в невероятных масштабах. Присоединяйтесь к нам. Мы набираем самых талантливых разработчиков. Посетите наш gojek.jobs, чтобы узнать больше.