Этапы развития начинающего разработчика и типовые ошибки

Этапы развития начинающего разработчика и типовые ошибки

https://t.me/zhukovsd_it_mentor

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

#1. Основы синтаксиса

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

  • Теория - курс или книга по основам выбранного вами языка программирования.
  • Практика - простые задачи на синтаксис, например, для Java - Javarush.

#2. Умение выражать свои мысли в коде

Когда синтаксис освоен, можно учиться пользоваться им для изложения придуманной вами логики. Думаю, многим знакомо чувство, когда логика стоящей перед вами задачи интуитивно понятна, но записать её не получается.

Поэтому, основная цель на данном этапе - научиться мыслить формально, и эти мысли записывать в виде кода.

  • Как практиковаться - задачи, условие которых не подсказывает вам, какие элементы синтаксиса понадобятся для решения. Сайтов с такими задачами множество - https://codesignal.com/, https://www.hackerrank.com/, https://leetcode.com/
  • Когда этап можно считать пройденным - уверенно придумываете и записываете решение алгоритмических задач. Ориентир - решение первых 20-30 задач раздела Arcade-Intro на https://app.codesignal.com/.

#3. Процедурное программирование

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

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

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

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

  • Теория - книга "Совершенный код", главы 7, 10, 11.
  • Как развивать навык - писать процедурный код, задумываясь о его чистоте, читать код опытных разработчиков, отправлять свой код мне на ревью.
  • Когда этап можно считать пройденным - грамотно написан один или несколько проектов средней сложности на несколько сотен строк кода (например, первый проект курса), пройдено ревью.

#4. Объектно-ориентированное программирование

ООП - доминирующая (но не единственная) парадигма написания кода, и для работы с большим количеством актуальных платформ (Java Backend, Android, iOS, Frontend - React/Vue) необходимо ей владеть.

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

  • Что нужно знать - идеи ООП, паттерны проектирования
  • Теория - курс или книги по ООП, паттернам, для выбранного вами языка программирования. Чистый ООП код - книга "Совершенный код", глава 6. Книги Роберта Мартина ("Чистый код" и другие).
  • Как развивать навык - писать проекты в ООП стиле, отправлять код на ревью.
  • Когда этап можно считать пройденным - сложный вопрос, чисто писать на ООП могут в основном разработчики с рабочим опытом уровня миддл или выше. Рекомендую написать 1-2 проекта в ООП стиле (например, второй проект курса), и идти дальше.

#5. Изучение предметной области

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

Изучение предметной области стоит начать с её выбора. Для каждой из них есть свой набор инструментов и технологий, которым нужно владеть для трудоустройства. В курсе я фокусируюсь на Java Backend - схема навыков для этого направления. Схемы для всех современных направлений можно посмотреть на https://roadmap.sh/.

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

Мой подход - практическое освоение предметной области Java Backend разработки на проектах с третьего по седьмой.

Типовые ошибки

Слишком быстрый переход к следующему этапу

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

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

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

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

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

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

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

Report Page