Рубріки: МнениеОпыт

Знание новых фреймворков не поможет: почему разработчик без базы рискует навсегда остаться очередным «кодером»

Оленка Пилипчак

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

Передаем ему слово.

Редакция Highload публикует перевод материала.

Переведено бюро переводов в Киеве «Профпереклад».

Перевод от

Жестокая реальность: мне не хватало базовых знаний в области программного обеспечения.

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

Или шок, когда возвращаешься к библиотекам, которыми пользуешься каждый день (React Hooks, Redux, TypeScript) — и едва понимаешь, как они вообще работают.

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

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

Поэтому, когда я еще писал код, то спросил себя: «А есть ли более удачный способ освоить разработку софта?»

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

Проанализировав свою основную работу full-stack-разработчика и все, что я делал для обучения, я начал замечать кое-какие закономерности. И чтобы дойти до уровня сеньора и ускорить процесс обучения, нужно было исправить следующее:

  • я по 14 часов в неделю «учился» на Udemy или YouTube (и почти ничего не получал в ответ);
  • 80% моего времени уходило на просмотр однотипного кода;
  • я выбрасывал большую часть написанного, поскольку через пару дней все быстро менялось.

Мне нужна была система, которая помогла бы мне улучшить навыки разработчика JavaScript и инженера ПО.

Чтобы выстроить такую систему, я задал себе следующие вопросы:

  • Что не меняется в разработке софта?
  • Как превратить отсутствие диплома по компьютерным наукам из минуса в плюс?

Мне нужна была система, которая:

  • помогла бы мне понять конкретные технические пробелы в моих знаниях (чтобы я мог сосредоточиться на по-настоящему важных вещах);
  • выстроила бы мощную основу (это сохранило бы актуальность моих навыков программирования на многие годы вперед);
  • помогла бы мне увидеть полную картину и быстрее перейти от статуса «кодера» к «инженеру ПО».

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

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

1. Вы уже в авангарде
2. Найдите пробелы
3. Делайте больше с меньшим количеством знаний
4. Освойте базу
5. Умейте видеть за пределами «кода»
6. Как выжать из всего этого максимальный результат

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

1Вы уже в авангарде

Хорошие новости: если вы уже давно пишете код, у вас есть значительное преимущество.

По данным 20-го выпуска отчета State of the Developer Nation, в конце 2021 года в мире было 26,8 миллионов активных разработчиков ПО. Это ± 0,34% населения планеты.

Неважно, как вы до этого дошли.

Возможно, вы самоучка и часами просиживали над подработками и курсами. Или же прошли обучение в учебном лагере для программистов (Bootcamp) и месяцами оттачивали навыки.

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

А теперь посчитаем. Чтобы написать код для простенького приложения в React, придется потратить несколько сотен часов. Ну и на работе вы наверняка видите сотни и сотни строчек кода.

Ключевое слово здесь — «интеграция».

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

Большинство разработчиков сравнивают себя с сеньорами в команде. А дальше-то что? Включается синдром самозванца. Люди чувствуют все меньше уверенности в своих технических навыках и перестают развиваться.

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

Как преподаватель, ментор и инструктор в сфере разработки ПО, я стараюсь показать перспективу и помочь вам по максимуму воспользоваться тем, что у вас уже есть.

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

2Найдите пробелы

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

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

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

Проблему решили, когда Джон Гаррисон разработал надежный хронометр. Джон Гаррисон — плотник-самоучка. На это изобретение у него ушло около 40 лет.

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

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

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

3 Делайте больше с меньшим количеством знаний

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

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

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

Когда разработчик пытается улучшить свои навыки, он начинает сразу 7 разных онлайн-курсов и берет 3 разных проекта в качестве подработки. Если и вы собрались сделать то же самое — что ж, удачи! Вы никогда не закончите.

А тем временем на рынке софта важно лишь одно — способность выполнять работу. Выдавать на-гора чистый код, создавать высококачественный софт. Качество означает жертвы. Надо перестать спрашивать «сколько еще?» и спросить «насколько глубоко?».

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

Что же у нас считается важным среди технических навыков? Сейчас узнаем.

4Освойте базу

Давайте-ка ненадолго вернемся в прошлое. Помните, как вы строили песчаные замки на пляже в детстве? А через пару часов возвращались и видели, что замок смыло водой. Вероятно, вы помните и то, что главной проблемой был фундамент, основа. Песок не очень-то держит форму, особенно если добавить воды.

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

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

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

Понимание протоколов и сопутствующих процессов позволят вам остаться на вершине при минимальных затраченных усилиях. Ваша сила — в базовых знаниях, а не в нюансах реализации, которые постоянно меняются.

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

Большинство разработчиков маниакально изучают последний фреймворк JavaScript, плагин VS Code или GitHub Co-pilot… А тем временем некоторые умные люди обращают взгляды в другую сторону. И если вы хотите преуспеть в этой сфере, сделайте то же самое.

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

И это приводит нас к следующему пункту.

5Умейте видеть за пределами кода

Исследовательница Линдси Ричленд изучает когнитивные способности и умение обучаться на примере изучения математики школьниками со всего мира.

В чем разница между школьниками, успешно изучающими математику, и остальными? Может, все дело в учебниках? Или в преподавателе? Вы удивитесь.

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

А вот у тех, кто получил высшие оценки, было кое-что общее. Они рассматривали математику как систему взаимосвязей. Они видели полную картину и умели выстраивать правильные связи при оценке. Звучит знакомо?

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

Такой тип обучения («обезьяна видит, обезьяна делает») никогда никого не поднимет до уровня сеньора. Это полная противоположность того, что должен уметь сеньор. При изучении программирования как набора инструкций очень легко не заметить всю картину целиком.

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

Что такое уметь смотреть за пределы кода? В разработке ПО — не кодом единым, как говорится. Это означает способность видеть полную картину и умение выполнять все необходимые шаги в своем коде, чтобы приступить к реализации.

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

Как выжать из всего этого максимальный результат

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

  • Скорость: «У сеньоров многолетний опыт. Даже если я начну реализовывать эти шаги, вряд ли я быстрее доберусь до их уровня». Если вы 12 лет просто просиживали штаны, вы вряд ли станете старшим разработчиком. Да, опыт имеет значение, но вы тоже можете быть эффективны по-своему, чтобы наработать этот опыт. Сделайте хотя бы половину того, что я посоветовал выше, и придите ко мне через несколько месяцев.
  • Нехватка времени: «Целый день пишу код на работе, на учебу у меня не остается сил». Когда вы начнете работать с этой системой, вам понадобится всего лишь 5 часов в неделю (и большую часть этого времени вы потратите на свою штатную работу).
  • Откусили больше, чем можем проглотить: «Да, я очень хочу выйти за свои рамки и подняться на новый уровень, но у меня столько всего навалилось в личной жизни, так что я сделаю это позже». Открыть вам страшную тайну? У нас всех такая ситуация. Всегда есть отвлекающие факторы, которые мешают начать действовать. Когда же наступит то самое время, чтобы вы наконец-то занялись самым важным?

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

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

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

Хорошие новости: можно начать прямо сейчас. Я составил для вас список ресурсов на первое время. Следуйте инструкциям ниже, чтобы получить к ним доступ:

  1. Определите свои технические пробелы с помощью нашей бесплатной методики технической оценки.
  2. Просмотрите обучающий тренинг, как скорее прокачаться до мидла/сеньора и улучшить свои технические навыки с помощью системы «5 шагов».
  3. Это первая статья за 2022 год (и будет еще). Подпишитесь на мой YouTube-канал, чтобы получить все самые дельные советы и подсказки.

Автор: Dragos Nedelcu

Останні статті

Что такое прокси-сервер: пояснение простыми словами, зачем нужны прокси

Прокси (proxy), или прокси-сервер — это программа-посредник, которая обеспечивает соединение между пользователем и интернет-ресурсом. Принцип…

21.11.2024

Что такое PWA приложение? Зачем необходимо прогрессивное веб-приложение

Согласитесь, было бы неплохо соединить в одно сайт и приложение для смартфона. Если вы еще…

19.11.2024

Как создать игру на телефоне: программирование с помощью конструктора

Повсеместное распространение смартфонов привело к огромному спросу на мобильные игры и приложения. Миллиарды пользователей гаджетов…

17.11.2024

Google Bard: эффективный аналог ChatGPT

В перечне популярных чат-ботов с искусственным интеллектом Google Bard (Gemini) еще не пользуется такой популярностью…

14.11.2024

Скрипт и программирование: что это такое простыми словами

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

12.11.2024

Дедлайн в разработке: что это такое простыми словами

Дедлайн (от англ. deadline — «крайний срок») — это конечная дата стачи проекта или задачи…

11.11.2024