Хабрахабр

Глубокое обучение программированию: что, зачем и как

Disclaimer: эта статья подготовлена Skillbox совместно с Егором Яковишеном, ведущим разработчиком Setka Editor и трекером ФРИИ.

К примеру, американский бездомный Лео Гранд, обладавший только начальным образованием, всего за три месяца смог сделать собственное мобильное приложение, получившее название Trees for Cars. В наше время научиться программировать на базовом уровне относительно несложно.

Ответов может быть масса, начиная от желания развиваться и заканчивая стремлением зарабатывать большие деньги. Зачем вообще обучаться программированию? Работа есть, деньги тоже вроде бы есть, удовлетворение жизнью (частичное или полное) в наличии. Но предположим, что мы научились кодить и достигли определенного уровня. На самом деле останавливаться не стоит. Казалось бы, можно остановиться и просто радоваться своим достижениям. Об этом и поговорим.
Почему?

Зачем вообще совершенствоваться?

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

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

Пара лет — и сегодняшние решения не подходят. Даже если взять относительно простые задачи — например, локальную автоматизацию процессов путем создания скриптов на VBScript для Microsoft Office, — то и в этом случае остановиться не получится: офисный пакет изменяется, добавляются и убираются определенные функции, меняется сам VBScript. Что уж и говорить о языках программирования вроде Ruby или JavaScript, находящихся на передовой линии развития технологий.

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

Кейсы? Их есть у меня

Один из ярких примеров того, что может случиться с человеком, который работает годами в одной и той же сфере, не развиваясь, — ситуация, сложившаяся с Flash-разработчиками и с теми, кто решил выбрать Flex — язык интерактивного программирования, опирающийся на Flash. Достаточно долгое время они были «на коне» — очень востребованными и получающими солидные деньги (во всяком случае, больше, чем многие другие ИТ-специалисты). Хорошая работа, уважение коллег — что еще человеку для счастья надо?

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

Кто-то почти сразу начал искать новые направления работы и изучать иные языки программирования. Понятно, что все это происходило не очень быстро, но flash’еры изменения чувствовали. Ну а кто-то продолжал заниматься тем, чем привык, и в конечном итоге остался вовсе не у дел, поскольку времени на переквалификацию уже не было.

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

Программист-полиглот или специалист узкого профиля?

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

Объем информации, которую нужно усвоить по любому из языков программирования, столь велик, что стать специалистом еще в чем-то очень сложно — может просто не хватить времени. Но проблема в том, что наше время — эпоха узкой специализации. Но для того, чтобы стать крутым профи в избранной сфере, требуется больше, гораздо больше времени. Для того, чтобы начать относительно хорошо писать на одном из языков, нужно года три (кто-то говорит о 10 000 часах).

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

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

Что именно выбрать?

image

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

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

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

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

Три кита современного программирования: JavaScript, Python, Java

Если уж мы заговорили о выборе, то стоит привести конкретные примеры. Так, языки Java Script и Python на данный момент — одни из наиболее перспективных. Первый — потому, что универсален. Второй — потому, что это один из самых простых (относительно) и в то же время трендовых языков для освоения: на нем пишутся проекты из сферы машинного обучения, нейросетей, ИИ. На Python написаны (целиком или частично) различные продукты Dropbox, Google и «Яндекса».

Java также остается универсальным языком, который используется, в частности, для написания приложений под Android.

Как стать гуру?

В принципе, не так уж это и сложно. Главное — понимание основ, гибкий ум, усидчивость и ПРАКТИКА. Да, именно прописными. Дело в том, что никакая теория, сколько ее ни изучай, не поможет стать профессионалом, если нет практического опыта. Это как в языках, на которых говорят люди: можешь запоминать сотни иностранных слов, читать правила грамматики, но если не говоришь и не пишешь, все это уходит в пассив, а с течением времени и вовсе забывается.

Поэтому есть две основные рекомендации для тех, кто желает совершенствоваться в выбранной сфере:

  • Читать чужой код.
  • Писать свой код.

Эти советы можно использовать в любом порядке — вреда не будет, только польза. Почему? Чем больше создаешь продуктов, пишешь кода, тем больше практики. Решаются определенные проблемы, складываются принципы работы, формируются навыки. При этом нужно разбирать чужой код. Для новичка это необходимо просто потому, что он мало что знает, и, читая написанное другими, junior сможет понять, что и как устроено. Для middle разбор чужого кода позволяет находить удачные решения проблемы, которая стоит при разработке определенного продукта. Ну а для senior это, во-первых, поиск ошибок в чужом коде и помощь с ними, а во-вторых, самосовершенствование. «Всегда найдется азиат, который делает что-то лучше тебя» — известный мем, но он справедлив, причем не только в отношении азиатов. Изучая чужой код, можно натолкнуться на элегантное решение какого-либо вопроса, для которого до этого приходилось использовать «костыли».

image

Один из них — livecoding.tv. Сейчас появились сервисы, которые можно назвать Twitch’ем для программистов. Зарегистрированные на ресурсе программеры пишут собственные программы с демонстрацией работы кода в режиме реального времени.

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

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

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть