Mikhail Gordeev 16 июня 2023

💡11 заповедей Junior-разработчика

В этой статье дадим несколько дельных советов, которые помогут вам избежать распространенных ошибок на старте карьеры.
💡11 заповедей Junior-разработчика
Статья читателя «Библиотеки программиста»

Всем привет! Меня зовут Михаил, и я уже более 10 лет занимаюсь разработкой. За эти годы я прошел путь от начинающего разработчика до product owner. За это время ландшафт разработки изменился до неузнаваемости, а требования, предъявляемые к разработчикам, также значительно возросли. В этой статье я хотел бы дать несколько советов тем, кто только начинает свой путь в разработке. Я постараюсь суммировать свой опыт и рассказать, что бы я хотел видеть от разработчика в своей команде.

0. Изучайте английский язык!

💡11 заповедей Junior-разработчика

Ни разу не встречал разработчика, которому бы не пригодились знания английского. Все самые свежие идеи и новшества в мире разработки появляются в 95% случаев на английском языке. Вся коммуникация в международном сообществе и open-source проектах происходит на нем. Начните с чтения, а затем можно переключиться на аудио- и видеоконтент. Материалов для обучения великое множество, это отдельная тема. Я бы посоветовал больше практиковаться, и знания придут сами.

1. Учись всегда

💡11 заповедей Junior-разработчика

В век цифровых технологий и быстрого развития IT непрерывное обучение становится ключевым условием успешности разработчика. Если вы перестали обучаться, вы автоматически начинаете отставать от текущих трендов и инноваций в индустрии. Однако обучение не обязательно подразумевает формальные занятия, посещение лекций или чтение учебников. Существует множество разных форм и способов обучения, которые можно интегрировать в свой повседневный график и которые могут быть более эффективными и подходящими для вас. Онлайн-платформы, такие как Coursera и Udemy, предлагают множество курсов по различным аспектам программирования и разработки. YouTube также является бесценным ресурсом видеоуроков и демонстраций. Не забывайте и о возможности обучения «на практике», в процессе выполнения своих рабочих задач. Это может включать исследование новых инструментов и технологий, решение конкретных задач, участие в проектах и так далее. Помните, что обучение – это процесс, а не конечная цель. Стремитесь учиться всегда, и это поможет вам оставаться в тренде и продолжать развиваться как профессионалу.

Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека программиста»

2. Пишите понятный и чистый код

💡11 заповедей Junior-разработчика

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

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

Различные языки предлагают разную степень «синтаксического сахара», что помогает ускорить процесс написания кода. Задача начинающего разработчика – научиться использовать эти удобные конструкции, не переусложняя код.

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

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

3. Осваивайте контроль версий

💡11 заповедей Junior-разработчика

На сегодняшний день «контроль версий» фактически стал синонимом слова git, и это не так уж и плохо. Это облегчает процесс обучения, поскольку не требует изучения множества разных инструментов, хотя расширение кругозора всегда полезно.

Git может показаться сложным для новичка, но современные инструменты и IDE с интеграцией git значительно упрощают знакомство с ним. Основные вещи, которые нужно усвоить новичку, – это использование веток, частые коммиты и merge request.

На YouTube легко найти ролики типа Git Crash Course, где объясняются основные команды и их использование. Важно не только знать, как это работает, но и активно пользоваться этими знаниями.

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

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

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

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

Также может быть полезно разобраться с некоторыми продвинутыми функциями git, такими как rebase и cherry-pick. Их использование может быть сложным, но они помогают улучшить управление ветками и коммитами в сложных проектах.

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

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

4. Работай в команде

💡11 заповедей Junior-разработчика

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

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

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

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

5. Не бойся задавать вопросы

💡11 заповедей Junior-разработчика

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

Вопросы к себе – это своего рода самоконтроль и самоанализ. Понимаю ли я, что делаю? Зачем я делаю то, что я делаю? Есть ли у меня документация, и понимаю ли я её? Нужна ли здесь эта функция? Усложняю ли я что-то? Не портит ли мой код архитектуру? Ответы на эти вопросы помогают сориентироваться в своей работе и улучшить конечный результат.

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

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

