Муки выбора в IT: как я несколько лет искал «идеальный» язык программирования

26

Этот текст написан в Сообществе, в нем сохранены авторский стиль и орфография

Всем привет! Меня зовут Артём, мне 20 лет, учусь на 2 курсе прикладной информатики. Хочу честно рассказать, как я несколько лет искал «идеальный» язык программирования и к чему это в итоге привело.

Вообще всё началось лет в 15. Я тогда пробовал делать игры на Unity и немного учил C#. Сделал пару мелких проектов для себя, но быстро остыл: в 15 лет интереснее пойти погулять с друзьями, чем сидеть за кодом. Тем не менее, базовая логика C# у меня в голове осталась.

Ближе к старшим классам я решил, что хочу уйти в Python-разработку. Начал его учить, но потом начитался в интернете про «бешеную конкуренцию среди джунов» и испугался. Сразу стал искать замену. Попались на глаза C++. Поучил их пару месяцев, пока в соцсетях не наткнулся на блогера, который уверенно заявил: «Джунов в C++ не существует». И всё, меня это снова сбило с толку.

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

В апреле мне исполнилось 20, и пришло четкое осознание: пора определяться. Я стал сканировать рынок и решил уйти в Java Backend. В итоге с апреля по август из Java я выучил только самые основы, которые и так помнил еще со времен C# — синтаксис-то у них похож. Все эти 4 месяца я толком не двигался вперед, потому что меня постоянно жрали сомнения: «А вдруг выбор неправильный? Вдруг уйдет куча времени?». Пока я сомневался, мог бы уже спокойно разбирать Spring. Время просто ушло, а я остался ни с чем.

В очередной раз я сидел и выбирал между чужими мнениями: На Python нереально найти работу. Java устарела. C# в России никому не нужен. На Golang берут только от уровня Middle.

В какой-то момент мне это надоело. Я решил никого не слушать и сам собрать статистику. Посмотрел рынок вакансий в РФ и понял, что C# более чем успешен и востребован.

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

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

Если вы сейчас тоже мечетесь и не можете определиться — просто поймите: идеального выбора не существует. На любом языке можно как быстро найти работу, так и искать её месяцами. Это зависит от вашей практики и упорства, а не от «правильности» стека.

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

P.S. Ну а если нужен вариант на 100% без рисков — это 1С )))

