Я выбрал язык программирования с помощью икигаи, коучей и рефлексии — и это сработало
Я в IT уже 15 лет: 10 лет разрабатывал DevOps в 1C и 3 года руководил отделом разработчиков в Сбере и не писал код. Однажды я понял, что хочу кодить, а не руководить — и передо мной встал вопрос: какой выбрать язык?
Может быть, взять самый популярный? Или тот, по которому больше всего вакансий? А может, тот, где самые высокие зарплаты?…
Под катом я расскажу, почему сама постановка вопроса о выборе языка программирования порочна и какой метод я использовал, чтобы найти идеальный ЯП. Это обошлось мне в 26 000 рублей, но с Хабром поделюсь бесплатно.
Просто выбирать язык бесполезно — нужно искать направление
Если язык популярен — значит по нему много информации и общительное коммьюнити. Если по языку много вакансий, то, скорее всего, много соискателей. И не факт, что по популярным языкам программирования проще найти работу. Кроме того, поработав в какой-то сфере, можно полностью в ней разочароваться.
Потому я всегда отвечаю, что сначала нужно выбрать направление в IT. Когда выбрано направление — язык выбрать не проблема. А чаще даже и выбирать ничего не нужно. Во многих направлениях либо только один язык используется, либо есть один самый востребованный.
Когда я решил завязать с руководством, мне были интересны несколько направлений в IT. И я долго не мог выбрать. Пробовал написать универсальное резюме, которое бы подходило под всё. Но меня не звали на собеседования.
Тогда я обратился к карьерному консультанту, и она посоветовала определиться, выбрать одно направление — и по нему уже написать резюме. Эта консультация мне обошлась в 6000 рублей, так что сэкономлю вам эту сумму. Карьерный консультант позже помог мне составить резюме, но об этом расскажу в следующий раз.
И тогда я начал искать способы, как выбрать направление. Сначала сходил на расстановки по Хеллингеру, но на них лишь определилось, что у меня появится девушка. С выбором направления лично мне расстановки не помогли, хотя, может, кому-то помогут. И тогда я пошёл к психологу.
Метод психолога сократил 9 направлений до 3
Консультация у психолога стоила мне 5000 и очень помогла в выборе направления. Итак, у меня было 9 направлений в IT, которые мне были интересны, и я не мог из них выбрать. Психолог попросила меня нарисовать в центре листа кружок, написать в нём «Я» и вокруг этого кружка написать направления, которые мне интересны. У меня получилось что-то вроде этого:
Дальше надо выбрать какое-то одно. Например, Startup. Закрыть глаза (или не закрывать, если так удобнее). Представить, что я уже давно работаю по этому направлению и достиг в нём всего, что хотел. Подумать об этом минимум минуту-две и обратить внимания на ощущения в теле, запоминая их. Например, напряглась спина, потяжелели веки, бурлит в животе, ноги не находят себе места и т. д. Ещё минуты три посидеть, запоминая все ощущения. Потом открыть глаза и рядом с направлением выписать все ощущения в теле, которые были эти 5 минут.
Когда все ощущения выписаны, минимум на пару минут отвлечься, встряхнуться, чтобы отвлечься от предыдущего направления и «обнулить свои настройки». Затем снова сесть с закрытыми глазами на 5 минут, выбрав следующее направление, например Frontend. Выписать по нему свои ощущения. Потом снова минимум 2 минуты перерыв. И так продолжать, пока не выпишешь свои ощущения по каждому направлению. Получится что-то вроде:
По всем направлениям выписаны ощущения в теле. Теперь можно начинать интерпретировать эти ощущения. Пытаясь понять, как какое-либо ощущение скажется на работе по этому направлению.
Например, «напряглась спина» — видимо, будет очень много тяжёлой работы. «Потяжелели веки» — будет так много работы, что не буду высыпаться. «Бурлит в животе» — видимо, буду на нервах всё время. «Ноги не находят себе места» — видимо, придётся очень много бегать и что-то разруливать. Можно эти комментарии написать рядом с комментариями по ощущениям. У вас могут быть свои ассоциации, может, даже противоположные. Например, «напряглась спина» — чувствую в себе силу справиться с любой задачей, а «ноги не находят себе места» — буду прыгать от радости на такой работе. В общем, всё индивидуально. В итоге может получиться что-то вроде:
Итак, теперь выписано, как будет работаться во всех направлениях, и уже не сложно выбрать. В моём случае мне подходят игрофикация, Mobile и ИИ (искусственный интеллект). Остальное явно не для меня. Более того, я уже примерно понимаю, что меня ждёт на такой работе. Получилось так — после вычёркивания лишнего:
Таким необычным способом я сократил количество направлений с 9 до 3. Но нужно выбрать только одно направление. И тогда я пошёл к своему знакомому бизнес-коучу. Ведь мне нужно выбрать, как я дальше буду зарабатывать деньги, а бизнес-коуч как раз знает, как зарабатывать деньги. И да, я пошёл к бизнес-коучу, у которого реальный бизнес и который на своих бизнесах получает более миллиона в месяц, а бизнес-коучинг — это его хобби. Всё-таки есть разница между реальными бизнес-коучами и инфоцыганами.
4 вопроса, которые помогли мне выбрать одно направление
Итак, мне осталось выбрать одно направление. Обратился к бизнес-коучу, заплатив 15К рублей за эту консультацию. Мы с ним много общались, я отвечал на вопросы бизнес-коуча, он предлагал мне варианты, как на каждом направлении можно заработать. В итоге после общения с ним совместно решили, что мне надо идти в мобильную разработку — там будет интересная для меня работа и буду получать хорошие деньги.
Это было 3 года назад, и я не понимал, как бизнес-коуч помог сделать выбор. Но год назад я узнал про Икигай. Если ни разу не слышали его, то загуглите и получите картинки вроде этой:
И давайте на примере тех трёх направлений, которые я выбрал на прошлом шаге, пройдёмся по Икигай. Для простоты сделаю это в виде таблицы:
Игрофикация | Mobile | ИИ | |
Что вы любите | Да, мне нравится игрофикация | Да, я люблю делать мобильные приложения | Частично, интересно настраивать модели, но есть и не очень интересные мне методы |
Что миру нужно | Частично, спрос на игрофикацию сейчас не высок | Да, сейчас у каждого уважающего себя сервиса должно быть мобильное | Частично, сейчас только крупные корпорации и некоторые средние готовы платить за разработку ИИ |
Чем вы можете зарабатывать | Частично, не все понимают, что качественная игрофикация дорого стоит, и часто путают её с дешёвой PBL (Points, Badges, Leaderboards) | Да, когда я на hh смотрел потребность в мобильных разработчиках, то там было по 5000 вакансий по iOS и по Android —, а это высокий спрос | Да, заказчики понимают, что разработка ИИ стоит дорого и готовы за это платить |
Что вы умеете | Да, я 1,5 года занимался игрофикацией, в том числе и на коммерческих проектах | Да, я около полугода изучал мобильную разработку и готов продолжать изучение | Да, я около полугода проходил разные курсы по ИИ |
Главное, эту табличку заполнять максимально честно и объективно. И, посмотрев на таблицу и схему Икигай, можно прийти для себя к некоторым выводам.
Например, для меня «Игрофикация» — это отличное увлечение, Mobile — это мой икигай, а «ИИ» — вполне может быть моей профессией. Так я остановил свой выбор на мобильной разработке и уже больше двух лет ею занимаюсь. Это принесло мне хорошие деньги, и сама работа мне очень нравится.
Итак, с направлением в IT мы определились, и теперь самое время перейти к выбору языка программирования.
Когда направление выбрано, язык выбрать не сложно
Об этом много материалов, а если кратко, то ниже сферы, с которыми я связан. А в комментариях напишут почему я неправ или дополнят. Ведь известно, что комментарии на Хабре интереснее, чем сама статья).
Во фронтенде сейчас единственный язык программирования — JavaScript, хотя последнее время активно развивается его надстройка TypeScript. Так что можно смело начать изучать JavaScript, а потом доучиться до знаний TypeScript, если это потребуется.
В мобильной разработке под iOS сейчас только Swift, хотя последнее время активно продвигается SwiftUI для интерфейсов. Так что начинающим iOS-разработчикам предстоит выбирать между стандартным Swift на UIKit (большинство вакансий пока на нём) или модным SwiftUI (который будет популярен через пару лет). Знатоки iOS-разработки могут спросить —, а как же Objective C? Но этот язык не поддерживается даже Apple, так что можно его не изучать (если нет необходимости поддерживать какие-нибудь устаревшие legacy).
В мобильной разработке под Android сейчас только Kotlin, может, кроме старых проектов, которые написаны на Java. Но последних сейчас очень мало. Если года 2 назад я бы посоветовал сначала изучить Java, а потом за пару недель изучить отличия Kotlin от Java, то сейчас я советую сразу изучать Kotlin.
Если же в мобильной разработке хотите разрабатывать сразу и под Android, и под iOS — это называется кроссплатформой. Есть два основных языка — это язык Dart, который используется во фреймворке Flutter. Это самый перспективный фреймворк сейчас, и он с каждым годом набирает обороты. Либо на некоторых проектах требуется знание языка JavaScript — обычно на фреймворке React Native.
Бэкенд — это, наверное, одна из немногих сфер, где сейчас популярно несколько языков. Тут придётся определиться более точно со сферой.
Большинство сайтов во всём мире написаны на php, так что если хочется писать бэкенд для сайтов за границей, то php — это лучший выбор.
Если любите работать с Windows и инфраструктурой от Microsoft — то ваш выбор C#.
Если вы хотите быстро делать бизнес-фичи в стартапе — тут ваш выбор язык Ruby.
Если хотите работать в банках и других корпорациях — начните изучать Java.
Если хотите универсальный язык, применимый почти везде — ваш выбор Python.
Хотите быть фулл-стеком, при этом зная один язык, — изучайте JavaScript.
Хотите настраивать высокопроизводительные сервисы и облачные вычисления — для вас есть три языка: C++ (один из самых сложных языков, но при этом в нём есть всё), Go/Golang (язык попроще чем C/C++ от Google), Rust (простой язык от Mozilla).
Если хотите заниматься искусственным интеллектом — там почти всё на python.
В анализе данных и BigData сейчас используют два языка: R и python — они немного похожи друг на друга. Так что изучив один — изучить другой будет несложно.
В GameDev сейчас две основных платформы: Unity на языке C# и Unreal Engine на языке C++. Также есть платформы, основанные на HTML5 или JavaScript, а также скриптовые языки Lua и UnrealScript —, но они, скорее, дополнение к основному языку.
Блокчейн-проекты пишутся в основном на C++, при этом часть сервисов использует Go/Golang, Java, JavaScript и python. Сервера для блокчейн пишутся на Erlang, а смарт-контракты — на Solidity.
С остальными IT-сферами я мало знаком, но, думаю, если вы захотите, то сможете найти по используемым в них языках самостоятельно.
Краткое содержание для тех, кому лень читать
Я смог найти себя в IT, использовав метод на стыке психологии и философии Икигай. Сначала составил карту своих интересов: получилось порядка 10 направлений. Затем, закрыв глаза, представил, что работаю в каждой сфере уже много лет — и записал свои ощущения в теле.
Интерпретация этих ощущений помогла мне сократить количество направлений до 3–4. После по каждому направлению я ответил на четыре вопроса: то ли это направление, которое я люблю; востребовано ли оно в мире, смогу ли я на этом деле заработать и умею ли я этим заниматься.
Оставив направление, в котором чаще был ответ «да», я понял, чем хочу заниматься, — и осознал, какой язык программирования учить.