Как стать автором
Обновить

Как изучение новых языков программирования помогло мне расти профессионально

Время на прочтение4 мин
Количество просмотров12K
Автор оригинала: Tomasz Cichociński

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

За годы работы я совершил переход от фронтенд-разработчика к full-stack и даже попробовал профессионально создавать игры! В это время я руководил и выполнял функции ментора разработчиков с разным уровнем опыта.

Ваш основной язык программирования


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

Для меня основным языком был и остаётся JavaScript. Это был не первый мой язык, но он был самым доступным для меня в старшей школе: я мог писать на нём и запускать код, по сути, на любом компьютере без специального компилятора или IDE.

Выход из зоны комфорта


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

Из-за некоторых преподавателей программирования у меня сложилось ощущение, что JavaScript — это «ненастоящий» язык программирования. Кроме того, это был JavaScript во фронтенде, то есть перемещение всяких div и кнопочек, а не реальные алгоритмы.

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

К счастью, функциональное программирование осталось со мной.

Так начался цикл восхищения новыми языками. За долгие годы я программировал в качестве хобби или профессионально на Elm, ReScript (ранее известном как ReasonML или BuckleScript), OCaml, Haskell, Scala.

Я по-прежнему практически ежедневно работаю с JavaScript, но изучение множества новых концепций наподобие иммутабельности, statelessness, монад, алгебраических типов данных и модели акторов упростило решение задач. Это даже помогло мне сделать отличный доклад на международной конференции!

А поскольку некоторые концепции популярны в сообществах разработчиков на других языках, это познакомило меня со множеством архитектур и паттернов программирования, используемых в различных системах, например, с предметно-ориентированным проектированием (DDD, Domain-Driven design) и с теорией категорий.

Возвращаясь к уровню джуна


Перенесёмся в март 2022 года, когда я уволился из jam.dev с должности руководителя разработки.

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

С первых дней в программировании меня всегда восхищали видеоигры и компьютерная графика. В старшей школе я экспериментировал с OpenGL, позже с трассировкой лучей, а на прошлое Рождество в качестве хобби-проекта приступил к реализации Physically Based Renderer на Vulkan и Rust.

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

Я поспрашивал своих друзей об учебных материалах и сразу же погрузился в мир C++ и Unreal Engine! За две недели я прошёл курс Тома Лумана по C++ движка Unreal Engine (потрясающий курс, крайне рекомендую его, если вы хотите повысить свой уровень знания Unreal Engine). Я много читал о C++ и среде разработки игр, создал несколько простых игр с SDL, и спустя два с половиной месяца после увольнения я начал свой путь программиста C++ движка Unreal Engine.

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

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

Пробуйте что-то новое!


Совершенно нормально углублять свои знания в одной технологии или в одном языке программирования. Вполне приемлемо иметь работу «9 на 5», позволяющую оплачивать все расходы.

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

Если вы пишете на JavaScript, попробуйте какой-нибудь функциональный язык типа Elixir или ReScript. Если вы уже знакомы с высокоуровневыми языками, где есть сборка мусора, попробуйте что-то низкоуровневое, наподобие Rust или даже C/C++. Экспериментируйте с разными моделями многопоточной обработки, например, с корутинами или с моделью акторов.

Вам необязательно менять работу, необязательно выпускать продукты на основе изучаемых технологий. Пробуйте создавать что-то новое. Позже вы сами поблагодарите себя.
Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 12: ↑12 и ↓0+12
Комментарии34

Публикации

Истории

Ближайшие события