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

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

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

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

Эта статья принесет вам пользу, если:

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

Какие у меня учетные данные?

У меня 8+ лет опыта программирования, мое резюме вошло в шорт-лист 2 технологических гигантов, прошло собеседование, я разработал и продал коммерческое программное обеспечение в качестве фрилансера, построил 15 побочных проектов во время разработки и имел руки- на опыте работы с широким спектром языков, технологий и областей компьютерных наук. Благодаря моим сильным навыкам публичных выступлений и письма, я обобщил свой опыт в виде практических рекомендаций, которые помогут вам расти как профессионал.

Давайте перейдем к делу!

Технические навыки - сердце вашей работы

Если вы не пишете код на работе ежедневно, вы можете пропустить это и перейти к разделу "Бизнес".

1. Написать читаемый и повторно используемый код

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

Вы можете сделать это, следуя руководству по стилю. Я предпочитаю использовать Руководство по стилю Google, если у компании его нет. Лучше всего соблюдать соглашение об именах в кодовой базе и стараться ему следовать. Если это слишком утомительно, просто следуйте согласованной схеме именования переменных, задокументируйте свои функции и классы и не забудьте отформатировать код. Чем более последовательным и читаемым является код, тем проще его поддерживать. Поддерживаемый код ускоряет разработку, поскольку его легче отлаживать, тестировать и рефакторировать.

2. Широко используйте контроль версий

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

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

3. Нарисуйте высокоуровневые архитектуры.

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

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

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

4. Повышение производительности

Я использовал Google Docs для отслеживания задач, а позже перешел на Trello, как посоветовал друг. Для разработки рекомендую использовать Visual Studio Code (IDE), так как расширения очень удобны в установке и использовании. Изучите сочетания клавиш, используйте расширения IDE и напишите сценарии для автоматизации сборки, тестирования и развертывания. Недавно я начал использовать внешний монитор для беспрепятственной отладки. Советы по повышению продуктивности дают вам возможность переключить внимание с черных задач на решение проблем.

5. Проверьте свой код

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

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

Бизнес - держать общую картину свежей

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

1. Понять организацию и клиента

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

2. Регистрируйте свою ежедневную работу.

Каждый день перед отъездом проводите 10 минут, записывая всю проделанную работу. Запишите задачи, которые вы выполнили, как вы их выполнили и чему научились в процессе.

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

3. Создавайте то, что предлагается покупателю.

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

4. Лифт для всего

Будь то ваши идеи, продукт или ваш набор навыков, овладевайте лифтом для всего. Вы должны уметь излагать свои мысли в четкой 1-минутной речи, чтобы убедить собеседника в том, что вы достойны обсуждения. Как инженер-программист, я должен достаточно убедить своего менеджера в том, что мой код является производственным, написав чистый код и объяснив, что я сделал. Как предприниматель, я должен убедить своих клиентов в том, что отдаю им деньги. Если вас берут на собеседование на новую должность, ответьте на поставленные вам вопросы точно, но впечатляюще.

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

Внутренняя игра - переключите внимание на себя

Этот раздел неподвластен времени, рекомендую всем его прочитать.

1. Успокойтесь, не зная и не принимая помощи

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

2. Примите борьбу

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

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

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

3. Побочные проекты никогда не должны прекращаться

Если проводить параллели с крикетом, сайд-проекты - это чистая практика. Даже забив более 20 000 ранов в международном крикете, Вират Кохли тренируется отбивать сетки. Побочные проекты - это когда вы изолируете навыки и оттачиваете их через целенаправленную практику. Совершенствуйте свои навыки разработки алгоритмов, изучайте новые технологии, экспериментируйте с фреймворками для тестирования, используйте инструменты автоматизации и продолжайте создавать программное обеспечение. Поддержите 2 долгосрочных проекта, которые могут превратиться в ваш стартап в будущем. Не давите на себя, наслаждайтесь процессом обучения и дайте волю своему творчеству!

4. Научитесь немного расслабляться и смеяться

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

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

5. Всегда учись

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

Чтобы оставаться актуальным, нужно всегда учиться!

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

Чтобы узнать, чем я занимаюсь в жизни, зайдите в Instagram @adi_pat

Присоединяйтесь к моей профессиональной сети в LinkedIn!