учеба
  • ВладиславХочу поправить, что Java не устарела, у них просто парадигма такая, что "явное лучше неявного", поэтому там код без синтаксического сахара, но как бы даёт прозрачное понятие как вся система работает. Например, на .Net при разработке REST сервиса пришешь для метода контроллера async и понимаешь только то, что этот метод обрабатывается асинхроно, но кем и как эта асинхронность реализована не видно. В случае Java у Spring есть анотация @Async т.е. понятно, что реализация лежит на плечах Spring и понятно куда копать в случае чего. Также у Java большое комьюнити, полно фреймворков: это только в России все зациклены на Spring, а в мире пользуют ещё и Quarkus, Mictonaut, Microprofile и для них полно всяких серверов и контейнеров сервлетов. В общем на Java полно выбора всяких платформ в сравнении с .Net, например, на .Net я не нашёл аналога CDI в Java. Но джависты тоже всем нужны опытные. Вообще в IT России сейчас все помешались на "единорогах" и работу не найти даже крутым специалистам, поэтому лучше уезжать.1
  • АнонимА сколько лет вам еще предстоит и дальше искать "идеальный" язык — страшно подумать! 🙈3
  • Игнат"мне 20 лет" дальше можно было не читать...5
  • NikudatorИз современных, мне Go прям зашел. Программирование не моя основная специальность, я сисадмин. А зашел, потому что в начале своей карьеры я писал бухгалтерские программы на FoxPro. 😁1
  • Дмитрий АнтоновВладислав, async - языковая конструкция, превращающая метод в статье машину. За то, как эта Стейт машина будет работать отвечает контекст - либо вызывающий код его явно устанавливает либо это дефолт контекс, основанный на тредпуле. CDI - как я понял из первой ссылки Гугла это di - для c# стандарт это ServiceCollection/ServiceProvider ну и разумеется куча других реализаций. Идеология явно/не явно - притянотво за уши. Тут знаю/не знаю. Например я Так же мне знаю как работает атрибут async в Java и из чтения кода это так же не видно. Атрибуты (а они есть и в c#) вообще идеологически - неявная реализация, так как от атрибута сложновато найти как где и кем он используется - хуже в этом плане только рефекшн и поиск по именам (методов, полей, классов и т п). Так что если сравнивать именно языки а не библиотеки - Джава явно остает, Котлин, насколько я понимаю, пытается догонять. А сравнивать инфраструктуру важно при выборе технологий для конкретного проекта, а не для выбора языка на долгосрочную перспективу.0
  • Алексей КузинЕщё можно начать с выбора сферы в которой хочется работать (бэкенд, фронт, мобилка и т.д.) и уже потом выбирать соотв. язык.3
  • Дмитрий СеменовНиколай, А я на DBase, FoxРro и Clipper Summer 87.1
  • Алексей МонастыренкоВот уж не думал, что сейчас снова актуален выбор языка, как 30 лет назад. Полагал, что все давно привыкли: смена языка – обычное дело, первый язык учится год, второй месяц, на пятом ты просто начинаешь писать, доучивая требуемое на ходу. А знать меньше пяти языков программисту практически нереально :-)3
  • Димитрий ГевальGo, python плюс нейросети и немножко php, вот и счастье, хе хе хе.. А если серьёзно, код это код, а умение его применить и архитектурные способности - куда важнее сейчас0
  • ВладиславДмитрий, IDE Idea позволяет ковыряться внутри реализации фреймворков т.к. библиотеки это те же jar и никто не мешает смотреть как внутри идёт работа с @Async. CDI это движок для работы с DI, который с помощью анотаций даёт возможность помечать объекты которые надо поместить в контейнер и инжектить бины куда угодно: поле, метод, конструктор. В SeviceCollection нужно всё добавлять вручную насколько помню. C# как язык мне больше нравится, но для работы с энтерпрайзом склоняюсь больше к Java т.к. фреймворки в этом плане там мощнее т.к. у .net я не помню анагов например Spring Data, а для устранения проблем языка есть Lombok.0
  • Алёна ЛисицинаСкоро вас ждут другие муки выбора: как найти первую работу, когда джуновскую и стажерскую работу уже полностью может выполнять ИИ. И вам предстоит выбрать между сантехником, электриком или плиточником.3
  • Михаил ГлебскийУ вас была база, я отучился на ИСТ (информационные системы и технологии) и поступал с физикой. После года учебы на плюсах выбрал питон, потому что у меня не было интернета, но был питон на ноутбуке. Вот три года работаю бэкендером, немного смотрю в сторону go1
  • Ксения ДолгановаАлексей, тоже натыкалась на статьи об известных людях, которые приходили в компанию, где использовался язык, который они не знали и учили примерно за месяц по ночам прямо в процессе разработки. Я думала, ничего себе, а что так можно)1
  • Герой нашего времениНазовите мне хотя бы ТОП-5 ИТ компаний в России, которые хорошо функционируют)0
  • O'BrienБольше похоже на "я не знал чего хотел и болтался как известно-что в проруби". Надо просто выбрать путь и двигаться по нему. Если подвернётся что-то более подходящее можно подумать, а вот "мне какой-то блогер сказал и я передумал" это как-то несерьёзно.0
  • ОлегМне 18 лет, учусь в ПТУ на слесаря. Сейчас я в муках поиска идеального для себя инструмента. Еще с 15 лет пробовал стучать молотком. Даже выстучал пару проектов, но не зашло. Попалась на глаза ножовка и сразу понял - не мое. Пробовал зубило, но трудно найти работу, начинающий зубилист никому не нужен. Сейчас перешел на напильники. Посмотрел рынок вакансий в РФ и понял, что напильники более чем успешны и востребованы. Но с напильниками тоже все не так просто. Душа лежит к бархатным, но блогеры советуют драчевые, ими уже пару месяцев и драчу. Но терзают сомнения: "А вдруг выбор неправильный? Вдруг уйдет куча времени?" Поделитесь своим опытом, чем вы дра... какой инструмент для себя выбрали?5
  • LanelesВладислав, не найти в C# DI... Это надо специально стараться0
  • LanelesВладислав, нет. В одном проекте/библиотеке/именной области запустил в ServiceCollection и все. Потом все что нужно в верхнем проекте/библиотеке соберётся. Что тут такого сложного?0
  • LanelesC#, точнее говоря весь фреймворк .Net, сегодня лучшее что есть для именно бакэнд разработки. А то многие не совсем знающие предсет читатели могут запутаться. Для разработки сайтов интерфейсов и все прочего, целесообразно выбирать другие языки. А так, да. .Net это самый быстрый кросплатформенный язык с самой развитой поддержкой. Это вызванно просто тем, что Майкрософт имеет достаточно возможностей тратить на него большие ресурсы, которые Оракл не может себе позволить. Оттого Джава и плетется все время в хвосте, судорожно внедряя решения которые Майкрософт применил на несколько лет раньше1
  • ВладиславLaneles, так в джаве ещё проще, в нужном месте инжектишь интерфейс, а фрейворк сам ищет реализацию.0
  • ВладиславОлег, напильник правильный выбор, им можно дорабатывать любые проекты0
  • LanelesВладислав, йеп, поэтому Джава такая медленная в сравнении с .Net, сквайр0
  • ВладиславLaneles, GraalVM + Quarkus дают сопоставимую с .Net производительность0
  • LanelesВладислав, я не знаю, что это такое, к своему стыду. Скажу, что в .Net не нужно уходить в эти вбоковые истории и ставить, настраивать что-то ещё. Он просто быстрее Джавы сам по себе. И независимые тестирования и эксперты это подтверждают0
  • ВладиславLaneles, Quarkus это по сути сервер приложений для Java, а GraalVM его JVM. Это примерно тоже самое и поставить .Net Языки сами по себе не работают в вакууме и сравнение .net и quarkus показывают примерно паритет.0
  • Андрей СорокинСовет автору: начинать надо с базы, с изучения архитектуры компьютера, устройства компьютерных сетей, потом посмотреть assembler (познакомиться), язык C, следом C++, а потом уже что-то высокоуровневое: java или C#. Не надо метаться выбирая супер язык, это пустая трата времени. Языков множество, под разные задачи. Важнее всего база. В настоящее время доступно огромное количество ресурсов: это и благо, и проклятие - слишком много информационного шума.0
Вот что еще мы писали по этой теме
Сообщество
Ксения Лобанова
Ксения Лобанова
Мой рисунок: море маслом