Будь уверен, что «глупых» вопросов не бывает. Вопросы – это часть процесса обучения и они показывают твою заинтересованность и стремление к пониманию. Однако перед тем, как задать вопрос, постарайся сначала самостоятельно найти ответ – это поможет тебе лучше усвоить материал. Когда ты задаёшь вопрос, старайся быть как можно более конкретным. Это поможет тебе получить более точный и быстрый ответ. Вопросы коллегам и бизнесу, заданные правильно и вовремя, в конечном итоге улучшат конечный результат работы и сделают твоё взаимодействие с коллегами и бизнесом более эффективным.

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

6. Прокачай свои навыки решения проблем

💡11 заповедей Junior-разработчика

Основная работа программиста заключается в решении проблем. Всякий раз, когда ты пишешь код, ты решаешь какую-то проблему. Это может быть чем-то простым, например, «как сделать так, чтобы пользователь мог загрузить фото на наш сайт?», а может быть и чем-то более сложным, например, «как мы можем масштабировать нашу базу данных, чтобы справиться с миллионами запросов в минуту?».

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

Некоторые способы развития навыков решения проблем включают:

6.1. Постоянная практика

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

6.2. Изучение новых технологий и языков программирования

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

6.3. Критическое мышление

Развивайте свою способность анализировать проблемы и придумывать творческие, эффективные решения. Критическое мышление – это набор умений, которые позволяют нам разумно и ясно формулировать аргументы, интерпретировать, анализировать и решать проблемы. Можно изучать материалы и курсы по развитию критического мышления и принятия решений, доступные онлайн. Многие образовательные платформы, такие как Coursera или EdX, предлагают курсы по этой теме.

6.4. Обучение и менторство

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

6.5. Рефлексия и самоанализ

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

7. Используй ресурсы и сообщества

💡11 заповедей Junior-разработчика

Интернет богат на различные материалы, которые могут помочь вам в вашем профессиональном развитии. Да, большая часть информации уже была создана до нас, и задача заключается в том, чтобы найти и использовать её. Огромное количество статей, материалов и репозиториев других разработчиков доступно в сети, включая GitHub, Stack Overflow, и многие другие ресурсы. Они содержат примеры кода, решения типовых задач и ответы на вопросы, которые вы можете использовать для обучения и решения своих задач.

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

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

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

8. Будь готов к критике и учись на ошибках

💡11 заповедей Junior-разработчика

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

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

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

9. Изучайте и используйте AI-технологии

💡11 заповедей Junior-разработчика

Искусственный интеллект уже меняет ландшафт разработки программного обеспечения. Помощники, такие как Copilot и ChatGPT, вносят значительные изменения в подходы к разработке и ускоряют процесс кодирования. Однако нельзя полностью полагаться на эти инструменты: они могут генерировать код, который отличается от ваших ожиданий. Тем не менее это не является поводом для того, чтобы отказываться от использования AI-технологий, если это допускается в вашем проекте и компании. Стоит потратить время на изучение основ работы с машинным обучением и моделями GPT. Понимание основ этих технологий позволит вам лучше оценивать их ограничения и возможности использования. Кроме того, технологии машинного обучения все активнее внедряются в программное обеспечение и аналитику, что делает их знание ещё более ценным. Знание AI и машинного обучения может стать значительным преимуществом в современной IT-индустрии, поэтому не пренебрегайте возможностью их изучения.

10. Тестируй свои решения

💡11 заповедей Junior-разработчика

Тестирование является ключевым элементом процесса разработки. Некоторые подходы, такие как разработка через тестирование (Test-Driven Development, TDD), предлагают создавать тесты для функционала, который ещё только предстоит написать, и постепенно добавлять новую функциональность и соответствующие тесты до достижения желаемого результата. Хотя такой подход может показаться радикальным в коммерческой разработке, тестирование тем не менее является неотъемлемой частью процесса.

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

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

***

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

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

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

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования