В начале своей карьеры большинство разработчиков чувствуют себя неполноценными. Им не с кем сравнивать себя. Они не знают, чего от них ожидают на работе. А многие учебники или скринкасты кажутся созданными гениями.
Все это приводит к распространенному среди программистов синдрому самозванца.
К сожалению, легкого способа обойти это не существует. Даже опытным разработчикам знакомо это чувство неадекватности. Но один из моих бывших руководителей команды предложил, как старшие разработчики могут помочь младшим, чтобы облегчить боль:
Частью преодоления синдрома самозванца является понимание того, что все надевают штаны по одной штанине за раз. Наблюдение за тем, как опытные разработчики совершают ошибки, бегут в неправильном направлении или ищут в Google, может быть очень полезным для младшего разработчика. Волшебства не существует. Большинство разработчиков не гении. И со временем вы тоже сможете достичь их уровня.
Очевидно, что трудно получить такой опыт парного программирования, прежде чем вы найдете работу в хорошей и заботливой команде. Поэтому я подумал, что могу немного раскрыть себя здесь.
Я записал более 20 часов скринкастов того, как я создаю React-приложение в качестве подготовки к предстоящему React Job Simulator. Вы можете увидеть, какие инструменты я использую, включая Next.js, TypeScript, Storybook и GitHub Actions. Но самое главное, вы можете увидеть, что я постоянно совершаю ошибки и сталкиваюсь с проблемами (несмотря на десятилетний профессиональный опыт разработчика).
Так что позвольте мне разоблачить себя. Вот несколько выводов, которые могут облегчить ваш синдром самозванца.
Оглавление
- В реальности все происходит гораздо дольше, чем в «сценарных» видеороликах
- Опытные разработчики постоянно ищут в Google
- Все мы иногда сталкиваемся с простыми проблемами
- Выводы
В реальности все происходит гораздо дольше, чем в «заскриптованных» видео
Когда вы смотрите видео по React, у вас может сложиться впечатление, что разработчики работают очень быстро. Но чаще всего эти разработчики уже создавали приложение ранее. Они уже сталкивались с большинством проблем и знают, как их решить.
Это делает видео легким для просмотра, но может исказить ваши ожидания. Но позвольте мне сказать вам, что реальность часто сильно отличается.
Другой пример: у меня ушло 10 часов (начиная с этого видео) на создание простой складной боковой панели навигации. Я бы оценил это максимум в 2 часа. Но снова и снова я сбиваюсь с пути, потому что сталкиваюсь с проблемами в приложении и настройке тестирования (например, TypeScript, Storybook, Cypress & Jest).
- Мне требуется более 20 минут, чтобы отрисовать простую SVG-иконку в приложении Next.js и Storybook.
- Мне требуется 30 минут, чтобы настроить псевдонимы путей в TypeScript (и Storybook). Я сталкиваюсь с множеством проблем и решаю их не путем сложной отладки, а методом проб и ошибок.
По моему опыту, такой медленный прогресс — обычное дело, особенно когда вы создаете новый проект или начинаете работать над существующей кодовой базой. В какой-то момент, когда вы знаете, как все делается и где что находится, написание кода начинает идти все быстрее и быстрее. Конечно, до тех пор, пока вы не упретесь в очередную кирпичную стену.
Опытные разработчики постоянно ищут в Google
Вы можете подумать, что опытные разработчики знают все наизусть. Они могут одним махом создать компонент/контекст/портал/редуктор и по ходу добавлять типизации и тесты, не задумываясь.
Но нет, даже опытные разработчики не могут запомнить кучу всего. Вы не используете все на ежедневной основе. Поэтому вы забываете кое-что. И иногда это просто не запоминается, даже если вы повторяете это в Google снова и снова.
Вот несколько примеров из моих скринкастов:
- Здесь мне нужно посмотреть, как работает контекст React. Я не так часто его использую, поэтому просто забываю. Вместо гугления мне также нравится просто копировать & вставлять из другого файла в проекте.
- Здесь я застрял на простой проблеме конфигурации TypeScript. На самом деле решение было простым (просто отключите флаг
isolatedModules
в файлеtsconfig
). Но я не мог увидеть лес за деревьями. Вместо того чтобы просто посмотреть документацию (один из лучших результатов в Google), я наугад открывал учебники и вопросы на StackOverflow только для того, чтобы остановиться на хакерском обходном пути.
Все мы иногда сталкиваемся с простыми проблемами.
Вы можете подумать: «Конечно, опытные разработчики тоже борются. Но проблемы, с которыми они борются, гораздо сложнее!».
И да, это правда. Но даже с многолетним опытом у вас будет достаточное количество моментов, когда вы будете бить в ладоши. Вы можете работать над чем-то несколько дней, а потом обнаружить, что создали некачественную версию существующего пакета npm. Вы можете часами искать в Google решение проблемы неработающего CSS, но обнаружить, что забыли импортировать таблицу стилей.
Вот несколько примеров моих скринкастов:
- Здесь я удивлен, что элемент шире, чем в дизайне. Я решаюсь на странное обходное решение с помощью CSS
calc(width - padding)
только для того, чтобы позже найти этот комментарий:
- Мне интересно, какой подход лучше всего подходит для сохранения навигационной панели свернутой при переходе к другому маршруту. Я долго не могу понять, что мне нужно переключиться из локального состояния в глобальное с помощью контекста.
Выводы
Надеюсь, этих примеров было достаточно, чтобы убедить вас в том, что (большинство) разработчиков — всего лишь люди. Но, очевидно, есть еще много вещей, которым вы учитесь со временем. Вот краткий список некоторых наиболее важных вещей, которые я делаю по-другому сейчас по сравнению с собой в начале своей карьеры:
- Внимательно читайте сообщения об ошибках. Часто решение вашей проблемы находится внутри.
- Google — ваш друг, но используйте документы как отправную точку вместо того, чтобы сразу искать учебники.
- Если вы застряли, сделайте шаг в сторону, прогуляйтесь, вздремните или сделайте то, что вам нравится. Решение проблемы часто приходит, пока ваш мозг отдыхает.
- Пересмотрите свой собственный код после некоторого перерыва. Вы получите новый взгляд на свой код и сможете легче обнаружить проблемы.
- Отлаживайте проблемы систематически, а не изменяя случайный код повсюду.