Я в 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 — это лучший выбор.
Если любите работать с инфраструктурой от Microsoft — то ваш выбор C#.
Если вы хотите быстро делать бизнес-фичи в стартапе — тут ваш выбор язык Ruby.
Если хотите работать в банках и других корпорациях — начните изучать Java.
Если хотите универсальный язык, применимый почти везде — ваш выбор Python или JavaScript, или если вы не боитесь сложностей - С++.
Хотите быть фулл-стеком, при этом зная один язык, — изучайте 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. После по каждому направлению я ответил на четыре вопроса: то ли это направление, которое я люблю; востребовано ли оно в мире, смогу ли я на этом деле заработать и умею ли я этим заниматься.
Оставив направление, в котором чаще был ответ «да», я понял, чем хочу заниматься, — и осознал, какой язык программирования учить.
Комментарии (67)
Tahallus
09.01.2023 17:12+20Rust (простой язык от Mozilla)
Вот это поворот
Lavs Автор
09.01.2023 17:19Благодарю за комментарий. Не программировал на Rust. Убрал слово "простой"
0xd34df00d
09.01.2023 17:50+4Но он ведь действительно простой, особенно на фоне других языков для той же ниши.
speshuric
10.01.2023 02:26+3А кто в той же нише? Даже так: а как можно сформулировать именно нишу rust? Просто куда ни ткни, rust имеет слишком много особенностей при сравнении с другими языками той же ниши (по крайней мере если отбросить маргинальную экзотику). Где-то эти особенности "в минус", где-то "в плюс".
Ну вот как язык уровня ОС он "конкурирует" с C. С явно проще как язык (это не значит, что проще писать). Но rust в обмен на свою дополнительную сложность даёт свои преимущества.
Как язык для простых сервисов бэк-энда он может конкурировать с Go. Go в целом проще. Но в Go больше runtime и сборка мусора - что немного разделяет ниши.
А в сложном бэкенде, где обитают jvm (Java, Kotlin), dotnet core (C#), Rust вроде особо конкурентом и не числится (пока?). Как, впрочем, сложно себе представить rust и в нишах PHP или Ruby. Ну и точно rust не про конкуренцию с Python по нише. Да и с JS/TS ниша не совпадает.
С++ точно сложнее. Rust может и рад бы поконкурировать, но при всей вкусности Rust, ему до конкуренции за всю нишу C++ еще как до луны пешком.В итоге, как мне кажется, сейчас ниша rust - это либо более-менее прямая конкуренция с C и Go, либо компилируемый костыль производительности для разных толстяков (больше Python, JS, меньше Java, Kotlin, C#). Причём тут слово "костыль" не ругательное: просто на Rust можно подпереть какое-то локальное узкое место - но фактически это та же "безопасная замена C", даже ABI сишный придётся использовать.
0xd34df00d
10.01.2023 02:45+1А кто в той же нише? Даже так: а как можно сформулировать именно нишу rust?
Легко достижимые близость к железу и отсутствие оверхеда от рантайма, вместе с достаточно прогнозируемой производительностью. Соответственно, конкуренты — по факту C да C++.
Я, конечно, напрочь испорчен, но не согласен с прочими нишами, особенно если игнорировать простоту (потому что мы максимизируем простоту при прочих равных).
Как язык для простых сервисов бэк-энда он может конкурировать с Go. Go в целом проще.
Простые сервисы любо-дорого писать на хаскеле. Бойлерплейт убирать в реюзабельные библиотеки для этого — вообще одно удовольствие.
А в сложном бэкенде, где обитают jvm (Java, Kotlin), dotnet core (C#)
Сложный бекенд тем более лучше писать на хаскеле.
Как, впрочем, сложно себе представить rust и в нишах PHP или Ruby. Ну и точно rust не про конкуренцию с Python по нише.
Я не очень представляю, чем живут PHP/Ruby/Python-вне-датасайенса, поэтому тут ничего не могу сказать.
Rust может и рад бы поконкурировать, но при всей вкусности Rust, ему до конкуренции за всю нишу C++ еще как до луны пешком.
Почему? Я именно её и имел в виду.
speshuric
10.01.2023 03:43+4не по порядку
Почему? Я именно её и имел в виду.
Потому что вся ниша C++ это огромный багаж существующего нагромождения кода. Либо учиться жить вместе и вытеснять помаленьку (так с C происходит), либо "переписать всё сразу" (что не кажется реальным). И тут становится непросто. Вот пример - попробуйте написать UI приложение под KDE и Qt. Проблема в том, что Qt сильно "засиплюсслюсенный" фреймворк и, хотя определённые продвижения в этой интеграции есть, но, чеснослово, до стадии "готово" там еще далеко-далеко.
Простые сервисы любо-дорого писать на хаскеле. Бойлерплейт убирать в реюзабельные библиотеки для этого — вообще одно удовольствие.
Я не смогу сравнить Rust с хаскелем. Уж слишком они разные. Как вы правильно заметили, Rust про тонкий слой до кишков и скорее про прогнозируемое исполнение. Функциональщины в нём почти нет (а та, что есть - не идиоматичная). С Go похожая история - он максимально "линеен" и императивен, рантайм относительно компактный и более-менее прозрачный по IO, а сборка мусора задумывалась, как предсказуемая.
Тут я, наверное, неточно выразился, я не имел в виду "простые сервисы" в смысле "сервисы из сотни строк", а скорее "примитивные с точки зрения бизнес-домена". Например, MinIO (написан на Go) ни фига не маленький и не простой, но с точки зрения предметной модели бизнеса он примитивная хранилка блобов.Сложный бекенд тем более лучше писать на хаскеле.
Хаскель во многом прекрасен, но в этой части ни фига не мейнстримен.
Python-вне-датасайенса
Python в DS оказался отчасти случайно. Сам-то язык медленный (плюс-минус как 1C и VBA), но благодаря низкому порогу входа и нескольким хорошо написанным внешним библиотекам стал использоваться у "не совсем труъ программистов", т.е., например DS.
zeblong
09.01.2023 17:27+4у меня видимо проблемы с сарказмом - я же верно понял что это юмористический текст?
Markscheider
09.01.2023 17:39Закрыть глаза (или не закрывать, если так удобнее). Представить, что я уже давно работаю по этому направлению и достиг в нём всего, что хотел. Подумать об этом минимум минуту-две и обратить внимания на ощущения в теле, запоминая их.
Сразу возникла мысль - а описанным методом можно выбирать из всех своих пассий ту, с которой завязать серьезные длительные отношения?
Сначала сходил на расстановки по Хеллингеру, но на них лишь определилось, что у меня появится девушка.
Появилась? А то мы волнуемся :)
urticazoku1
09.01.2023 18:01+10Икигай говорите?
Hidden text
Lavs Автор
09.01.2023 18:12Если что, такое представление называется Круги Эйлера или Диаграмма Венна
https://ru.wikipedia.org/wiki/Диаграмма_Венна
А если не душнить - то сейчас моя жизнь похожа именно на эту скрытую диаграмму, но не будем о грустном... Закрою дедлайны и жизнь снова наладится :)
starik-2005
09.01.2023 18:02+1Хорошая статья, полезная, интересная, оригинальная... 26к - дешево отделался )))
stumyp
09.01.2023 18:36По поводу кроссплатформенности и Rust: вы не поверите, но на Rust можно писать ядро под кучу платформ и дополнять оформление нативными тулкитами.
Lavs Автор
09.01.2023 18:53+1Так кроссплатформенность на многих языках существует. Например на Kotlin помимо мобилки под Android - пишут мобилку под iOS, сервера (вместо Java), средства автоматизации (вместо Gradle). Но этих применений гораздо меньше, чем основного применения языка. Я писал именно про основные направления в каждом языке.
johnfound
09.01.2023 19:04+7Здесь прочитали как поступает гуманитарий, которому очень хочется в ИТ, ибо сытно.
Не критикую, нет, но человек с рациональным инженерном мышлением так никогда не поступил бы...
Lavs Автор
09.01.2023 19:36А как на счёт интегрированного типа мышления? (когда задействованы сразу оба полушария) Сейчас даже специально тест прошёл для выяснения типа моего мышления. Да, у меня чуть больше развито правополушарное мышление, но при этом моё первое образование - математик.
У человека с рациональным левополушарным мышлением скорее всего не возникло бы вопросов с выбором направления и языка. Соответственно и моя статья такому человеку не нужна.
biokin
09.01.2023 20:00+5Зарабатывать можно множеством способов. Задача -- договориться с иррациональной частью личности, чтобы сей процесс радовал, а не истощал в долгосрочной перспективе.
un1t
09.01.2023 21:27+3А как бы поступил человек с рациональным инженерном мышлением?
johnfound
09.01.2023 23:51-1Он вообще не задумывался бы над такими вопросами, а делал бы то что ему интересно. А когда уже не интересно, начинал бы заниматься чем то другим.
minzhi
10.01.2023 10:03+2Судя по этому комментарию, вы путаете "рациональное инженерное мышление" с расстройством аутистического спектра. Рациональность - это, как минимум, когда учитывается оплата труда, шансы найти работу, и подразумевается способность выполнять рутинную и неинтересную работу, когда это необходимо.
johnfound
10.01.2023 15:19-3Дело в том, что деньги это вторично – если человек делает то что ему нравится, то деньги придут. В итоге, человек будет работать то что эму нравится и одновременно будет получать много денег.
А если человек работает чтобы заработать много денег, то он да, заработает. Но будет работать то что ему не нравится.
И вот сейчас приходим к варианту, когда гуманитарий хочет в инженерную специальность чтобы зарабатывать хорошо, но одновременно с этим, хочет чтобы работа была хотя бы не в тягость.
И тогда на сцену выходят психологи, коучи и прочие гадалки-экстрасенсы, чтобы внушить гуманитарию что работа ему нравится. И таки внушают, ибо гуманитарий по своей сути человек легко внушаемым.
В этом, конечно нет ничего плохого. Работа должна быть в радость. Тем или иным путем.
Lavs Автор
10.01.2023 15:24+1Это как раз и есть икигай - там именно про это. Что деньги это одно, что нравится - это другое, нужно людям - это третье, что знаешь - это четвёртое. И только если всё это сходится в одном - то это идеально.
danSamara
12.01.2023 04:52Это ни разу ни так. Делать что нравится не значит "зарабатывать много денег".
Говорю это как человек, долгое время работавший в своё удовольствие. Но, внезапно, перестало хватать денег даже на еду и о них пришлось задуматься. И нет, я не устроился на душную, но высокооплачиваемую работу, а продолжил заниматься любимым делом, но деньги появились, когда они стали дополнительной целью и коэффициентом в расстановке приоритетов.
johnfound
12.01.2023 11:43Ну вы только-что доказали то о чем я и писал. А то что вы занимались любимым делом не задумываясь о деньгах – это ваша ошибка. Вообще, деньги надо брать за работу на других. Не брать деньги, только потому что вам приятно это работать, это конечно перебор. Но ставить деньги в центр вашей жизни, это перебор намного хуже.
andreyds95
09.01.2023 19:36+1А разве не DS занимаются ИИ? Просто я сам Data Scientist, мы стараемся избегать громкого выражения «искусственный интеллект», но я не знаю никакой другой профессии, которая была бы ближе к теме ????
Lavs Автор
09.01.2023 19:53+1Большая путаница в этих понятиях из-за того, что разные люди по-разному понимают понятия "Data Science" и "Исскуственый интеллект". Согласен, что они очень близки, а в некоторых задачах это может быть вообще одно и тоже.
Для меня Data Science - это в первую очередь анализ и обработка больших объемов существующей информации (обычно текстовой), при этом для обработки и анализа может использоваться ИИ.
https://ru.wikipedia.org/wiki/Наука_о_данных
Исскуственый интеллект - для меня это больше алгоритмы и методы, которые могут выполнять творческие функции и часто работают мультимедиа-данными
https://ru.wikipedia.org/wiki/Искусственный_интеллектКстати, неплохая картинка про Data Science и AI:
Fen1kz
09.01.2023 20:31+9Я правильно понял что ответ на вопрос в заголовке это по сути "у меня чот побурлило в животе и поэтому я пошел в мобильную разработку"?
Lavs Автор
09.01.2023 21:01Не совсем, "мне комфортно сидеть в кресле, расслабился, пальцы хотят что-то печатать - потому пошёл в мобильную разработку" )))
А если серьёзно я тут описал лишь вершину айсберга и то, что лично мне помогло буквально за пару месяцев найти своё призвание. У многих на поиск своего призвания уходят годы, а многие на столько боятся что-либо менять, что годами ходят на нелюбимую работу. Я тоже 10 лет работал в 1С и ходил на нелюбимую работу. Пока не решил что-то поменять в своей жизни - попав сначала в Сбер, а потом в мобильную разработку.Fen1kz
09.01.2023 22:25+4А если серьёзно, то вот момент вашего выбора:
Мы с ним много общались, я отвечал на вопросы бизнес-коуча, он предлагал мне варианты, как на каждом направлении можно заработать. В итоге после общения с ним совместно решили, что мне надо идти в мобильную разработку — там будет интересная для меня работа и буду получать хорошие деньги.
Вся муть про икигай и прочее потом - это вода.
Про психолога просто какой-то бред, лучше бы гороскоп составили или на гуще погадали.
Я разочарован, потому что зашел в статью чтобы посмотреть как же другие выбирают языки. А оказалось что сам момент выбора языка программирования не расписан от слова совсем, а скрыт за тем самым paywall в 15к.
Таким образом для меня статья не является рабочим кейсом (которым она была бы, если бы вы расписали что именно спрашивал коуч и прочее), а просто водой и вариацией на тему "тут мне джун втирает что если писать бек заграницей, то пыха самая популярная"
acsent1
10.01.2023 13:05+2Можно еще было использовать метод чайного пакетика.
1. Пишутся варианты по кругу
2. Берется пакетик на длинной ниточке и держится над кругом
3. В какую сторону пакетик отклонится (а он рано или поздно отклонится) - тот вариант и выбиратьLavs Автор
10.01.2023 15:16+3Есть ещё метод монетки:
1. Загадываешь на каждую сторону монетки что-нибудь (например подходит мне это направление или нет)
2. Подкидываешь монетку и понимаешь что из загаданного выпало.
3. Если радуешься или нет эмоций - то так тому и быть.
4. Если опечален или напрягся - то нужно поступить наоборот.
optimizator
09.01.2023 21:09+7Какой-то пост для тех, кто умеет чувствовать измененияв своём теле, расходимся
un1t
09.01.2023 21:35+1Очень странные направления, как это вы противопоставляете бэк, фронт и стартап? Т.е. в стартапах нет ни бэка, ни фронта и мобилок не бывает?
Стартапы тоже разные бывают бывают где 1000 человек а бывает где 2. И темпы работы могут быть разные, в стартапах тоже не всегда все работают по 80 часов в неделю, бывает и расслабленно работают.
То что вы сами себе напредставляли не обязательно имеет отношение к реальной жизни, так что не совсем понятно насколько данный выбор лучше чем любой другой.
Lavs Автор
10.01.2023 14:34+1Под стартапом подразумевал - быть владельцем стартапа, и там уж точно не до кода, т.к. нужно разруливать вопросы с инвестициями, маркетингом и прочим. А стартапу я противопоставляю работу в найме фронтендером или бекендером - где пишешь код и не паришься об организационных вещах.
Про то, что стартапы бывают разные согласен. Пробовал в одно стартап запускать, пробовал командой из 4х человек. Про темпы работы согласен - обычно это от мотивации команды зависит.
И я описал свой опыт. И несколько раз в статье подчеркнул, что у других может быть по-другому.
Maxmyd
09.01.2023 22:07+2Если любите работать с Windows и инфраструктурой от Microsoft — то ваш выбор C#
Вы точно эту статью недавно писали?
Lavs Автор
10.01.2023 14:40Да, я в курсе, что C# давно используется на linux/unix-системах и код вполне может писаться на macOS. Тут имелось ввиду, что для бекенда на C# есть развитая инфраструктура от Microsoft. Пользоваться ей или нет - выбор за C#-разрабом и компании в которой он работает.
А про Windows - удалю, чтобы не путать. Но кому, то кто кроме Windows не видел других ОС будет проще начать именно с C#.
Shatun
09.01.2023 22:29+2Мое видение, по популярности/используемости
Бэкенд — это, наверное, одна из немногих сфер, где сейчас популярно несколько языков
В среднем больше всего java, также широко используется С#, nodeJS для BFF/интеграций, go активно занимает нишу, PHP потихоньку умирает но все еще очень популярен.
Если любите работать с Windows и инфраструктурой от Microsoft — то ваш выбор C#.
Очень широко но прямо сложно назвать C# доминирующим. Приложения-чаще electron(js/ts), потом .net, дальше с отрывом java и С++ с qt, скрипты - ps/python или кто во что горазд.
Если вы хотите быстро делать бизнес-фичи в стартапе — тут ваш выбор язык Ruby.
Не самый большой эксперт, но для меня ruby стал очень нишевым и не очень уже популярен. Давно невидел старта новых проектов на нем. Также во всех рейтингах популярности значительно упал.
Если хотите работать в банках и других корпорациях — начните изучать Java.
Тут прямо JAVA рулит и бибикает в плане бэка. Также С#, раньше скала. А если в целом то тот же python актуален(аналитика), js для фронта и т.д.
Если хотите универсальный язык, применимый почти везде — ваш выбор Python.
Хз, сейчас в разных сферах сложно назвать один язык что был везде. Под мобилки на python не пишут(массово), десктоп относительно непопулярен, фронт-только JS, какие-нибудь БД - С, C++, Java, go, rust. По мне наиболее "широкие" языки java, js, python, мб С++
Хотите быть фулл-стеком, при этом зная один язык, — изучайте JavaScript.
Только если как фулстэк понимать типичный CRUD back + fronend, иначе см выше
Хотите настраивать высокопроизводительные сервисы и облачные вычисления — для вас есть три языка: C++ (один из самых сложных языков, но при этом в нём есть всё), Go/Golang (язык попроще чем C/C++ от Google), Rust (язык от Mozilla).
Я бы добавил java в этот список. Примеры-hadoop, spark, dynamodb, cassandra
Если хотите заниматься искусственным интеллектом — там почти всё на Python.
Согласен
Lavs Автор
10.01.2023 15:00Про бекенд согласен.
Про Windows - имел ввиду не написание приложений под Windows, а ведение разработки на Windows. Про написание приложений под Windows согласен. Наверно подправлю этот пункт, т.к. похоже многие меня не так поняли.
Я Ruby трогал несколько лет назад, да возможно сейчас он уже не так популярен.
Про банки имелся ввиду именно корпоративный бекенд. Понятное дело, что по другим направлениям популярно другое.
Про python - соглашусь, что он не полностью универсальный, но используется во многих областях. По универсальности да, пожалуй JS его догнал. Java - не такой универсальный, более того постепенно его вытесняет Kotlin (в мобилке уже вытеснил, на бекенде некоторые проекты тоже переходят на него). C++ - да, он универсальный, но он слишком сложен для начинающих - я бы выделил его в отдельную категорию. В общем подумаю и наверно подредактирую этот пункт в статье.
Про фуллстек - а что бывают другие фуллстеки? Сейчас специально загруглил и первое, что вывелось: "Full-stack разработчик (произносится “фулл стек”) — это некий мастер на все руки в мире веб-разработки. Ему под силу реализовать как клиентскую, так и серверную сторону приложения, которыми, обычно, занимаются FrontEnd и BackEnd разработчики раздельно друг от друга."
Про Java - я уже писал выше про банковский/корпоративный сектор. Вряд ли hadoop, spark, dynamodb, cassandra - используются где-то помимо банков и корпораций.
Внёс небольшие корректировки в текст статьи.
JekaMas
10.01.2023 07:18+1Есть ещё такое понятие "garbage in - garbage out": если у вас исходные данные с ошибками, то и выводы будут соответствующего качества.
"Блокчейн-проекты пишутся в основном на C++, при этом часть сервисов использует Go/Golang, Java, JavaScript и python. Сервера для блокчейн пишутся на Erlang"
Нет, c++ мало ичпользуется. Erlang тоже. 90% рынка покрывают rust с golang. Ключевое слово "рынка", а вы гуглили "на чем пишут биткоин".
Keeper9
10.01.2023 10:38+190% рынка покрывают rust с golang
Вы сами проводили такое исследование рынка?
Lavs Автор
10.01.2023 15:05У меня несколько знакомых работают на блокчейн-проектах и все они пишут на C++
Кроме того я погуглил и на нескольких сайтах примерно одинаковая информация, которую я скомпоновал и написал в статье. Да, возможно за последние несколько лет ситуация изменилась, а те сайты на которых я смотрел - были старыми.
Да, сейчас многие проекты переходят с C++ на Rusn/Golang, но про них я выше писал
Mimizavr
10.01.2023 10:14+1Просто выбирать язык бесполезно — нужно искать направление
Кстати, интересный момент, что определившись с направлением, можно "заходить в ИТ" в 2 этапа. Сначала войти в нужное направление, а затем уже в нем перейти в разработку.
И по выбору направлений: чтобы так отследить свои ощущения, нужно самому отлично понимать все варианты выбора и сначала очень хорошо в них самому разобраться - а это не очень тривиальная задачка.Lavs Автор
10.01.2023 15:11Про 2 этапа - согласен. Есть знакомые, которые заходили в IT через работу аналитиком в соответствующей сфере.
Про ощущения - интересное замечание. Не задумывался об этом. Да, наверно сначала нужно много почитать про каждое направление, посмотреть видео и т.д. - чтобы иметь минимальное представление о том, чем там занимаются. Да и не все умеют отслеживать ощущения в теле. Так что этот метод явно не для всех подходит.
Хотелось поделиться не стандартными методами, которые мне помогли.
polygaloff
11.01.2023 09:17Спасибо за статью, но всё-таки не понял на каком языке для мобильной разработки сейчас пишите?
Lavs Автор
11.01.2023 18:03Сейчас пишу на Swift, Java и Kotlin.
Последнее время больше Java, т.к. делаю банковское приложение под Android.polygaloff
11.01.2023 21:23Интересно Ваше мнение про Flutter!
Lavs Автор
12.01.2023 16:00Мне Flutter очень понравился. Он позволяет просто разбивать всё на компоненты (хотя SwiftUI и Kotlin Compose тоже умеют это делать) и при разработке под 2 платформы позволяет экономить время на разработке. А то, что появилась поддержка разработки под Windows (и возможно появится разработка приложений под другие ОС) - вообще может сделать лучшим кросплатформенным фреймворком.
У Flutter пока вижу 4 минуса:
- дополнительные танцы с бубном при сборке приложений под iOS (но это ожидаемо, из-за политики Apple)
- новые фичи iOS/Android далеко не сразу заезжают на Flutter, и если нужно что-то специфическое, то придётся поизвращаться или вообще делать нативным
- заказчиков, готовых к Flutter пока не много и обычно они платят меньше, чем за нативные приложения
- для разработки под Flutter нужно учить новый язык Dart
Vanirn
11.01.2023 11:46Большинство сайтов во всём мире написаны на php, так что если хочется писать бэкенд для сайтов за границей, то php — это лучший выбор.
Я бы добавил "...написаны на php и WordPress, так что если хочется писать
бэкендWordPress странички для сайтов за границей...", и писать нужно будет именно WordPress, а не бекенд в стиле Java/C#.Lavs Автор
11.01.2023 18:13Кроме WordPress ещё полно других CMS (например Joomla или Drupal) и ещё больше самописных бекендов. Кроме того несколько лет назад появились такие фреймворки как Laravel, Simphony, Yii и другие - с ними уже бекенд-разработка ближе к Java/C#, да и начиная с PHP 7.0 - он стал вполне рабочим языком, а не только "Personal Home Page"
Vanirn
12.01.2023 12:11Я же не говорю какой PHP плохой/хорошой, (не)пригодный для более интересный web сервисов. Я про распространнёность решений на базе PHP.
В любом случае, большинство сайтов написанных на PHP в мире это WordPress, причём настолько сильно больше чем других CMS и фремворков, что всё остальное просто меркнет с обилием WordPress сайтов.
PS: по статистике Wappalyzer.Lavs Автор
12.01.2023 16:01Возможно, я не смотрел статистику. Я когда-то сам просмотривал зарубежные сайты с вакансиями - там было много php
Keeper9
Идите лучше в психологи.
Lavs Автор
Это следующий этап, когда IT надоест)))