Success

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

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

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

Пробелы в знаниях — это нормально

Высшее образование, буткемпы (bootcamp) и онлайн-курсы для программистов отлично справляются со своей задачей — обучением кодированию.

Тем не менее, правда в том, что на практике приходится делать намного больше, помимо написания кода. Вы должны понимать:

  • Какие технологии лучше всего подходят для тех или иных задач
  • Код, написанный другими людьми
  • Шаблоны (паттерны) проектирования и best practices
  • Как тестировать код
  • CI/CD, систему контроля версий и модели ветвления
  • Жизненный цикл разработки программного обеспечения и различные методологии
  • Как работать не только со своей командой, но и с другими командами, руководством и клиентами

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

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

Задавать вопросы — это хорошо, поэтому не стесняйтесь просить о помощи

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

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

“Что, если они решат, что я тупой? Или что я не умею писать код? И будут смеяться надо мной?!”

Но в реальной жизни такого никогда не произойдет. Вот что они на самом деле подумают:

“Хорошо, я быстренько я взгляну и посмотрю, смогу ли я чем-нибудь помочь. Да, я сталкивался с этой проблемой раньше, воспользуйтесь someMethod() из somePackage(), чтобы исправить проблему.”

Все не так уж и плохо, верно?

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

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

Code Review (просмотр кода) — ваш друг

Я никогда не забуду свой первый code review. Это была настоящая нервотрепка, потому что мой код проверял опытный senior-разработчик. Он оставил больше комментариев, чем я мог сосчитать! 

Но, оглядываясь назад, я понимаю, что это был очень ценный опыт.

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

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

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

Разбейте задачу на несколько маленьких задач

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

“С чего мне начать? Думаю, я начну с X, но что насчет Y? Но затем, если я сделаю Y, я получу A, B и C …что происходит с X?!”

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

«Как вы едите слона? По одному укусу за один раз.”

Другими словами, разбейте задачу на более мелкие задачи, чтобы она приобрела более доступный вид.

Но как же это сделать?

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

Как налить стакан воды?

  1. Откройте шкаф 
  2. Возьмите стакан 
  3. Налейте воду 

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

Будьте проще

Самая распространенная ошибка, которую допускают многие junior-разработчики (включая меня, когда я начинал) заключается в том, что они пытаются заново изобрести колесо.

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

Но это вызывает многочисленные проблемы:

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

Так как именно быть проще?

  1. Просто заставьте его работать. Не ломайте голову чересчур долго, просто делайте все, что говорит ваш внутренний голос, чтобы код работал как надо
  2. Рефакторинг. Теперь, когда код работает, пришло время для рефакторинга. Сделайте свой код легко читаемым, давая соответствующие имена переменным и используя правильное форматирование. Подробнее об этом в разделе “Учитесь писать чистый и красивый код” ниже
  3. Ускорьте его. После завершения рефакторинга, вы можете заметить просадки в производительности кода. Сейчас самое время его оптимизировать. Но будьте осторожны, не попадите в ловушку “сверх оптимизации”! Делайте это, только если действительно необходимо.

БОНУСНЫЙ СОВЕТ: Попробуйте написать несколько неудачных тестовых примеров кода, прежде чем писать настоящий. Это называется “Разработка через тестирование”. 

Учитесь писать чистый и красивый код

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

  • Следование принципам S.O.L.I.D.
  • Код должен быть легко тестируемым и поддерживаемым
  • Код должен быть легко читаемым 

Другими словами:

Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный человеку. — Мартин Фаулер

Здесь я не буду вдаваться в подробности, например, в книгу «Чистый код: Руководство по гибкому программному обеспечению» Роберта С. Мартина, которая даст более глубокое понимание чистого кода. Однако, если вы серьезно относитесь к написанию чистого кода и выходу из уровня junior-разработчика, то я настоятельно рекомендую эту книгу к ознакомлению.

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

“Для этого есть специальная библиотека”

Вы когда-нибудь рассказывали другу о своей проблеме, а он вам отвечал: «Да, для этого есть специальное приложение»?

То же самое и в разработке программного обеспечения.

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

Вы можете попробовать:

  • Поискать соответствующие вашим целям пакеты и библиотеки
  • Поискать решения схожей с вашей проблемы на таких сайтах как: StackOverflow и GitHub

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

  • Почему здесь использован именно этот шаблон проектирования?
  • Почему это написано именно на этом языке? (Например, на Node.js или Python)
  • Есть ли в этом коде недостатки? Будет ли он работать с вашей текущей базой кода?

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

“Я думал об использовании этой библиотеки X или этого пакета Y, что вы об этом думаете?»

Такой подход не только покажет, что вы активны и увлечены своей работой, но и поможет начать конструктивные дебаты/споры с коллегами — что зачастую бывает очень полезным. А возможно, вы найдете нечто удивительное, то, о чем никто кроме вас не знает!

Учитесь правильно читать код

Все мы видели фильмы, в которых хакеры пишут код настолько быстро, что страницы с кодом буквально летят вниз со скоростью света! Но в реальном мире разработчики тратят больше времени на чтение, чем на написание кода. 
 
При добавлении новых функции или исправлении дефектов, вам нужно будет понять текущую кодовую базу, с которой вы работаете. Как это сделать? Читать, читать, читать!
 
Чтение кода — это одна из полезных практик при обучение! Она позволит вам увидеть и понять, как другие разработчики реализовали ту или иную функцию. 
 
На что нужно обращать внимание:

  • Применяемые шаблоны проектирования
  • Именование методов, классов и переменных
  • Комментирование участков кода
  • Структурирование файлов проекта
  • Использование различных тестов и их структура

Хорошо, с этим мы разобрались! Но где мы найдем код для чтения?

  • Читайте legacy-код на работе
  • Проекты на GitHub
  • Читайте ответы и вопросы на StackOverflow
  • Специальные сайты с задачами по программированию, такие как codewars.com

Получайте удовольствие!

Наслаждайтесь написанием кода, решением проблем и постоянным процессом обучения. Вы находитесь в самом начале увлекательной карьеры, так что расслабьтесь и “наслаждайтесь поездкой”!

И еще несколько советов

  • Учите профессионализмы! У нас, разработчиков, есть свой собственный язык общения (например “создание ветки” не имеет ничего общего с деревьями). Поэтому убедитесь в том, что понимаете ключевые термины, которые могут вам пригодиться
  • Ближе познакомьтесь с вашей IDE. Изучите горячие клавиши, ярлыки и функции. Попробуйте дополнительно настроить ее, до тех пор, пока не освоитесь. В дальнейшем, это может значительно увеличить вашу производительность
  • Работа над ошибками — это один из эффективнейших методов обучения! Так что не бойтесь многочисленных сообщений о багах 
  • Возьмите с собой блокнот, внимательно слушайте своих коллег и записывайте все, что они вам советуют
  • В свободное время попробуйте начать работу над сайд-проектом. Это отличный способ изучения различных технологий, с которыми вы не сталкивались на работе. В дальнейшем, с помощью этих сайд-проектов, вы сможете дополнить свое резюме
  • Участвуйте в различных мероприятиях на работе — это отличный способ познакомиться со своими коллегами поближе

Спасибо, что прочли эту статью!

Перевод статьи Chris BlakelyAce your first year as a junior developer with this advice